]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@126 d0543943-73ff-0310...
authorMichael Jerris <mike@jerris.com>
Tue, 13 Dec 2005 18:38:14 +0000 (18:38 +0000)
committerMichael Jerris <mike@jerris.com>
Tue, 13 Dec 2005 18:38:14 +0000 (18:38 +0000)
114 files changed:
libs/codecs/gsm/COPYRIGHT [deleted file]
libs/codecs/gsm/Makefile [deleted file]
libs/codecs/gsm/README [deleted file]
libs/codecs/gsm/inc/config.h [deleted file]
libs/codecs/gsm/inc/gsm.h [deleted file]
libs/codecs/gsm/inc/private.h [deleted file]
libs/codecs/gsm/inc/proto.h [deleted file]
libs/codecs/gsm/inc/unproto.h [deleted file]
libs/codecs/gsm/src/add.c [deleted file]
libs/codecs/gsm/src/code.c [deleted file]
libs/codecs/gsm/src/debug.c [deleted file]
libs/codecs/gsm/src/decode.c [deleted file]
libs/codecs/gsm/src/gsm_create.c [deleted file]
libs/codecs/gsm/src/gsm_decode.c [deleted file]
libs/codecs/gsm/src/gsm_destroy.c [deleted file]
libs/codecs/gsm/src/gsm_encode.c [deleted file]
libs/codecs/gsm/src/gsm_explode.c [deleted file]
libs/codecs/gsm/src/gsm_implode.c [deleted file]
libs/codecs/gsm/src/gsm_option.c [deleted file]
libs/codecs/gsm/src/gsm_print.c [deleted file]
libs/codecs/gsm/src/k6opt.h [deleted file]
libs/codecs/gsm/src/k6opt.s [deleted file]
libs/codecs/gsm/src/long_term.c [deleted file]
libs/codecs/gsm/src/lpc.c [deleted file]
libs/codecs/gsm/src/preprocess.c [deleted file]
libs/codecs/gsm/src/rpe.c [deleted file]
libs/codecs/gsm/src/short_term.c [deleted file]
libs/codecs/gsm/src/table.c [deleted file]
libs/codecs/ilbc/FrameClassify.c [deleted file]
libs/codecs/ilbc/FrameClassify.h [deleted file]
libs/codecs/ilbc/LPCdecode.c [deleted file]
libs/codecs/ilbc/LPCdecode.h [deleted file]
libs/codecs/ilbc/LPCencode.c [deleted file]
libs/codecs/ilbc/LPCencode.h [deleted file]
libs/codecs/ilbc/Makefile [deleted file]
libs/codecs/ilbc/StateConstructW.c [deleted file]
libs/codecs/ilbc/StateConstructW.h [deleted file]
libs/codecs/ilbc/StateSearchW.c [deleted file]
libs/codecs/ilbc/StateSearchW.h [deleted file]
libs/codecs/ilbc/anaFilter.c [deleted file]
libs/codecs/ilbc/anaFilter.h [deleted file]
libs/codecs/ilbc/constants.c [deleted file]
libs/codecs/ilbc/constants.h [deleted file]
libs/codecs/ilbc/createCB.c [deleted file]
libs/codecs/ilbc/createCB.h [deleted file]
libs/codecs/ilbc/doCPLC.c [deleted file]
libs/codecs/ilbc/doCPLC.h [deleted file]
libs/codecs/ilbc/enhancer.c [deleted file]
libs/codecs/ilbc/enhancer.h [deleted file]
libs/codecs/ilbc/filter.c [deleted file]
libs/codecs/ilbc/filter.h [deleted file]
libs/codecs/ilbc/gainquant.c [deleted file]
libs/codecs/ilbc/gainquant.h [deleted file]
libs/codecs/ilbc/getCBvec.c [deleted file]
libs/codecs/ilbc/getCBvec.h [deleted file]
libs/codecs/ilbc/helpfun.c [deleted file]
libs/codecs/ilbc/helpfun.h [deleted file]
libs/codecs/ilbc/hpInput.c [deleted file]
libs/codecs/ilbc/hpInput.h [deleted file]
libs/codecs/ilbc/hpOutput.c [deleted file]
libs/codecs/ilbc/hpOutput.h [deleted file]
libs/codecs/ilbc/iCBConstruct.c [deleted file]
libs/codecs/ilbc/iCBConstruct.h [deleted file]
libs/codecs/ilbc/iCBSearch.c [deleted file]
libs/codecs/ilbc/iCBSearch.h [deleted file]
libs/codecs/ilbc/iLBC_decode.c [deleted file]
libs/codecs/ilbc/iLBC_decode.h [deleted file]
libs/codecs/ilbc/iLBC_define.h [deleted file]
libs/codecs/ilbc/iLBC_encode.c [deleted file]
libs/codecs/ilbc/iLBC_encode.h [deleted file]
libs/codecs/ilbc/lsf.c [deleted file]
libs/codecs/ilbc/lsf.h [deleted file]
libs/codecs/ilbc/packing.c [deleted file]
libs/codecs/ilbc/packing.h [deleted file]
libs/codecs/ilbc/syntFilter.c [deleted file]
libs/codecs/ilbc/syntFilter.h [deleted file]
libs/codecs/lpc10/Makefile [deleted file]
libs/codecs/lpc10/README [deleted file]
libs/codecs/lpc10/analys.c [deleted file]
libs/codecs/lpc10/bsynz.c [deleted file]
libs/codecs/lpc10/chanwr.c [deleted file]
libs/codecs/lpc10/dcbias.c [deleted file]
libs/codecs/lpc10/decode.c [deleted file]
libs/codecs/lpc10/deemp.c [deleted file]
libs/codecs/lpc10/difmag.c [deleted file]
libs/codecs/lpc10/dyptrk.c [deleted file]
libs/codecs/lpc10/encode.c [deleted file]
libs/codecs/lpc10/energy.c [deleted file]
libs/codecs/lpc10/f2c.h [deleted file]
libs/codecs/lpc10/f2clib.c [deleted file]
libs/codecs/lpc10/ham84.c [deleted file]
libs/codecs/lpc10/hp100.c [deleted file]
libs/codecs/lpc10/invert.c [deleted file]
libs/codecs/lpc10/irc2pc.c [deleted file]
libs/codecs/lpc10/ivfilt.c [deleted file]
libs/codecs/lpc10/lpc10.h [deleted file]
libs/codecs/lpc10/lpcdec.c [deleted file]
libs/codecs/lpc10/lpcenc.c [deleted file]
libs/codecs/lpc10/lpcini.c [deleted file]
libs/codecs/lpc10/lpfilt.c [deleted file]
libs/codecs/lpc10/median.c [deleted file]
libs/codecs/lpc10/mload.c [deleted file]
libs/codecs/lpc10/onset.c [deleted file]
libs/codecs/lpc10/pitsyn.c [deleted file]
libs/codecs/lpc10/placea.c [deleted file]
libs/codecs/lpc10/placev.c [deleted file]
libs/codecs/lpc10/preemp.c [deleted file]
libs/codecs/lpc10/prepro.c [deleted file]
libs/codecs/lpc10/random.c [deleted file]
libs/codecs/lpc10/rcchk.c [deleted file]
libs/codecs/lpc10/synths.c [deleted file]
libs/codecs/lpc10/tbdm.c [deleted file]
libs/codecs/lpc10/voicin.c [deleted file]
libs/codecs/lpc10/vparms.c [deleted file]

diff --git a/libs/codecs/gsm/COPYRIGHT b/libs/codecs/gsm/COPYRIGHT
deleted file mode 100644 (file)
index 504978b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann,\r
-Technische Universitaet Berlin\r
-\r
-Any use of this software is permitted provided that this notice is not\r
-removed and that neither the authors nor the Technische Universitaet Berlin\r
-are deemed to have made any representations as to the suitability of this\r
-software for any purpose nor are held responsible for any defects of\r
-this software.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
-\r
-As a matter of courtesy, the authors request to be informed about uses\r
-this software has found, about bugs in this software, and about any\r
-improvements that may be of general interest.\r
-\r
-Berlin, 28.11.1994\r
-Jutta Degener\r
-Carsten Bormann\r
diff --git a/libs/codecs/gsm/Makefile b/libs/codecs/gsm/Makefile
deleted file mode 100644 (file)
index 4628464..0000000
+++ /dev/null
@@ -1,583 +0,0 @@
-# Copyright 1992-1996 by Jutta Degener and Carsten Bormann, Technische\r
-# Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
-# details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
-\r
-# Machine- or installation dependent flags you should configure to port\r
-\r
-SASR   = -DSASR\r
-######### Define SASR if >> is a signed arithmetic shift (-1 >> 1 == -1)\r
-\r
-#MULHACK = -DUSE_FLOAT_MUL\r
-######### Define this if your host multiplies floats faster than integers,\r
-######### e.g. on a SPARCstation.\r
-\r
-#FAST  = -DFAST\r
-######### Define together with USE_FLOAT_MUL to enable the GSM library's\r
-######### approximation option for incorrect, but good-enough results.\r
-\r
-# LTP_CUT      = -DLTP_CUT\r
-LTP_CUT        =\r
-######### Define to enable the GSM library's long-term correlation \r
-######### approximation option---faster, but worse; works for\r
-######### both integer and floating point multiplications.\r
-######### This flag is still in the experimental stage.\r
-\r
-WAV49  = -DWAV49\r
-#WAV49 =\r
-######### Define to enable the GSM library's option to pack GSM frames \r
-######### in the style used by the WAV #49 format.  If you want to write\r
-######### a tool that produces .WAV files which contain GSM-encoded data,\r
-######### define this, and read about the GSM_OPT_WAV49 option in the\r
-######### manual page on gsm_option(3).\r
-\r
-#K6OPT = -DK6OPT\r
-#K6OPT =\r
-######### Define to enable MMXTM optimizations for x86 architecture CPU's\r
-######### which support MMX instructions.  This should be newer pentiums,\r
-######### ppro's, etc, as well as the AMD K6 and K7.  The compile will\r
-######### probably require gcc. \r
-\r
-ifneq (${OSARCH},Darwin)\r
-ifneq (${OSARCH},SunOS)\r
-ifneq (${PROC},x86_64)\r
-ifneq (${PROC},ultrasparc)\r
-ifneq ($(shell uname -m),ppc)\r
-ifneq ($(shell uname -m),ppc64)\r
-ifneq ($(shell uname -m),alpha)\r
-ifneq ($(shell uname -m),armv4l)\r
-ifneq (${PROC},sparc64)\r
-ifneq (${PROC},arm)\r
-ifneq (${PROC},ppc)\r
-ifneq (${PROC},ppc64)\r
-OPTIMIZE+=-march=$(PROC)\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-\r
-#The problem with sparc is the best stuff is in newer versions of gcc (post 3.0) only.\r
-#This works for even old (2.96) versions of gcc and provides a small boost either way.\r
-#A ultrasparc cpu is really v9 but the stock debian stable 3.0 gcc doesn't support it.\r
-#So we go lowest common available by gcc and go a step down, still a step up from\r
-#the default as we now have a better instruction set to work with. - Belgarath\r
-ifeq (${PROC},ultrasparc)\r
-OPTIMIZE+=-mcpu=v8 -mtune=$(PROC) -O3 \r
-endif\r
-\r
-PG =\r
-#PG = -g -pg\r
-######### Profiling flags.  If you don't know what that means, leave it blank.\r
\r
-# Choose a compiler.  The code works both with ANSI and K&R-C.\r
-# Use -DNeedFunctionPrototypes to compile with, -UNeedFunctionPrototypes to\r
-# compile without, function prototypes in the header files.\r
-#\r
-# You can use the -DSTUPID_COMPILER to circumvent some compilers'\r
-# static limits regarding the number of subexpressions in a statement.\r
-\r
-# CC           = cc\r
-# CCFLAGS      = -c -DSTUPID_COMPILER\r
-\r
-# CC           = /usr/lang/acc\r
-# CCFLAGS      = -c -O\r
-\r
-CC             ?= gcc\r
-CCFLAGS        += -c -DNeedFunctionPrototypes=1 -funroll-loops $(OPTIMIZE)\r
-ifneq ($(findstring CYGWIN,${OSARCH}),CYGWIN)\r
-CCFLAGS   += -fPIC\r
-endif\r
-\r
-\r
-LD             = $(CC)\r
-\r
-# LD           = gcc\r
-# LDFLAGS      =\r
-\r
-\r
-# If your compiler needs additional flags/libraries, regardless of\r
-# the source compiled, configure them here.\r
-\r
-# CCINC        = -I/usr/gnu/lib/gcc-2.1/gcc-lib/sparc-sun-sunos4.1.2/2.1/include\r
-######### Includes needed by $(CC)\r
-\r
-# LDINC        = -L/usr/gnu/lib/gcc-2.1/gcc-lib/sparc-sun-sunos4.1.2/2.1\r
-######### Library paths needed by $(LD)\r
-\r
-# LDLIB        = -lgcc\r
-######### Additional libraries needed by $(LD)\r
-\r
-\r
-# Where do you want to install libraries, binaries, a header file\r
-# and the manual pages?\r
-#\r
-# Leave INSTALL_ROOT empty (or just don't execute "make install") to\r
-# not install gsm and toast outside of this directory.\r
-\r
-INSTALL_ROOT   =\r
-\r
-# Where do you want to install the gsm library, header file, and manpages?\r
-#\r
-# Leave GSM_INSTALL_ROOT empty to not install the GSM library outside of\r
-# this directory.\r
-\r
-GSM_INSTALL_ROOT = $(INSTALL_ROOT)\r
-GSM_INSTALL_LIB = $(GSM_INSTALL_ROOT)/lib\r
-GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/inc\r
-GSM_INSTALL_MAN = $(GSM_INSTALL_ROOT)/man/man3\r
-\r
-\r
-# Where do you want to install the toast binaries and their manpage?\r
-#\r
-# Leave TOAST_INSTALL_ROOT empty to not install the toast binaries outside\r
-# of this directory.\r
-\r
-TOAST_INSTALL_ROOT       = $(INSTALL_ROOT)\r
-TOAST_INSTALL_BIN = $(TOAST_INSTALL_ROOT)/bin\r
-TOAST_INSTALL_MAN = $(TOAST_INSTALL_ROOT)/man/man1\r
-\r
-#  Other tools\r
-\r
-SHELL          = /bin/sh\r
-LN             = ln\r
-BASENAME       = basename\r
-AR             = ar\r
-ARFLAGS                = cr\r
-RMFLAGS                = -f\r
-FIND           = find\r
-COMPRESS       = compress\r
-COMPRESSFLAGS  = \r
-# RANLIB       = true\r
-RANLIB         = ranlib\r
-\r
-#\r
-#    You shouldn't have to configure below this line if you're porting.\r
-# \r
-\r
-\r
-# Local Directories\r
-\r
-ROOT   = .\r
-ADDTST = $(ROOT)/add-test\r
-TST    = $(ROOT)/tst\r
-MAN    = $(ROOT)/man\r
-BIN    = $(ROOT)/bin\r
-SRC    = $(ROOT)/src\r
-LIB    = $(ROOT)/lib\r
-TLS    = $(ROOT)/tls\r
-INC    = $(ROOT)/inc\r
-\r
-# Flags\r
-\r
-DEBUG  = -DNDEBUG\r
-######### Remove -DNDEBUG to enable assertions.\r
-\r
-CFLAGS += $(PG) $(CCFLAGS) $(SASR) $(DEBUG) $(MULHACK) $(FAST) \\r
-       $(LTP_CUT) $(WAV49) $(K6OPT) $(CCINC) -I$(INC)\r
-######### It's $(CC) $(CFLAGS)\r
-\r
-LFLAGS = $(PG) $(LDFLAGS) $(LDINC)\r
-######### It's $(LD) $(LFLAGS)\r
-\r
-\r
-# Targets\r
-\r
-LIBGSM = $(LIB)/libgsm.a\r
-LIBGSMSO= $(LIB)/libgsm.so\r
-\r
-TOAST  = $(BIN)/toast\r
-UNTOAST        = $(BIN)/untoast\r
-TCAT   = $(BIN)/tcat\r
-\r
-# Headers\r
-\r
-GSM_HEADERS =  $(INC)/gsm.h\r
-\r
-HEADERS        =       $(INC)/proto.h          \\r
-               $(INC)/unproto.h        \\r
-               $(INC)/config.h         \\r
-               $(INC)/private.h        \\r
-               $(INC)/gsm.h            \\r
-               $(INC)/toast.h          \\r
-               $(TLS)/taste.h\r
-\r
-# Sources\r
-\r
-GSM_SOURCES =  $(SRC)/add.c            \\r
-               $(SRC)/code.c           \\r
-               $(SRC)/debug.c          \\r
-               $(SRC)/decode.c         \\r
-               $(SRC)/long_term.c      \\r
-               $(SRC)/lpc.c            \\r
-               $(SRC)/preprocess.c     \\r
-               $(SRC)/rpe.c            \\r
-               $(SRC)/gsm_destroy.c    \\r
-               $(SRC)/gsm_decode.c     \\r
-               $(SRC)/gsm_encode.c     \\r
-               $(SRC)/gsm_explode.c    \\r
-               $(SRC)/gsm_implode.c    \\r
-               $(SRC)/gsm_create.c     \\r
-               $(SRC)/gsm_print.c      \\r
-               $(SRC)/gsm_option.c     \\r
-               $(SRC)/short_term.c     \\r
-               $(SRC)/table.c\r
-ifeq (${OSARCH},Linux)\r
-ifneq ($(shell uname -m),x86_64)\r
-ifneq ($(shell uname -m),ppc)\r
-ifneq ($(shell uname -m),ppc64)\r
-ifneq ($(shell uname -m),alpha)\r
-ifneq ($(shell uname -m),armv4l)\r
-ifneq ($(shell uname -m),sparc64)\r
-ifneq (${PROC},arm)\r
-GSM_SOURCES+= $(SRC)/k6opt.s\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-\r
-TOAST_SOURCES = $(SRC)/toast.c                 \\r
-               $(SRC)/toast_lin.c      \\r
-               $(SRC)/toast_ulaw.c     \\r
-               $(SRC)/toast_alaw.c     \\r
-               $(SRC)/toast_audio.c\r
-\r
-SOURCES        =       $(GSM_SOURCES)          \\r
-               $(TOAST_SOURCES)        \\r
-               $(ADDTST)/add_test.c    \\r
-               $(TLS)/sour.c           \\r
-               $(TLS)/ginger.c         \\r
-               $(TLS)/sour1.dta        \\r
-               $(TLS)/sour2.dta        \\r
-               $(TLS)/bitter.c         \\r
-               $(TLS)/bitter.dta       \\r
-               $(TLS)/taste.c          \\r
-               $(TLS)/sweet.c          \\r
-               $(TST)/cod2lin.c        \\r
-               $(TST)/cod2txt.c        \\r
-               $(TST)/gsm2cod.c        \\r
-               $(TST)/lin2cod.c        \\r
-               $(TST)/lin2txt.c\r
-\r
-# Object files\r
-\r
-GSM_OBJECTS =  $(SRC)/add.o            \\r
-               $(SRC)/code.o           \\r
-               $(SRC)/debug.o          \\r
-               $(SRC)/decode.o         \\r
-               $(SRC)/long_term.o      \\r
-               $(SRC)/lpc.o            \\r
-               $(SRC)/preprocess.o     \\r
-               $(SRC)/rpe.o            \\r
-               $(SRC)/gsm_destroy.o    \\r
-               $(SRC)/gsm_decode.o     \\r
-               $(SRC)/gsm_encode.o     \\r
-               $(SRC)/gsm_explode.o    \\r
-               $(SRC)/gsm_implode.o    \\r
-               $(SRC)/gsm_create.o     \\r
-               $(SRC)/gsm_print.o      \\r
-               $(SRC)/gsm_option.o     \\r
-               $(SRC)/short_term.o     \\r
-               $(SRC)/table.o\r
-\r
-ifeq (${OSARCH},Linux)\r
-ifneq ($(shell uname -m), x86_64)\r
-ifneq ($(shell uname -m), ppc)\r
-ifneq ($(shell uname -m), ppc64)\r
-ifneq ($(shell uname -m), alpha)\r
-ifneq ($(shell uname -m), sparc64)\r
-ifneq ($(shell uname -m), armv4l)\r
-GSM_OBJECTS+= $(SRC)/k6opt.o\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-\r
-TOAST_OBJECTS =        $(SRC)/toast.o          \\r
-               $(SRC)/toast_lin.o      \\r
-               $(SRC)/toast_ulaw.o     \\r
-               $(SRC)/toast_alaw.o     \\r
-               $(SRC)/toast_audio.o\r
-\r
-OBJECTS =       $(GSM_OBJECTS) $(TOAST_OBJECTS)\r
-\r
-# Manuals\r
-\r
-GSM_MANUALS =  $(MAN)/gsm.3            \\r
-               $(MAN)/gsm_explode.3    \\r
-               $(MAN)/gsm_option.3     \\r
-               $(MAN)/gsm_print.3\r
-\r
-TOAST_MANUALS =        $(MAN)/toast.1\r
-\r
-MANUALS        =       $(GSM_MANUALS) $(TOAST_MANUALS) $(MAN)/bitter.1\r
-\r
-# Other stuff in the distribution\r
-\r
-STUFF =        ChangeLog                       \\r
-               INSTALL                 \\r
-               MACHINES                \\r
-               MANIFEST                \\r
-               Makefile                \\r
-               README                  \\r
-               $(ADDTST)/add_test.dta  \\r
-               $(TLS)/bitter.dta       \\r
-               $(TST)/run\r
-\r
-\r
-# Install targets\r
-\r
-GSM_INSTALL_TARGETS =  \\r
-               $(GSM_INSTALL_LIB)/libgsm.a             \\r
-               $(GSM_INSTALL_INC)/gsm.h                \\r
-               $(GSM_INSTALL_MAN)/gsm.3                \\r
-               $(GSM_INSTALL_MAN)/gsm_explode.3        \\r
-               $(GSM_INSTALL_MAN)/gsm_option.3         \\r
-               $(GSM_INSTALL_MAN)/gsm_print.3\r
-\r
-TOAST_INSTALL_TARGETS =        \\r
-               $(TOAST_INSTALL_BIN)/toast              \\r
-               $(TOAST_INSTALL_BIN)/tcat               \\r
-               $(TOAST_INSTALL_BIN)/untoast            \\r
-               $(TOAST_INSTALL_MAN)/toast.1\r
-\r
-\r
-# Default rules\r
-\r
-.c.o:\r
-               $(CC) $(CFLAGS) $?\r
-               @-mv `$(BASENAME) $@` $@ > /dev/null 2>&1\r
-\r
-# Target rules\r
-\r
-all:           $(LIBGSM) $(LIBGSMSO) $(TOAST) $(TCAT) $(UNTOAST)\r
-               @-echo $(ROOT): Done.\r
-\r
-tst:           $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result\r
-               @-echo tst: Done.\r
-\r
-addtst:                $(ADDTST)/add $(ADDTST)/add_test.dta\r
-               $(ADDTST)/add < $(ADDTST)/add_test.dta > /dev/null\r
-               @-echo addtst: Done.\r
-\r
-misc:          $(TLS)/sweet $(TLS)/bitter $(TLS)/sour $(TLS)/ginger    \\r
-                       $(TST)/lin2txt $(TST)/cod2txt $(TST)/gsm2cod\r
-               @-echo misc: Done.\r
-\r
-install:       toastinstall gsminstall\r
-               @-echo install: Done.\r
-\r
-\r
-# The basic API: libgsm\r
-\r
-$(LIBGSMSO):   $(LIB) $(GSM_OBJECTS)\r
-               $(LD) -o $@.1.0.10 -shared -Xlinker -soname -Xlinker libgsm.so.1 $(GSM_OBJECTS) -lc\r
-               ln -fs libgsm.so.1.0.10 lib/libgsm.so.1\r
-               ln -fs libgsm.so.1.0.10 lib/libgsm.so\r
-\r
-$(LIBGSM):     $(LIB) $(GSM_OBJECTS)\r
-               -rm $(RMFLAGS) $(LIBGSM)\r
-               $(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS)\r
-               $(RANLIB) $(LIBGSM)\r
-\r
-\r
-# Toast, Untoast and Tcat -- the compress-like frontends to gsm.\r
-\r
-$(TOAST):      $(BIN) $(TOAST_OBJECTS) $(LIBGSM)\r
-               $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSMSO) $(LDLIB)\r
-\r
-$(UNTOAST):    $(BIN) $(TOAST)\r
-               -rm $(RMFLAGS) $(UNTOAST)\r
-               $(LN) toast $(UNTOAST)\r
-\r
-$(TCAT):       $(BIN) $(TOAST)\r
-               -rm $(RMFLAGS) $(TCAT)\r
-               $(LN) toast $(TCAT)\r
-\r
-\r
-# The local bin and lib directories\r
-\r
-$(BIN):\r
-               if [ ! -d $(BIN) ] ; then mkdir $(BIN) ; fi\r
-\r
-$(LIB):\r
-               if [ ! -d $(LIB) ] ; then mkdir $(LIB) ; fi\r
-\r
-\r
-# Installation\r
-\r
-gsminstall:\r
-               -if [ x"$(GSM_INSTALL_ROOT)" != x ] ; then      \\r
-                       $(MAKE) $(GSM_INSTALL_TARGETS) ;        \\r
-               fi\r
-\r
-toastinstall:\r
-               -if [ x"$(TOAST_INSTALL_ROOT)" != x ]; then     \\r
-                       $(MAKE) $(TOAST_INSTALL_TARGETS);       \\r
-               fi\r
-\r
-gsmuninstall:\r
-               -if [ x"$(GSM_INSTALL_ROOT)" != x ] ; then      \\r
-                       rm $(RMFLAGS) $(GSM_INSTALL_TARGETS) ;  \\r
-               fi\r
-\r
-toastuninstall:\r
-               -if [ x"$(TOAST_INSTALL_ROOT)" != x ] ; then    \\r
-                       rm $(RMFLAGS) $(TOAST_INSTALL_TARGETS); \\r
-               fi\r
-\r
-$(TOAST_INSTALL_BIN)/toast:    $(TOAST)\r
-               -rm $@\r
-               cp $(TOAST) $@\r
-               chmod 755 $@\r
-\r
-$(TOAST_INSTALL_BIN)/untoast:  $(TOAST_INSTALL_BIN)/toast\r
-               -rm $@\r
-               ln $? $@\r
-\r
-$(TOAST_INSTALL_BIN)/tcat:     $(TOAST_INSTALL_BIN)/toast\r
-               -rm $@\r
-               ln $? $@\r
-\r
-$(TOAST_INSTALL_MAN)/toast.1:  $(MAN)/toast.1\r
-               -rm $@\r
-               cp $? $@\r
-               chmod 444 $@\r
-\r
-$(GSM_INSTALL_MAN)/gsm.3:      $(MAN)/gsm.3\r
-               -rm $@\r
-               cp $? $@\r
-               chmod 444 $@\r
-\r
-$(GSM_INSTALL_MAN)/gsm_option.3:       $(MAN)/gsm_option.3\r
-               -rm $@\r
-               cp $? $@\r
-               chmod 444 $@\r
-\r
-$(GSM_INSTALL_MAN)/gsm_explode.3:      $(MAN)/gsm_explode.3\r
-               -rm $@\r
-               cp $? $@\r
-               chmod 444 $@\r
-\r
-$(GSM_INSTALL_MAN)/gsm_print.3:        $(MAN)/gsm_print.3\r
-               -rm $@\r
-               cp $? $@\r
-               chmod 444 $@\r
-\r
-$(GSM_INSTALL_INC)/gsm.h:      $(INC)/gsm.h\r
-               -rm $@\r
-               cp $? $@\r
-               chmod 444 $@\r
-\r
-$(GSM_INSTALL_LIB)/libgsm.a:   $(LIBGSM)\r
-               -rm $@\r
-               cp $? $@\r
-               chmod 444 $@\r
-\r
-\r
-# Distribution\r
-\r
-dist:          gsm-1.0.tar.Z\r
-               @echo dist: Done.\r
-\r
-gsm-1.0.tar.Z: $(STUFF) $(SOURCES) $(HEADERS) $(MANUALS)\r
-               (       cd $(ROOT)/..;                          \\r
-                       tar cvf - `cat $(ROOT)/gsm-1.0/MANIFEST \\r
-                               | sed '/^#/d'`                  \\r
-               ) | $(COMPRESS) $(COMPRESSFLAGS) > $(ROOT)/gsm-1.0.tar.Z\r
-\r
-# Clean\r
-\r
-uninstall:     toastuninstall gsmuninstall\r
-               @-echo uninstall: Done.\r
-\r
-semi-clean:\r
-               -rm $(RMFLAGS)  */*.o                   \\r
-                       $(TST)/lin2cod $(TST)/lin2txt   \\r
-                       $(TST)/cod2lin $(TST)/cod2txt   \\r
-                       $(TST)/gsm2cod                  \\r
-                       $(TST)/*.*.*\r
-               -$(FIND) . \( -name core -o -name foo \) \\r
-                       -print | xargs rm $(RMFLAGS)\r
-\r
-clean: semi-clean\r
-               -rm $(RMFLAGS) $(LIBGSM) $(ADDTST)/add          \\r
-                       $(TOAST) $(TCAT) $(UNTOAST)     \\r
-                       $(ROOT)/gsm-1.0.tar.Z\r
-               rm -rf lib\r
-\r
-# Two tools that helped me generate gsm_encode.c and gsm_decode.c,\r
-# but aren't generally needed to port this.\r
-\r
-$(TLS)/sweet:  $(TLS)/sweet.o $(TLS)/taste.o\r
-               $(LD) $(LFLAGS) -o $(TLS)/sweet \\r
-                       $(TLS)/sweet.o $(TLS)/taste.o $(LDLIB)\r
-\r
-$(TLS)/bitter: $(TLS)/bitter.o $(TLS)/taste.o\r
-               $(LD) $(LFLAGS) -o $(TLS)/bitter \\r
-                       $(TLS)/bitter.o $(TLS)/taste.o $(LDLIB)\r
-\r
-# A version of the same family that Jeff Chilton used to implement\r
-# the WAV #49 GSM format.\r
-\r
-$(TLS)/ginger: $(TLS)/ginger.o $(TLS)/taste.o\r
-               $(LD) $(LFLAGS) -o $(TLS)/ginger \\r
-                       $(TLS)/ginger.o $(TLS)/taste.o $(LDLIB)\r
-\r
-$(TLS)/sour:   $(TLS)/sour.o $(TLS)/taste.o\r
-               $(LD) $(LFLAGS) -o $(TLS)/sour \\r
-                       $(TLS)/sour.o $(TLS)/taste.o $(LDLIB)\r
-\r
-# Run $(ADDTST)/add < $(ADDTST)/add_test.dta to make sure the\r
-# basic arithmetic functions work as intended.\r
-\r
-$(ADDTST)/add: $(ADDTST)/add_test.o\r
-               $(LD) $(LFLAGS) -o $(ADDTST)/add $(ADDTST)/add_test.o $(LDLIB)\r
-\r
-\r
-# Various conversion programs between linear, text, .gsm and the code\r
-# format used by the tests we ran (.cod).  We paid for the test data,\r
-# so I guess we can't just provide them with this package.  Still,\r
-# if you happen to have them lying around, here's the code.\r
-# \r
-# You can use gsm2cod | cod2txt independently to look at what's\r
-# coded inside the compressed frames, although this shouldn't be\r
-# hard to roll on your own using the gsm_print() function from\r
-# the API.\r
-\r
-\r
-$(TST)/test-result:    $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/run\r
-                       ( cd $(TST); ./run ) \r
-\r
-$(TST)/lin2txt:                $(TST)/lin2txt.o $(LIBGSM)\r
-                       $(LD) $(LFLAGS) -o $(TST)/lin2txt \\r
-                               $(TST)/lin2txt.o $(LIBGSM) $(LDLIB)\r
-\r
-$(TST)/lin2cod:                $(TST)/lin2cod.o $(LIBGSM)\r
-                       $(LD) $(LFLAGS) -o $(TST)/lin2cod \\r
-                               $(TST)/lin2cod.o $(LIBGSM) $(LDLIB)\r
-\r
-$(TST)/gsm2cod:                $(TST)/gsm2cod.o $(LIBGSM)\r
-                       $(LD) $(LFLAGS) -o $(TST)/gsm2cod \\r
-                               $(TST)/gsm2cod.o $(LIBGSM) $(LDLIB)\r
-\r
-$(TST)/cod2txt:                $(TST)/cod2txt.o $(LIBGSM)\r
-                       $(LD) $(LFLAGS) -o $(TST)/cod2txt \\r
-                               $(TST)/cod2txt.o $(LIBGSM) $(LDLIB)\r
-\r
-$(TST)/cod2lin:                $(TST)/cod2lin.o $(LIBGSM)\r
-                       $(LD) $(LFLAGS) -o $(TST)/cod2lin \\r
-                               $(TST)/cod2lin.o $(LIBGSM) $(LDLIB)\r
diff --git a/libs/codecs/gsm/README b/libs/codecs/gsm/README
deleted file mode 100644 (file)
index ebb1f16..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-\r
-GSM 06.10 13 kbit/s RPE/LTP speech compression available\r
---------------------------------------------------------\r
-\r
-The Communications and Operating Systems Research Group (KBS) at the\r
-Technische Universitaet Berlin is currently working on a set of\r
-UNIX-based tools for computer-mediated telecooperation that will be\r
-made freely available.\r
-\r
-As part of this effort we are publishing an implementation of the\r
-European GSM 06.10 provisional standard for full-rate speech\r
-transcoding, prI-ETS 300 036, which uses RPE/LTP (residual pulse\r
-excitation/long term prediction) coding at 13 kbit/s.\r
-\r
-GSM 06.10 compresses frames of 160 13-bit samples (8 kHz sampling\r
-rate, i.e. a frame rate of 50 Hz) into 260 bits; for compatibility\r
-with typical UNIX applications, our implementation turns frames of 160\r
-16-bit linear samples into 33-byte frames (1650 Bytes/s).\r
-The quality of the algorithm is good enough for reliable speaker\r
-recognition; even music often survives transcoding in recognizable \r
-form (given the bandwidth limitations of 8 kHz sampling rate).\r
-\r
-The interfaces offered are a front end modelled after compress(1), and\r
-a library API.  Compression and decompression run faster than realtime\r
-on most SPARCstations.  The implementation has been verified against the\r
-ETSI standard test patterns.\r
-\r
-Jutta Degener (jutta@cs.tu-berlin.de)\r
-Carsten Bormann (cabo@cs.tu-berlin.de)\r
-\r
-Communications and Operating Systems Research Group, TU Berlin\r
-Fax: +49.30.31425156, Phone: +49.30.31424315\r
-\r
---\r
-Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
-Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
-details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
diff --git a/libs/codecs/gsm/inc/config.h b/libs/codecs/gsm/inc/config.h
deleted file mode 100644 (file)
index 07b21d1..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/*$Header$*/\r
-\r
-#ifndef        CONFIG_H\r
-#define        CONFIG_H\r
-\r
-#if 0\r
-efine  SIGHANDLER_T    int             /* signal handlers are void     */\r
-efine HAS_SYSV_SIGNAL  1               /* sigs not blocked/reset?      */\r
-#endif\r
-\r
-#define        HAS_STDLIB_H    1               /* /usr/include/stdlib.h        */\r
-#if 0\r
-efine  HAS_LIMITS_H    1               /* /usr/include/limits.h        */\r
-#endif\r
-#define        HAS_FCNTL_H     1               /* /usr/include/fcntl.h         */\r
-#if 0\r
-efine  HAS_ERRNO_DECL  1               /* errno.h declares errno       */\r
-#endif\r
-\r
-#define        HAS_FSTAT       1               /* fstat syscall                */\r
-#define        HAS_FCHMOD      1               /* fchmod syscall               */\r
-#define        HAS_CHMOD       1               /* chmod syscall                */\r
-#define        HAS_FCHOWN      1               /* fchown syscall               */\r
-#define        HAS_CHOWN       1               /* chown syscall                */\r
-#if 0\r
-efine  HAS__FSETMODE   1               /* _fsetmode -- set file mode   */\r
-#endif\r
-\r
-#define        HAS_STRING_H    1               /* /usr/include/string.h        */\r
-#if 0\r
-efine  HAS_STRINGS_H   1               /* /usr/include/strings.h       */\r
-#endif\r
-\r
-#define        HAS_UNISTD_H    1               /* /usr/include/unistd.h        */\r
-#define        HAS_UTIME       1               /* POSIX utime(path, times)     */\r
-#if 0\r
-efine  HAS_UTIMES      1               /* use utimes() syscall instead */\r
-#endif\r
-#define        HAS_UTIME_H     1               /* UTIME header file            */\r
-#if 0\r
-efine  HAS_UTIMBUF     1               /* struct utimbuf               */\r
-efine  HAS_UTIMEUSEC   1               /* microseconds in utimbuf?     */\r
-#endif\r
-\r
-#endif /* CONFIG_H */\r
diff --git a/libs/codecs/gsm/inc/gsm.h b/libs/codecs/gsm/inc/gsm.h
deleted file mode 100644 (file)
index 32a0b48..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/*$Header$*/\r
-\r
-#ifndef        GSM_H\r
-#define        GSM_H\r
-\r
-#ifdef __cplusplus\r
-#      define  NeedFunctionPrototypes  1\r
-#endif\r
-\r
-#if __STDC__\r
-#      define  NeedFunctionPrototypes  1\r
-#endif\r
-\r
-#ifdef _NO_PROTO\r
-#      undef   NeedFunctionPrototypes\r
-#endif\r
-\r
-#ifdef NeedFunctionPrototypes\r
-#   include    <stdio.h>               /* for FILE *   */\r
-#endif\r
-\r
-#undef GSM_P\r
-#if NeedFunctionPrototypes\r
-#      define  GSM_P( protos ) protos\r
-#else\r
-#      define  GSM_P( protos ) ( /* protos */ )\r
-#endif\r
-\r
-/*\r
- *     Interface\r
- */\r
-\r
-typedef struct gsm_state *     gsm;\r
-typedef short                  gsm_signal;             /* signed 16 bit */\r
-typedef unsigned char          gsm_byte;\r
-typedef gsm_byte               gsm_frame[33];          /* 33 * 8 bits   */\r
-\r
-#define        GSM_MAGIC               0xD                     /* 13 kbit/s RPE-LTP */\r
-\r
-#define        GSM_PATCHLEVEL          10\r
-#define        GSM_MINOR               0\r
-#define        GSM_MAJOR               1\r
-\r
-#define        GSM_OPT_VERBOSE         1\r
-#define        GSM_OPT_FAST            2\r
-#define        GSM_OPT_LTP_CUT         3\r
-#define        GSM_OPT_WAV49           4\r
-#define        GSM_OPT_FRAME_INDEX     5\r
-#define        GSM_OPT_FRAME_CHAIN     6\r
-\r
-extern gsm  gsm_create         GSM_P((void));\r
-extern void gsm_destroy GSM_P((gsm));  \r
-\r
-extern int  gsm_print   GSM_P((FILE *, gsm, gsm_byte  *));\r
-extern int  gsm_option  GSM_P((gsm, int, int *));\r
-\r
-extern void gsm_encode  GSM_P((gsm, gsm_signal *, gsm_byte  *));\r
-extern int  gsm_decode  GSM_P((gsm, gsm_byte   *, gsm_signal *));\r
-\r
-extern int  gsm_explode GSM_P((gsm, gsm_byte   *, gsm_signal *));\r
-extern void gsm_implode GSM_P((gsm, gsm_signal *, gsm_byte   *));\r
-\r
-#undef GSM_P\r
-\r
-#endif /* GSM_H */\r
diff --git a/libs/codecs/gsm/inc/private.h b/libs/codecs/gsm/inc/private.h
deleted file mode 100644 (file)
index 63a70a0..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/*$Header$*/\r
-\r
-#ifndef        PRIVATE_H\r
-#define        PRIVATE_H\r
-\r
-typedef short                  word;           /* 16 bit signed int    */\r
-typedef long                   longword;       /* 32 bit signed int    */\r
-\r
-typedef unsigned short         uword;          /* unsigned word        */\r
-typedef unsigned long          ulongword;      /* unsigned longword    */\r
-\r
-struct gsm_state {\r
-\r
-       word            dp0[ 280 ];\r
-\r
-       word            z1;             /* preprocessing.c, Offset_com. */\r
-       longword        L_z2;           /*                  Offset_com. */\r
-       int             mp;             /*                  Preemphasis */\r
-\r
-       word            u[8];           /* short_term_aly_filter.c      */\r
-       word            LARpp[2][8];    /*                              */\r
-       word            j;              /*                              */\r
-\r
-       word            ltp_cut;        /* long_term.c, LTP crosscorr.  */\r
-       word            nrp; /* 40 */   /* long_term.c, synthesis       */\r
-       word            v[9];           /* short_term.c, synthesis      */\r
-       word            msr;            /* decoder.c,   Postprocessing  */\r
-\r
-       char            verbose;        /* only used if !NDEBUG         */\r
-       char            fast;           /* only used if FAST            */\r
-\r
-       char            wav_fmt;        /* only used if WAV49 defined   */\r
-       unsigned char   frame_index;    /*            odd/even chaining */\r
-       unsigned char   frame_chain;    /*   half-byte to carry forward */\r
-};\r
-\r
-\r
-#define        MIN_WORD        (-32767 - 1)\r
-#define        MAX_WORD          32767\r
-\r
-#define        MIN_LONGWORD    (-2147483647 - 1)\r
-#define        MAX_LONGWORD      2147483647\r
-\r
-#ifdef SASR            /* flag: >> is a signed arithmetic shift right */\r
-#undef SASR\r
-#define        SASR(x, by)     ((x) >> (by))\r
-#else\r
-#define        SASR(x, by)     ((x) >= 0 ? (x) >> (by) : (~(-((x) + 1) >> (by))))\r
-#endif /* SASR */\r
-\r
-#include "proto.h"\r
-\r
-/*\r
- *     Prototypes from add.c\r
- */\r
-extern word    gsm_mult        P((word a, word b));\r
-extern longword gsm_L_mult     P((word a, word b));\r
-extern word    gsm_mult_r      P((word a, word b));\r
-\r
-extern word    gsm_div         P((word num, word denum));\r
-\r
-extern word    gsm_add         P(( word a, word b ));\r
-extern longword gsm_L_add      P(( longword a, longword b ));\r
-\r
-extern word    gsm_sub         P((word a, word b));\r
-extern longword gsm_L_sub      P((longword a, longword b));\r
-\r
-extern word    gsm_abs         P((word a));\r
-\r
-extern word    gsm_norm        P(( longword a ));\r
-\r
-extern longword gsm_L_asl      P((longword a, int n));\r
-extern word    gsm_asl         P((word a, int n));\r
-\r
-extern longword gsm_L_asr      P((longword a, int n));\r
-extern word    gsm_asr         P((word a, int n));\r
-\r
-/*\r
- *  Inlined functions from add.h \r
- */\r
-\r
-/* \r
- * #define GSM_MULT_R(a, b) (* word a, word b, !(a == b == MIN_WORD) *)        \\r
- *     (0x0FFFF & SASR(((longword)(a) * (longword)(b) + 16384), 15))\r
- */\r
-#define GSM_MULT_R(a, b) /* word a, word b, !(a == b == MIN_WORD) */   \\r
-       (SASR( ((longword)(a) * (longword)(b) + 16384), 15 ))\r
-\r
-# define GSM_MULT(a,b)  /* word a, word b, !(a == b == MIN_WORD) */    \\r
-       (SASR( ((longword)(a) * (longword)(b)), 15 ))\r
-\r
-# define GSM_L_MULT(a, b) /* word a, word b */ \\r
-       (((longword)(a) * (longword)(b)) << 1)\r
-\r
-#if defined(__GNUC__) && defined(__i386__)\r
-\r
-static __inline__ int GSM_L_ADD(int a, int b)\r
-{\r
-       __asm__ __volatile__(\r
-       \r
-                       "addl %2,%0; jno 0f; movl $0x7fffffff,%0; adcl $0,%0; 0:"\r
-                       : "=r" (a)\r
-                       : "0" (a), "ir" (b)\r
-                       : "cc"\r
-               );\r
-       return(a);\r
-}\r
-\r
-static __inline__ short GSM_ADD(short a, short b)\r
-{\r
-       __asm__ __volatile__(\r
-                       "addw %2,%0; jno 0f; movw $0x7fff,%0; adcw $0,%0; 0:"\r
-                       : "=r" (a)\r
-                       : "0" (a), "ir" (b)\r
-                       : "cc"\r
-               );\r
-       return(a);\r
-}\r
-\r
-static __inline__ short GSM_SUB(short a, short b)\r
-{\r
-       __asm__ __volatile__(\r
-                       "subw %2,%0; jno 0f; movw $0x7fff,%0; adcw $0,%0; 0:"\r
-                       : "=r" (a)\r
-                       : "0" (a), "ir" (b)\r
-                       : "cc"\r
-               );\r
-       return(a);\r
-}\r
-\r
-#else\r
-\r
-# define GSM_L_ADD(a, b)       \\r
-       ( (a) <  0 ? ( (b) >= 0 ? (a) + (b)     \\r
-                : (utmp = (ulongword)-((a) + 1) + (ulongword)-((b) + 1)) \\r
-                  >= MAX_LONGWORD ? MIN_LONGWORD : -(longword)utmp-2 )   \\r
-       : ((b) <= 0 ? (a) + (b)   \\r
-                 : (utmp = (ulongword)(a) + (ulongword)(b)) >= MAX_LONGWORD \\r
-                   ? MAX_LONGWORD : utmp))\r
-\r
-/*\r
- * # define GSM_ADD(a, b)      \\r
- *     ((ltmp = (longword)(a) + (longword)(b)) >= MAX_WORD \\r
- *     ? MAX_WORD : ltmp <= MIN_WORD ? MIN_WORD : ltmp)\r
- */\r
-/* Nonportable, but faster: */\r
-\r
-# define GSM_ADD(a, b) ({ \\r
-               register longword ltmp; \\r
-               ltmp = (longword) (a) + (longword) (b); \\r
-               ((ulongword) (ltmp - MIN_WORD) > MAX_WORD - MIN_WORD ? \\r
-                       (ltmp > 0 ? MAX_WORD : MIN_WORD) : ltmp); \\r
-       })\r
-\r
-#define GSM_SUB(a, b) ({ \\r
-               register longword ltmp; \\r
-               ltmp = (longword) (a) - (longword) (b); \\r
-               (ltmp >= MAX_WORD ? MAX_WORD : ltmp <= MIN_WORD ? MIN_WORD : ltmp); \\r
-       })\r
-\r
-#endif\r
-\r
-# define GSM_ABS(a)    ((a) < 0 ? ((a) == MIN_WORD ? MAX_WORD : -(a)) : (a))\r
-\r
-/* Use these if necessary:\r
-\r
-# define GSM_MULT_R(a, b)      gsm_mult_r(a, b)\r
-# define GSM_MULT(a, b)                gsm_mult(a, b)\r
-# define GSM_L_MULT(a, b)      gsm_L_mult(a, b)\r
-\r
-# define GSM_L_ADD(a, b)       gsm_L_add(a, b)\r
-# define GSM_ADD(a, b)         gsm_add(a, b)\r
-# define GSM_SUB(a, b)         gsm_sub(a, b)\r
-\r
-# define GSM_ABS(a)            gsm_abs(a)\r
-\r
-*/\r
-\r
-/*\r
- *  More prototypes from implementations..\r
- */\r
-extern void Gsm_Coder P((\r
-               struct gsm_state        * S,\r
-               word    * s,    /* [0..159] samples             IN      */\r
-               word    * LARc, /* [0..7] LAR coefficients      OUT     */\r
-               word    * Nc,   /* [0..3] LTP lag               OUT     */\r
-               word    * bc,   /* [0..3] coded LTP gain        OUT     */\r
-               word    * Mc,   /* [0..3] RPE grid selection    OUT     */\r
-               word    * xmaxc,/* [0..3] Coded maximum amplitude OUT   */\r
-               word    * xMc   /* [13*4] normalized RPE samples OUT    */));\r
-\r
-extern void Gsm_Long_Term_Predictor P((                /* 4x for 160 samples */\r
-               struct gsm_state * S,\r
-               word    * d,    /* [0..39]   residual signal    IN      */\r
-               word    * dp,   /* [-120..-1] d'                IN      */\r
-               word    * e,    /* [0..40]                      OUT     */\r
-               word    * dpp,  /* [0..40]                      OUT     */\r
-               word    * Nc,   /* correlation lag              OUT     */\r
-               word    * bc    /* gain factor                  OUT     */));\r
-\r
-extern void Gsm_LPC_Analysis P((\r
-               struct gsm_state * S,\r
-               word * s,        /* 0..159 signals      IN/OUT  */\r
-               word * LARc));   /* 0..7   LARc's       OUT     */\r
-\r
-extern void Gsm_Preprocess P((\r
-               struct gsm_state * S,\r
-               word * s, word * so));\r
-\r
-extern void Gsm_Encoding P((\r
-               struct gsm_state * S,\r
-               word    * e,    \r
-               word    * ep,   \r
-               word    * xmaxc,\r
-               word    * Mc,   \r
-               word    * xMc));\r
-\r
-extern void Gsm_Short_Term_Analysis_Filter P((\r
-               struct gsm_state * S,\r
-               word    * LARc, /* coded log area ratio [0..7]  IN      */\r
-               word    * d     /* st res. signal [0..159]      IN/OUT  */));\r
-\r
-extern void Gsm_Decoder P((\r
-               struct gsm_state * S,\r
-               word    * LARcr,        /* [0..7]               IN      */\r
-               word    * Ncr,          /* [0..3]               IN      */\r
-               word    * bcr,          /* [0..3]               IN      */\r
-               word    * Mcr,          /* [0..3]               IN      */\r
-               word    * xmaxcr,       /* [0..3]               IN      */\r
-               word    * xMcr,         /* [0..13*4]            IN      */\r
-               word    * s));          /* [0..159]             OUT     */\r
-\r
-extern void Gsm_Decoding P((\r
-               struct gsm_state * S,\r
-               word    xmaxcr,\r
-               word    Mcr,\r
-               word    * xMcr,         /* [0..12]              IN      */\r
-               word    * erp));        /* [0..39]              OUT     */\r
-\r
-extern void Gsm_Long_Term_Synthesis_Filtering P((\r
-               struct gsm_state* S,\r
-               word    Ncr,\r
-               word    bcr,\r
-               word    * erp,          /* [0..39]                IN    */\r
-               word    * drp));        /* [-120..-1] IN, [0..40] OUT   */\r
-\r
-void Gsm_RPE_Decoding P((\r
-       struct gsm_state *S,\r
-               word xmaxcr,\r
-               word Mcr,\r
-               word * xMcr,  /* [0..12], 3 bits             IN      */\r
-               word * erp)); /* [0..39]                     OUT     */\r
-\r
-void Gsm_RPE_Encoding P((\r
-               struct gsm_state * S,\r
-               word    * e,            /* -5..-1][0..39][40..44     IN/OUT  */\r
-               word    * xmaxc,        /*                              OUT */\r
-               word    * Mc,           /*                              OUT */\r
-               word    * xMc));        /* [0..12]                      OUT */\r
-\r
-extern void Gsm_Short_Term_Synthesis_Filter P((\r
-               struct gsm_state * S,\r
-               word    * LARcr,        /* log area ratios [0..7]  IN   */\r
-               word    * drp,          /* received d [0...39]     IN   */\r
-               word    * s));          /* signal   s [0..159]    OUT   */\r
-\r
-extern void Gsm_Update_of_reconstructed_short_time_residual_signal P((\r
-               word    * dpp,          /* [0...39]     IN      */\r
-               word    * ep,           /* [0...39]     IN      */\r
-               word    * dp));         /* [-120...-1]  IN/OUT  */\r
-\r
-/*\r
- *  Tables from table.c\r
- */\r
-#ifndef        GSM_TABLE_C\r
-\r
-extern word gsm_A[8], gsm_B[8], gsm_MIC[8], gsm_MAC[8];\r
-extern word gsm_INVA[8];\r
-extern word gsm_DLB[4], gsm_QLB[4];\r
-extern word gsm_H[11];\r
-extern word gsm_NRFAC[8];\r
-extern word gsm_FAC[8];\r
-\r
-#endif /* GSM_TABLE_C */\r
-\r
-/*\r
- *  Debugging\r
- */\r
-#ifdef NDEBUG\r
-\r
-#      define  gsm_debug_words(a, b, c, d)             /* nil */\r
-#      define  gsm_debug_longwords(a, b, c, d)         /* nil */\r
-#      define  gsm_debug_word(a, b)                    /* nil */\r
-#      define  gsm_debug_longword(a, b)                /* nil */\r
-\r
-#else  /* !NDEBUG => DEBUG */\r
-\r
-       extern void  gsm_debug_words     P((char * name, int, int, word *));\r
-       extern void  gsm_debug_longwords P((char * name, int, int, longword *));\r
-       extern void  gsm_debug_longword  P((char * name, longword));\r
-       extern void  gsm_debug_word      P((char * name, word));\r
-\r
-#endif /* !NDEBUG */\r
-\r
-#include "unproto.h"\r
-\r
-#endif /* PRIVATE_H */\r
diff --git a/libs/codecs/gsm/inc/proto.h b/libs/codecs/gsm/inc/proto.h
deleted file mode 100644 (file)
index 17a5f74..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/*$Header$*/\r
-\r
-#ifndef        PROTO_H\r
-#define        PROTO_H\r
-\r
-#if __cplusplus\r
-#      define  NeedFunctionPrototypes  1\r
-#endif\r
-\r
-#if __STDC__\r
-#      define  NeedFunctionPrototypes  1\r
-#endif\r
-\r
-#ifdef _NO_PROTO\r
-#      undef   NeedFunctionPrototypes\r
-#endif\r
-\r
-#undef P       /* gnu stdio.h actually defines this...         */\r
-#undef P0\r
-#undef P1\r
-#undef P2\r
-#undef P3\r
-#undef P4\r
-#undef P5\r
-#undef P6\r
-#undef P7\r
-#undef P8\r
-\r
-#if NeedFunctionPrototypes\r
-\r
-#      define  P( protos )     protos\r
-\r
-#      define  P0()                            (void)\r
-#      define  P1(x, a)                        (a)\r
-#      define  P2(x, a, b)                     (a, b)\r
-#      define  P3(x, a, b, c)                  (a, b, c)\r
-#      define  P4(x, a, b, c, d)               (a, b, c, d)    \r
-#      define  P5(x, a, b, c, d, e)            (a, b, c, d, e)\r
-#      define  P6(x, a, b, c, d, e, f)         (a, b, c, d, e, f)\r
-#      define  P7(x, a, b, c, d, e, f, g)      (a, b, c, d, e, f, g)\r
-#      define  P8(x, a, b, c, d, e, f, g, h)   (a, b, c, d, e, f, g, h)\r
-\r
-#else /* !NeedFunctionPrototypes */\r
-\r
-#      define  P( protos )     ( /* protos */ )\r
-\r
-#      define  P0()                            ()\r
-#      define  P1(x, a)                        x a;\r
-#      define  P2(x, a, b)                     x a; b;\r
-#      define  P3(x, a, b, c)                  x a; b; c;\r
-#      define  P4(x, a, b, c, d)               x a; b; c; d;\r
-#      define  P5(x, a, b, c, d, e)            x a; b; c; d; e;\r
-#      define  P6(x, a, b, c, d, e, f)         x a; b; c; d; e; f;\r
-#      define  P7(x, a, b, c, d, e, f, g)      x a; b; c; d; e; f; g;\r
-#      define  P8(x, a, b, c, d, e, f, g, h)   x a; b; c; d; e; f; g; h;\r
-\r
-#endif  /* !NeedFunctionPrototypes */\r
-\r
-#endif /* PROTO_H */\r
diff --git a/libs/codecs/gsm/inc/unproto.h b/libs/codecs/gsm/inc/unproto.h
deleted file mode 100644 (file)
index ce09e1a..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/*$Header$*/\r
-\r
-#ifdef PROTO_H         /* sic */\r
-#undef PROTO_H\r
-\r
-#undef P\r
-#undef P0\r
-#undef P1\r
-#undef P2\r
-#undef P3\r
-#undef P4\r
-#undef P5\r
-#undef P6\r
-#undef P7\r
-#undef P8\r
-\r
-#endif /* PROTO_H */\r
diff --git a/libs/codecs/gsm/src/add.c b/libs/codecs/gsm/src/add.c
deleted file mode 100644 (file)
index 9c5171e..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-/*\r
- *  See private.h for the more commonly used macro versions.\r
- */\r
-\r
-#include       <stdio.h>\r
-#include       <assert.h>\r
-\r
-#include       "private.h"\r
-#include       "gsm.h"\r
-#include       "proto.h"\r
-\r
-#define        saturate(x)     \\r
-       ((x) < MIN_WORD ? MIN_WORD : (x) > MAX_WORD ? MAX_WORD: (x))\r
-\r
-word gsm_add P2((a,b), word a, word b)\r
-{\r
-       longword sum = (longword)a + (longword)b;\r
-       return saturate(sum);\r
-}\r
-\r
-word gsm_sub P2((a,b), word a, word b)\r
-{\r
-       longword diff = (longword)a - (longword)b;\r
-       return saturate(diff);\r
-}\r
-\r
-word gsm_mult P2((a,b), word a, word b)\r
-{\r
-       if (a == MIN_WORD && b == MIN_WORD) return MAX_WORD;\r
-       else return SASR( (longword)a * (longword)b, 15 );\r
-}\r
-\r
-word gsm_mult_r P2((a,b), word a, word b)\r
-{\r
-       if (b == MIN_WORD && a == MIN_WORD) return MAX_WORD;\r
-       else {\r
-               longword prod = (longword)a * (longword)b + 16384;\r
-               prod >>= 15;\r
-               return prod & 0xFFFF;\r
-       }\r
-}\r
-\r
-word gsm_abs P1((a), word a)\r
-{\r
-       return a < 0 ? (a == MIN_WORD ? MAX_WORD : -a) : a;\r
-}\r
-\r
-longword gsm_L_mult P2((a,b),word a, word b)\r
-{\r
-       assert( a != MIN_WORD || b != MIN_WORD );\r
-       return ((longword)a * (longword)b) << 1;\r
-}\r
-\r
-longword gsm_L_add P2((a,b), longword a, longword b)\r
-{\r
-       if (a < 0) {\r
-               if (b >= 0) return a + b;\r
-               else {\r
-                       ulongword A = (ulongword)-(a + 1) + (ulongword)-(b + 1);\r
-                       return A >= MAX_LONGWORD ? MIN_LONGWORD :-(longword)A-2;\r
-               }\r
-       }\r
-       else if (b <= 0) return a + b;\r
-       else {\r
-               ulongword A = (ulongword)a + (ulongword)b;\r
-               return A > MAX_LONGWORD ? MAX_LONGWORD : A;\r
-       }\r
-}\r
-\r
-longword gsm_L_sub P2((a,b), longword a, longword b)\r
-{\r
-       if (a >= 0) {\r
-               if (b >= 0) return a - b;\r
-               else {\r
-                       /* a>=0, b<0 */\r
-\r
-                       ulongword A = (ulongword)a + -(b + 1);\r
-                       return A >= MAX_LONGWORD ? MAX_LONGWORD : (A + 1);\r
-               }\r
-       }\r
-       else if (b <= 0) return a - b;\r
-       else {\r
-               /* a<0, b>0 */  \r
-\r
-               ulongword A = (ulongword)-(a + 1) + b;\r
-               return A >= MAX_LONGWORD ? MIN_LONGWORD : -(longword)A - 1;\r
-       }\r
-}\r
-\r
-static unsigned char const bitoff[ 256 ] = {\r
-        8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4,\r
-        3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\r
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\r
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\r
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\r
-        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\r
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\r
-};\r
-\r
-word gsm_norm P1((a), longword a )\r
-/*\r
- * the number of left shifts needed to normalize the 32 bit\r
- * variable L_var1 for positive values on the interval\r
- *\r
- * with minimum of\r
- * minimum of 1073741824  (01000000000000000000000000000000) and \r
- * maximum of 2147483647  (01111111111111111111111111111111)\r
- *\r
- *\r
- * and for negative values on the interval with\r
- * minimum of -2147483648 (-10000000000000000000000000000000) and\r
- * maximum of -1073741824 ( -1000000000000000000000000000000).\r
- *\r
- * in order to normalize the result, the following\r
- * operation must be done: L_norm_var1 = L_var1 << norm( L_var1 );\r
- *\r
- * (That's 'ffs', only from the left, not the right..)\r
- */\r
-{\r
-       assert(a != 0);\r
-\r
-       if (a < 0) {\r
-               if (a <= -1073741824) return 0;\r
-               a = ~a;\r
-       }\r
-\r
-       return    a & 0xffff0000 \r
-               ? ( a & 0xff000000\r
-                 ?  -1 + bitoff[ 0xFF & (a >> 24) ]\r
-                 :   7 + bitoff[ 0xFF & (a >> 16) ] )\r
-               : ( a & 0xff00\r
-                 ?  15 + bitoff[ 0xFF & (a >> 8) ]\r
-                 :  23 + bitoff[ 0xFF & a ] );\r
-}\r
-\r
-longword gsm_L_asl P2((a,n), longword a, int n)\r
-{\r
-       if (n >= 32) return 0;\r
-       if (n <= -32) return -(a < 0);\r
-       if (n < 0) return gsm_L_asr(a, -n);\r
-       return a << n;\r
-}\r
-\r
-word gsm_asl P2((a,n), word a, int n)\r
-{\r
-       if (n >= 16) return 0;\r
-       if (n <= -16) return -(a < 0);\r
-       if (n < 0) return gsm_asr(a, -n);\r
-       return a << n;\r
-}\r
-\r
-longword gsm_L_asr P2((a,n), longword a, int n)\r
-{\r
-       if (n >= 32) return -(a < 0);\r
-       if (n <= -32) return 0;\r
-       if (n < 0) return a << -n;\r
-\r
-#      ifdef   SASR\r
-               return a >> n;\r
-#      else\r
-               if (a >= 0) return a >> n;\r
-               else return -(longword)( -(ulongword)a >> n );\r
-#      endif\r
-}\r
-\r
-word gsm_asr P2((a,n), word a, int n)\r
-{\r
-       if (n >= 16) return -(a < 0);\r
-       if (n <= -16) return 0;\r
-       if (n < 0) return a << -n;\r
-\r
-#      ifdef   SASR\r
-               return a >> n;\r
-#      else\r
-               if (a >= 0) return a >> n;\r
-               else return -(word)( -(uword)a >> n );\r
-#      endif\r
-}\r
-\r
-/* \r
- *  (From p. 46, end of section 4.2.5)\r
- *\r
- *  NOTE: The following lines gives [sic] one correct implementation\r
- *       of the div(num, denum) arithmetic operation.  Compute div\r
- *        which is the integer division of num by denum: with denum\r
- *       >= num > 0\r
- */\r
-\r
-word gsm_div P2((num,denum), word num, word denum)\r
-{\r
-       longword        L_num   = num;\r
-       longword        L_denum = denum;\r
-       word            div     = 0;\r
-       int             k       = 15;\r
-\r
-       /* The parameter num sometimes becomes zero.\r
-        * Although this is explicitly guarded against in 4.2.5,\r
-        * we assume that the result should then be zero as well.\r
-        */\r
-\r
-       /* assert(num != 0); */\r
-\r
-       assert(num >= 0 && denum >= num);\r
-       if (num == 0)\r
-           return 0;\r
-\r
-       while (k--) {\r
-               div   <<= 1;\r
-               L_num <<= 1;\r
-\r
-               if (L_num >= L_denum) {\r
-                       L_num -= L_denum;\r
-                       div++;\r
-               }\r
-       }\r
-\r
-       return div;\r
-}\r
diff --git a/libs/codecs/gsm/src/code.c b/libs/codecs/gsm/src/code.c
deleted file mode 100644 (file)
index 14c5f6c..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include       "config.h"\r
-\r
-#ifdef HAS_STRING_H\r
-#include       <string.h>\r
-#else\r
-#      include "proto.h"\r
-       extern char     * memcpy P((char *, char *, int));\r
-#endif\r
-\r
-#include       "private.h"\r
-#include       "gsm.h"\r
-#include       "proto.h"\r
-\r
-/* \r
- *  4.2 FIXED POINT IMPLEMENTATION OF THE RPE-LTP CODER \r
- */\r
-\r
-void Gsm_Coder P8((S,s,LARc,Nc,bc,Mc,xmaxc,xMc),\r
-\r
-       struct gsm_state        * S,\r
-\r
-       word    * s,    /* [0..159] samples                     IN      */\r
-\r
-/*\r
- * The RPE-LTD coder works on a frame by frame basis.  The length of\r
- * the frame is equal to 160 samples.  Some computations are done\r
- * once per frame to produce at the output of the coder the\r
- * LARc[1..8] parameters which are the coded LAR coefficients and \r
- * also to realize the inverse filtering operation for the entire\r
- * frame (160 samples of signal d[0..159]).  These parts produce at\r
- * the output of the coder:\r
- */\r
-\r
-       word    * LARc, /* [0..7] LAR coefficients              OUT     */\r
-\r
-/*\r
- * Procedure 4.2.11 to 4.2.18 are to be executed four times per\r
- * frame.  That means once for each sub-segment RPE-LTP analysis of\r
- * 40 samples.  These parts produce at the output of the coder:\r
- */\r
-\r
-       word    * Nc,   /* [0..3] LTP lag                       OUT     */\r
-       word    * bc,   /* [0..3] coded LTP gain                OUT     */\r
-       word    * Mc,   /* [0..3] RPE grid selection            OUT     */\r
-       word    * xmaxc,/* [0..3] Coded maximum amplitude       OUT     */\r
-       word    * xMc   /* [13*4] normalized RPE samples        OUT     */\r
-)\r
-{\r
-       int     k;\r
-       word    * dp  = S->dp0 + 120;   /* [ -120...-1 ] */\r
-       word    * dpp = dp;             /* [ 0...39 ]    */\r
-\r
-       static word e[50];\r
-\r
-       word    so[160];\r
-\r
-#if !(defined(__GNUC__) && defined(__i386__))\r
-       longword ltmp;\r
-#endif\r
-\r
-       Gsm_Preprocess                  (S, s, so);\r
-       Gsm_LPC_Analysis                (S, so, LARc);\r
-       Gsm_Short_Term_Analysis_Filter  (S, LARc, so);\r
-\r
-       for (k = 0; k <= 3; k++, xMc += 13) {\r
-\r
-               Gsm_Long_Term_Predictor ( S,\r
-                                        so+k*40, /* d      [0..39] IN  */\r
-                                        dp,      /* dp  [-120..-1] IN  */\r
-                                       e + 5,    /* e      [0..39] OUT */\r
-                                       dpp,      /* dpp    [0..39] OUT */\r
-                                        Nc++,\r
-                                        bc++);\r
-\r
-               Gsm_RPE_Encoding        ( S,\r
-                                       e + 5,  /* e      ][0..39][ IN/OUT */\r
-                                         xmaxc++, Mc++, xMc );\r
-               /*\r
-                * Gsm_Update_of_reconstructed_short_time_residual_signal\r
-                *                      ( dpp, e + 5, dp );\r
-                */\r
-\r
-               { register int i;\r
-                 for (i = 0; i <= 39; i++)\r
-                       dp[ i ] = GSM_ADD( e[5 + i], dpp[i] );\r
-               }\r
-               dp  += 40;\r
-               dpp += 40;\r
-\r
-       }\r
-       (void)memcpy( (char *)S->dp0, (char *)(S->dp0 + 160),\r
-               120 * sizeof(*S->dp0) );\r
-}\r
diff --git a/libs/codecs/gsm/src/debug.c b/libs/codecs/gsm/src/debug.c
deleted file mode 100644 (file)
index 031a7f8..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include "private.h"\r
-\r
-#ifndef        NDEBUG\r
-\r
-/* If NDEBUG _is_ defined and no debugging should be performed,\r
- * calls to functions in this module are #defined to nothing\r
- * in private.h.\r
- */\r
-\r
-#include <stdio.h>\r
-#include "proto.h"\r
-\r
-void gsm_debug_words P4( (name, from, to, ptr), \r
-       char          * name,\r
-       int             from,\r
-       int             to,\r
-       word            * ptr)\r
-{\r
-       int     nprinted = 0;\r
-\r
-       fprintf( stderr, "%s [%d .. %d]: ", name, from, to );\r
-       while (from <= to) {\r
-               fprintf(stderr, "%d ", ptr[ from ] );\r
-               from++;\r
-               if (nprinted++ >= 7) {\r
-                       nprinted = 0;\r
-                       if (from < to) putc('\n', stderr);\r
-               }\r
-       }\r
-       putc('\n', stderr);\r
-}\r
-\r
-void gsm_debug_longwords P4( (name, from, to, ptr),\r
-       char          * name,\r
-       int             from,\r
-       int             to,\r
-       longword      * ptr)\r
-{\r
-       int     nprinted = 0;\r
-\r
-       fprintf( stderr, "%s [%d .. %d]: ", name, from, to );\r
-       while (from <= to) {\r
-\r
-               fprintf(stderr, "%d ", ptr[ from ] );\r
-               from++;\r
-               if (nprinted++ >= 7) {\r
-                       nprinted = 0;\r
-                       if (from < to) putc('\n', stderr);\r
-               }\r
-       }\r
-       putc('\n', stderr);\r
-}\r
-\r
-void gsm_debug_longword P2(  (name, value),\r
-       char            * name,\r
-       longword          value )\r
-{\r
-       fprintf(stderr, "%s: %d\n", name, (long)value );\r
-}\r
-\r
-void gsm_debug_word P2(  (name, value),\r
-       char    * name,\r
-       word      value )\r
-{\r
-       fprintf(stderr, "%s: %d\n", name, (long)value);\r
-}\r
-\r
-#endif\r
diff --git a/libs/codecs/gsm/src/decode.c b/libs/codecs/gsm/src/decode.c
deleted file mode 100644 (file)
index 7039b5b..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include <stdio.h>\r
-\r
-#include       "private.h"\r
-#include       "gsm.h"\r
-#include       "proto.h"\r
-\r
-/*\r
- *  4.3 FIXED POINT IMPLEMENTATION OF THE RPE-LTP DECODER\r
- */\r
-\r
-static void Postprocessing P2((S,s),\r
-       struct gsm_state        * S,\r
-       register word           * s)\r
-{\r
-       register int            k;\r
-       register word           msr = S->msr;\r
-       register word           tmp;\r
-\r
-       for (k = 160; k--; s++) {\r
-               tmp = GSM_MULT_R( msr, 28180 );\r
-               msr = GSM_ADD(*s, tmp);            /* Deemphasis             */\r
-               *s  = GSM_ADD(msr, msr) & 0xFFF8;  /* Truncation & Upscaling */\r
-       }\r
-       S->msr = msr;\r
-}\r
-\r
-void Gsm_Decoder P8((S,LARcr, Ncr,bcr,Mcr,xmaxcr,xMcr,s),\r
-       struct gsm_state        * S,\r
-\r
-       word            * LARcr,        /* [0..7]               IN      */\r
-\r
-       word            * Ncr,          /* [0..3]               IN      */\r
-       word            * bcr,          /* [0..3]               IN      */\r
-       word            * Mcr,          /* [0..3]               IN      */\r
-       word            * xmaxcr,       /* [0..3]               IN      */\r
-       word            * xMcr,         /* [0..13*4]            IN      */\r
-\r
-       word            * s)            /* [0..159]             OUT     */\r
-{\r
-       int             j, k;\r
-       word            erp[40], wt[160];\r
-       word            * drp = S->dp0 + 120;\r
-\r
-       for (j=0; j <= 3; j++, xmaxcr++, bcr++, Ncr++, Mcr++, xMcr += 13) {\r
-\r
-               Gsm_RPE_Decoding( S, *xmaxcr, *Mcr, xMcr, erp );\r
-               Gsm_Long_Term_Synthesis_Filtering( S, *Ncr, *bcr, erp, drp );\r
-\r
-               for (k = 0; k <= 39; k++) wt[ j * 40 + k ] =  drp[ k ];\r
-       }\r
-\r
-       Gsm_Short_Term_Synthesis_Filter( S, LARcr, wt, s );\r
-       Postprocessing(S, s);\r
-}\r
diff --git a/libs/codecs/gsm/src/gsm_create.c b/libs/codecs/gsm/src/gsm_create.c
deleted file mode 100644 (file)
index 884549e..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-static char const      ident[] = "$Header$";\r
-\r
-#include       "config.h"\r
-\r
-#ifdef HAS_STRING_H\r
-#include       <string.h>\r
-#else\r
-#      include "proto.h"\r
-       extern char     * memset P((char *, int, int));\r
-#endif\r
-\r
-#ifdef HAS_STDLIB_H\r
-#      include <stdlib.h>\r
-#else\r
-#      ifdef   HAS_MALLOC_H\r
-#              include         <malloc.h>\r
-#      else\r
-               extern char * malloc();\r
-#      endif\r
-#endif\r
-\r
-#include <stdio.h>\r
-\r
-#include "gsm.h"\r
-#include "private.h"\r
-#include "proto.h"\r
-\r
-gsm gsm_create P0()\r
-{\r
-       gsm  r;\r
-\r
-       r = (gsm)malloc(sizeof(struct gsm_state));\r
-       if (!r) return r;\r
-\r
-       memset((char *)r, 0, sizeof(*r));\r
-       r->nrp = 40;\r
-\r
-       return r;\r
-}\r
diff --git a/libs/codecs/gsm/src/gsm_decode.c b/libs/codecs/gsm/src/gsm_decode.c
deleted file mode 100644 (file)
index 0fa6d3e..0000000
+++ /dev/null
@@ -1,361 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include "private.h"\r
-\r
-#include "gsm.h"\r
-#include "proto.h"\r
-\r
-int gsm_decode P3((s, c, target), gsm s, gsm_byte * c, gsm_signal * target)\r
-{\r
-       word    LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13*4];\r
-\r
-#ifdef WAV49\r
-       if (s->wav_fmt) {\r
-\r
-               uword sr = 0;\r
-\r
-               s->frame_index = !s->frame_index;\r
-               if (s->frame_index) {\r
-\r
-                       sr = *c++;\r
-                       LARc[0] = sr & 0x3f;  sr >>= 6;\r
-                       sr |= (uword)*c++ << 2;\r
-                       LARc[1] = sr & 0x3f;  sr >>= 6;\r
-                       sr |= (uword)*c++ << 4;\r
-                       LARc[2] = sr & 0x1f;  sr >>= 5;\r
-                       LARc[3] = sr & 0x1f;  sr >>= 5;\r
-                       sr |= (uword)*c++ << 2;\r
-                       LARc[4] = sr & 0xf;  sr >>= 4;\r
-                       LARc[5] = sr & 0xf;  sr >>= 4;\r
-                       sr |= (uword)*c++ << 2;                 /* 5 */\r
-                       LARc[6] = sr & 0x7;  sr >>= 3;\r
-                       LARc[7] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 4;\r
-                       Nc[0] = sr & 0x7f;  sr >>= 7;\r
-                       bc[0] = sr & 0x3;  sr >>= 2;\r
-                       Mc[0] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmaxc[0] = sr & 0x3f;  sr >>= 6;\r
-                       xmc[0] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[1] = sr & 0x7;  sr >>= 3;\r
-                       xmc[2] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[3] = sr & 0x7;  sr >>= 3;\r
-                       xmc[4] = sr & 0x7;  sr >>= 3;\r
-                       xmc[5] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;                 /* 10 */\r
-                       xmc[6] = sr & 0x7;  sr >>= 3;\r
-                       xmc[7] = sr & 0x7;  sr >>= 3;\r
-                       xmc[8] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[9] = sr & 0x7;  sr >>= 3;\r
-                       xmc[10] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[11] = sr & 0x7;  sr >>= 3;\r
-                       xmc[12] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 4;\r
-                       Nc[1] = sr & 0x7f;  sr >>= 7;\r
-                       bc[1] = sr & 0x3;  sr >>= 2;\r
-                       Mc[1] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmaxc[1] = sr & 0x3f;  sr >>= 6;\r
-                       xmc[13] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;                              /* 15 */\r
-                       xmc[14] = sr & 0x7;  sr >>= 3;\r
-                       xmc[15] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[16] = sr & 0x7;  sr >>= 3;\r
-                       xmc[17] = sr & 0x7;  sr >>= 3;\r
-                       xmc[18] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[19] = sr & 0x7;  sr >>= 3;\r
-                       xmc[20] = sr & 0x7;  sr >>= 3;\r
-                       xmc[21] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[22] = sr & 0x7;  sr >>= 3;\r
-                       xmc[23] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[24] = sr & 0x7;  sr >>= 3;\r
-                       xmc[25] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 4;                 /* 20 */\r
-                       Nc[2] = sr & 0x7f;  sr >>= 7;\r
-                       bc[2] = sr & 0x3;  sr >>= 2;\r
-                       Mc[2] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmaxc[2] = sr & 0x3f;  sr >>= 6;\r
-                       xmc[26] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[27] = sr & 0x7;  sr >>= 3;\r
-                       xmc[28] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[29] = sr & 0x7;  sr >>= 3;\r
-                       xmc[30] = sr & 0x7;  sr >>= 3;\r
-                       xmc[31] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[32] = sr & 0x7;  sr >>= 3;\r
-                       xmc[33] = sr & 0x7;  sr >>= 3;\r
-                       xmc[34] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;                              /* 25 */\r
-                       xmc[35] = sr & 0x7;  sr >>= 3;\r
-                       xmc[36] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[37] = sr & 0x7;  sr >>= 3;\r
-                       xmc[38] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 4;\r
-                       Nc[3] = sr & 0x7f;  sr >>= 7;\r
-                       bc[3] = sr & 0x3;  sr >>= 2;\r
-                       Mc[3] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmaxc[3] = sr & 0x3f;  sr >>= 6;\r
-                       xmc[39] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[40] = sr & 0x7;  sr >>= 3;\r
-                       xmc[41] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;                 /* 30 */\r
-                       xmc[42] = sr & 0x7;  sr >>= 3;\r
-                       xmc[43] = sr & 0x7;  sr >>= 3;\r
-                       xmc[44] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[45] = sr & 0x7;  sr >>= 3;\r
-                       xmc[46] = sr & 0x7;  sr >>= 3;\r
-                       xmc[47] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[48] = sr & 0x7;  sr >>= 3;\r
-                       xmc[49] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[50] = sr & 0x7;  sr >>= 3;\r
-                       xmc[51] = sr & 0x7;  sr >>= 3;\r
-\r
-                       s->frame_chain = sr & 0xf;\r
-               }\r
-               else {\r
-                       sr = s->frame_chain;\r
-                       sr |= (uword)*c++ << 4;                 /* 1 */\r
-                       LARc[0] = sr & 0x3f;  sr >>= 6;\r
-                       LARc[1] = sr & 0x3f;  sr >>= 6;\r
-                       sr = *c++;\r
-                       LARc[2] = sr & 0x1f;  sr >>= 5;\r
-                       sr |= (uword)*c++ << 3;\r
-                       LARc[3] = sr & 0x1f;  sr >>= 5;\r
-                       LARc[4] = sr & 0xf;  sr >>= 4;\r
-                       sr |= (uword)*c++ << 2;\r
-                       LARc[5] = sr & 0xf;  sr >>= 4;\r
-                       LARc[6] = sr & 0x7;  sr >>= 3;\r
-                       LARc[7] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;                              /* 5 */\r
-                       Nc[0] = sr & 0x7f;  sr >>= 7;\r
-                       sr |= (uword)*c++ << 1;\r
-                       bc[0] = sr & 0x3;  sr >>= 2;\r
-                       Mc[0] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 5;\r
-                       xmaxc[0] = sr & 0x3f;  sr >>= 6;\r
-                       xmc[0] = sr & 0x7;  sr >>= 3;\r
-                       xmc[1] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[2] = sr & 0x7;  sr >>= 3;\r
-                       xmc[3] = sr & 0x7;  sr >>= 3;\r
-                       xmc[4] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[5] = sr & 0x7;  sr >>= 3;\r
-                       xmc[6] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;                 /* 10 */\r
-                       xmc[7] = sr & 0x7;  sr >>= 3;\r
-                       xmc[8] = sr & 0x7;  sr >>= 3;\r
-                       xmc[9] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[10] = sr & 0x7;  sr >>= 3;\r
-                       xmc[11] = sr & 0x7;  sr >>= 3;\r
-                       xmc[12] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       Nc[1] = sr & 0x7f;  sr >>= 7;\r
-                       sr |= (uword)*c++ << 1;\r
-                       bc[1] = sr & 0x3;  sr >>= 2;\r
-                       Mc[1] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 5;\r
-                       xmaxc[1] = sr & 0x3f;  sr >>= 6;\r
-                       xmc[13] = sr & 0x7;  sr >>= 3;\r
-                       xmc[14] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;                 /* 15 */\r
-                       xmc[15] = sr & 0x7;  sr >>= 3;\r
-                       xmc[16] = sr & 0x7;  sr >>= 3;\r
-                       xmc[17] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[18] = sr & 0x7;  sr >>= 3;\r
-                       xmc[19] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[20] = sr & 0x7;  sr >>= 3;\r
-                       xmc[21] = sr & 0x7;  sr >>= 3;\r
-                       xmc[22] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[23] = sr & 0x7;  sr >>= 3;\r
-                       xmc[24] = sr & 0x7;  sr >>= 3;\r
-                       xmc[25] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       Nc[2] = sr & 0x7f;  sr >>= 7;\r
-                       sr |= (uword)*c++ << 1;                 /* 20 */\r
-                       bc[2] = sr & 0x3;  sr >>= 2;\r
-                       Mc[2] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 5;\r
-                       xmaxc[2] = sr & 0x3f;  sr >>= 6;\r
-                       xmc[26] = sr & 0x7;  sr >>= 3;\r
-                       xmc[27] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1; \r
-                       xmc[28] = sr & 0x7;  sr >>= 3;\r
-                       xmc[29] = sr & 0x7;  sr >>= 3;\r
-                       xmc[30] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[31] = sr & 0x7;  sr >>= 3;\r
-                       xmc[32] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[33] = sr & 0x7;  sr >>= 3;\r
-                       xmc[34] = sr & 0x7;  sr >>= 3;\r
-                       xmc[35] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;                 /* 25 */\r
-                       xmc[36] = sr & 0x7;  sr >>= 3;\r
-                       xmc[37] = sr & 0x7;  sr >>= 3;\r
-                       xmc[38] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       Nc[3] = sr & 0x7f;  sr >>= 7;\r
-                       sr |= (uword)*c++ << 1;         \r
-                       bc[3] = sr & 0x3;  sr >>= 2;\r
-                       Mc[3] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 5;\r
-                       xmaxc[3] = sr & 0x3f;  sr >>= 6;\r
-                       xmc[39] = sr & 0x7;  sr >>= 3;\r
-                       xmc[40] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[41] = sr & 0x7;  sr >>= 3;\r
-                       xmc[42] = sr & 0x7;  sr >>= 3;\r
-                       xmc[43] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;                              /* 30 */\r
-                       xmc[44] = sr & 0x7;  sr >>= 3;\r
-                       xmc[45] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[46] = sr & 0x7;  sr >>= 3;\r
-                       xmc[47] = sr & 0x7;  sr >>= 3;\r
-                       xmc[48] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[49] = sr & 0x7;  sr >>= 3;\r
-                       xmc[50] = sr & 0x7;  sr >>= 3;\r
-                       xmc[51] = sr & 0x7;  sr >>= 3;\r
-               }\r
-       }\r
-       else\r
-#endif\r
-       {\r
-               /* GSM_MAGIC  = (*c >> 4) & 0xF; */\r
-\r
-               if (((*c >> 4) & 0x0F) != GSM_MAGIC) return -1;\r
-\r
-               LARc[0]  = (*c++ & 0xF) << 2;           /* 1 */\r
-               LARc[0] |= (*c >> 6) & 0x3;\r
-               LARc[1]  = *c++ & 0x3F;\r
-               LARc[2]  = (*c >> 3) & 0x1F;\r
-               LARc[3]  = (*c++ & 0x7) << 2;\r
-               LARc[3] |= (*c >> 6) & 0x3;\r
-               LARc[4]  = (*c >> 2) & 0xF;\r
-               LARc[5]  = (*c++ & 0x3) << 2;\r
-               LARc[5] |= (*c >> 6) & 0x3;\r
-               LARc[6]  = (*c >> 3) & 0x7;\r
-               LARc[7]  = *c++ & 0x7;\r
-               Nc[0]  = (*c >> 1) & 0x7F;\r
-               bc[0]  = (*c++ & 0x1) << 1;\r
-               bc[0] |= (*c >> 7) & 0x1;\r
-               Mc[0]  = (*c >> 5) & 0x3;\r
-               xmaxc[0]  = (*c++ & 0x1F) << 1;\r
-               xmaxc[0] |= (*c >> 7) & 0x1;\r
-               xmc[0]  = (*c >> 4) & 0x7;\r
-               xmc[1]  = (*c >> 1) & 0x7;\r
-               xmc[2]  = (*c++ & 0x1) << 2;\r
-               xmc[2] |= (*c >> 6) & 0x3;\r
-               xmc[3]  = (*c >> 3) & 0x7;\r
-               xmc[4]  = *c++ & 0x7;\r
-               xmc[5]  = (*c >> 5) & 0x7;\r
-               xmc[6]  = (*c >> 2) & 0x7;\r
-               xmc[7]  = (*c++ & 0x3) << 1;            /* 10 */\r
-               xmc[7] |= (*c >> 7) & 0x1;\r
-               xmc[8]  = (*c >> 4) & 0x7;\r
-               xmc[9]  = (*c >> 1) & 0x7;\r
-               xmc[10]  = (*c++ & 0x1) << 2;\r
-               xmc[10] |= (*c >> 6) & 0x3;\r
-               xmc[11]  = (*c >> 3) & 0x7;\r
-               xmc[12]  = *c++ & 0x7;\r
-               Nc[1]  = (*c >> 1) & 0x7F;\r
-               bc[1]  = (*c++ & 0x1) << 1;\r
-               bc[1] |= (*c >> 7) & 0x1;\r
-               Mc[1]  = (*c >> 5) & 0x3;\r
-               xmaxc[1]  = (*c++ & 0x1F) << 1;\r
-               xmaxc[1] |= (*c >> 7) & 0x1;\r
-               xmc[13]  = (*c >> 4) & 0x7;\r
-               xmc[14]  = (*c >> 1) & 0x7;\r
-               xmc[15]  = (*c++ & 0x1) << 2;\r
-               xmc[15] |= (*c >> 6) & 0x3;\r
-               xmc[16]  = (*c >> 3) & 0x7;\r
-               xmc[17]  = *c++ & 0x7;\r
-               xmc[18]  = (*c >> 5) & 0x7;\r
-               xmc[19]  = (*c >> 2) & 0x7;\r
-               xmc[20]  = (*c++ & 0x3) << 1;\r
-               xmc[20] |= (*c >> 7) & 0x1;\r
-               xmc[21]  = (*c >> 4) & 0x7;\r
-               xmc[22]  = (*c >> 1) & 0x7;\r
-               xmc[23]  = (*c++ & 0x1) << 2;\r
-               xmc[23] |= (*c >> 6) & 0x3;\r
-               xmc[24]  = (*c >> 3) & 0x7;\r
-               xmc[25]  = *c++ & 0x7;\r
-               Nc[2]  = (*c >> 1) & 0x7F;\r
-               bc[2]  = (*c++ & 0x1) << 1;             /* 20 */\r
-               bc[2] |= (*c >> 7) & 0x1;\r
-               Mc[2]  = (*c >> 5) & 0x3;\r
-               xmaxc[2]  = (*c++ & 0x1F) << 1;\r
-               xmaxc[2] |= (*c >> 7) & 0x1;\r
-               xmc[26]  = (*c >> 4) & 0x7;\r
-               xmc[27]  = (*c >> 1) & 0x7;\r
-               xmc[28]  = (*c++ & 0x1) << 2;\r
-               xmc[28] |= (*c >> 6) & 0x3;\r
-               xmc[29]  = (*c >> 3) & 0x7;\r
-               xmc[30]  = *c++ & 0x7;\r
-               xmc[31]  = (*c >> 5) & 0x7;\r
-               xmc[32]  = (*c >> 2) & 0x7;\r
-               xmc[33]  = (*c++ & 0x3) << 1;\r
-               xmc[33] |= (*c >> 7) & 0x1;\r
-               xmc[34]  = (*c >> 4) & 0x7;\r
-               xmc[35]  = (*c >> 1) & 0x7;\r
-               xmc[36]  = (*c++ & 0x1) << 2;\r
-               xmc[36] |= (*c >> 6) & 0x3;\r
-               xmc[37]  = (*c >> 3) & 0x7;\r
-               xmc[38]  = *c++ & 0x7;\r
-               Nc[3]  = (*c >> 1) & 0x7F;\r
-               bc[3]  = (*c++ & 0x1) << 1;\r
-               bc[3] |= (*c >> 7) & 0x1;\r
-               Mc[3]  = (*c >> 5) & 0x3;\r
-               xmaxc[3]  = (*c++ & 0x1F) << 1;\r
-               xmaxc[3] |= (*c >> 7) & 0x1;\r
-               xmc[39]  = (*c >> 4) & 0x7;\r
-               xmc[40]  = (*c >> 1) & 0x7;\r
-               xmc[41]  = (*c++ & 0x1) << 2;\r
-               xmc[41] |= (*c >> 6) & 0x3;\r
-               xmc[42]  = (*c >> 3) & 0x7;\r
-               xmc[43]  = *c++ & 0x7;                  /* 30  */\r
-               xmc[44]  = (*c >> 5) & 0x7;\r
-               xmc[45]  = (*c >> 2) & 0x7;\r
-               xmc[46]  = (*c++ & 0x3) << 1;\r
-               xmc[46] |= (*c >> 7) & 0x1;\r
-               xmc[47]  = (*c >> 4) & 0x7;\r
-               xmc[48]  = (*c >> 1) & 0x7;\r
-               xmc[49]  = (*c++ & 0x1) << 2;\r
-               xmc[49] |= (*c >> 6) & 0x3;\r
-               xmc[50]  = (*c >> 3) & 0x7;\r
-               xmc[51]  = *c & 0x7;                    /* 33 */\r
-       }\r
-\r
-       Gsm_Decoder(s, LARc, Nc, bc, Mc, xmaxc, xmc, target);\r
-\r
-       return 0;\r
-}\r
diff --git a/libs/codecs/gsm/src/gsm_destroy.c b/libs/codecs/gsm/src/gsm_destroy.c
deleted file mode 100644 (file)
index a92c006..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include "gsm.h"\r
-#include "config.h"\r
-#include "proto.h"\r
-\r
-#ifdef HAS_STDLIB_H\r
-#      include <stdlib.h>\r
-#else\r
-#      ifdef   HAS_MALLOC_H\r
-#              include         <malloc.h>\r
-#      else\r
-               extern void free();\r
-#      endif\r
-#endif\r
-\r
-void gsm_destroy P1((S), gsm S)\r
-{\r
-       if (S) free((char *)S);\r
-}\r
diff --git a/libs/codecs/gsm/src/gsm_encode.c b/libs/codecs/gsm/src/gsm_encode.c
deleted file mode 100644 (file)
index 4a2392e..0000000
+++ /dev/null
@@ -1,451 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include "private.h"\r
-#include "gsm.h"\r
-#include "proto.h"\r
-\r
-void gsm_encode P3((s, source, c), gsm s, gsm_signal * source, gsm_byte * c)\r
-{\r
-       word            LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13*4];\r
-\r
-       Gsm_Coder(s, source, LARc, Nc, bc, Mc, xmaxc, xmc);\r
-\r
-\r
-       /*      variable        size\r
-\r
-               GSM_MAGIC       4\r
-\r
-               LARc[0]         6\r
-               LARc[1]         6\r
-               LARc[2]         5\r
-               LARc[3]         5\r
-               LARc[4]         4\r
-               LARc[5]         4\r
-               LARc[6]         3\r
-               LARc[7]         3\r
-\r
-               Nc[0]           7\r
-               bc[0]           2\r
-               Mc[0]           2\r
-               xmaxc[0]        6\r
-               xmc[0]          3\r
-               xmc[1]          3\r
-               xmc[2]          3\r
-               xmc[3]          3\r
-               xmc[4]          3\r
-               xmc[5]          3\r
-               xmc[6]          3\r
-               xmc[7]          3\r
-               xmc[8]          3\r
-               xmc[9]          3\r
-               xmc[10]         3\r
-               xmc[11]         3\r
-               xmc[12]         3\r
-\r
-               Nc[1]           7\r
-               bc[1]           2\r
-               Mc[1]           2\r
-               xmaxc[1]        6\r
-               xmc[13]         3\r
-               xmc[14]         3\r
-               xmc[15]         3\r
-               xmc[16]         3\r
-               xmc[17]         3\r
-               xmc[18]         3\r
-               xmc[19]         3\r
-               xmc[20]         3\r
-               xmc[21]         3\r
-               xmc[22]         3\r
-               xmc[23]         3\r
-               xmc[24]         3\r
-               xmc[25]         3\r
-\r
-               Nc[2]           7\r
-               bc[2]           2\r
-               Mc[2]           2\r
-               xmaxc[2]        6\r
-               xmc[26]         3\r
-               xmc[27]         3\r
-               xmc[28]         3\r
-               xmc[29]         3\r
-               xmc[30]         3\r
-               xmc[31]         3\r
-               xmc[32]         3\r
-               xmc[33]         3\r
-               xmc[34]         3\r
-               xmc[35]         3\r
-               xmc[36]         3\r
-               xmc[37]         3\r
-               xmc[38]         3\r
-\r
-               Nc[3]           7\r
-               bc[3]           2\r
-               Mc[3]           2\r
-               xmaxc[3]        6\r
-               xmc[39]         3\r
-               xmc[40]         3\r
-               xmc[41]         3\r
-               xmc[42]         3\r
-               xmc[43]         3\r
-               xmc[44]         3\r
-               xmc[45]         3\r
-               xmc[46]         3\r
-               xmc[47]         3\r
-               xmc[48]         3\r
-               xmc[49]         3\r
-               xmc[50]         3\r
-               xmc[51]         3\r
-       */\r
-\r
-#ifdef WAV49\r
-\r
-       if (s->wav_fmt) {\r
-               s->frame_index = !s->frame_index;\r
-               if (s->frame_index) {\r
-\r
-                       uword sr;\r
-\r
-                       sr = 0;\r
-                       sr = sr >> 6 | LARc[0] << 10;\r
-                       sr = sr >> 6 | LARc[1] << 10;\r
-                       *c++ = sr >> 4;\r
-                       sr = sr >> 5 | LARc[2] << 11;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 5 | LARc[3] << 11;\r
-                       sr = sr >> 4 | LARc[4] << 12;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 4 | LARc[5] << 12;\r
-                       sr = sr >> 3 | LARc[6] << 13;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | LARc[7] << 13;\r
-                       sr = sr >> 7 | Nc[0] << 9;\r
-                       *c++ = sr >> 5;\r
-                       sr = sr >> 2 | bc[0] << 14;\r
-                       sr = sr >> 2 | Mc[0] << 14;\r
-                       sr = sr >> 6 | xmaxc[0] << 10;\r
-                       *c++ = sr >> 3;\r
-                       sr = sr >> 3 | xmc[0] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 3 | xmc[1] << 13;\r
-                       sr = sr >> 3 | xmc[2] << 13;\r
-                       sr = sr >> 3 | xmc[3] << 13;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[4] << 13;\r
-                       sr = sr >> 3 | xmc[5] << 13;\r
-                       sr = sr >> 3 | xmc[6] << 13;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 3 | xmc[7] << 13;\r
-                       sr = sr >> 3 | xmc[8] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 3 | xmc[9] << 13;\r
-                       sr = sr >> 3 | xmc[10] << 13;\r
-                       sr = sr >> 3 | xmc[11] << 13;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[12] << 13;\r
-                       sr = sr >> 7 | Nc[1] << 9;\r
-                       *c++ = sr >> 5;\r
-                       sr = sr >> 2 | bc[1] << 14;\r
-                       sr = sr >> 2 | Mc[1] << 14;\r
-                       sr = sr >> 6 | xmaxc[1] << 10;\r
-                       *c++ = sr >> 3;\r
-                       sr = sr >> 3 | xmc[13] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 3 | xmc[14] << 13;\r
-                       sr = sr >> 3 | xmc[15] << 13;\r
-                       sr = sr >> 3 | xmc[16] << 13;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[17] << 13;\r
-                       sr = sr >> 3 | xmc[18] << 13;\r
-                       sr = sr >> 3 | xmc[19] << 13;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 3 | xmc[20] << 13;\r
-                       sr = sr >> 3 | xmc[21] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 3 | xmc[22] << 13;\r
-                       sr = sr >> 3 | xmc[23] << 13;\r
-                       sr = sr >> 3 | xmc[24] << 13;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[25] << 13;\r
-                       sr = sr >> 7 | Nc[2] << 9;\r
-                       *c++ = sr >> 5;\r
-                       sr = sr >> 2 | bc[2] << 14;\r
-                       sr = sr >> 2 | Mc[2] << 14;\r
-                       sr = sr >> 6 | xmaxc[2] << 10;\r
-                       *c++ = sr >> 3;\r
-                       sr = sr >> 3 | xmc[26] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 3 | xmc[27] << 13;\r
-                       sr = sr >> 3 | xmc[28] << 13;\r
-                       sr = sr >> 3 | xmc[29] << 13;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[30] << 13;\r
-                       sr = sr >> 3 | xmc[31] << 13;\r
-                       sr = sr >> 3 | xmc[32] << 13;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 3 | xmc[33] << 13;\r
-                       sr = sr >> 3 | xmc[34] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 3 | xmc[35] << 13;\r
-                       sr = sr >> 3 | xmc[36] << 13;\r
-                       sr = sr >> 3 | xmc[37] << 13;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[38] << 13;\r
-                       sr = sr >> 7 | Nc[3] << 9;\r
-                       *c++ = sr >> 5;\r
-                       sr = sr >> 2 | bc[3] << 14;\r
-                       sr = sr >> 2 | Mc[3] << 14;\r
-                       sr = sr >> 6 | xmaxc[3] << 10;\r
-                       *c++ = sr >> 3;\r
-                       sr = sr >> 3 | xmc[39] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 3 | xmc[40] << 13;\r
-                       sr = sr >> 3 | xmc[41] << 13;\r
-                       sr = sr >> 3 | xmc[42] << 13;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[43] << 13;\r
-                       sr = sr >> 3 | xmc[44] << 13;\r
-                       sr = sr >> 3 | xmc[45] << 13;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 3 | xmc[46] << 13;\r
-                       sr = sr >> 3 | xmc[47] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 3 | xmc[48] << 13;\r
-                       sr = sr >> 3 | xmc[49] << 13;\r
-                       sr = sr >> 3 | xmc[50] << 13;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[51] << 13;\r
-                       sr = sr >> 4;\r
-                       *c = sr >> 8;\r
-                       s->frame_chain = *c;\r
-               }\r
-               else {\r
-                       uword sr;\r
-\r
-                       sr = 0;\r
-                       sr = sr >> 4 | s->frame_chain << 12;\r
-                       sr = sr >> 6 | LARc[0] << 10;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 6 | LARc[1] << 10;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 5 | LARc[2] << 11;\r
-                       sr = sr >> 5 | LARc[3] << 11;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 4 | LARc[4] << 12;\r
-                       sr = sr >> 4 | LARc[5] << 12;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 3 | LARc[6] << 13;\r
-                       sr = sr >> 3 | LARc[7] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 7 | Nc[0] << 9;\r
-                       sr = sr >> 2 | bc[0] << 14;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 2 | Mc[0] << 14;\r
-                       sr = sr >> 6 | xmaxc[0] << 10;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[0] << 13;\r
-                       sr = sr >> 3 | xmc[1] << 13;\r
-                       sr = sr >> 3 | xmc[2] << 13;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 3 | xmc[3] << 13;\r
-                       sr = sr >> 3 | xmc[4] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 3 | xmc[5] << 13;\r
-                       sr = sr >> 3 | xmc[6] << 13;\r
-                       sr = sr >> 3 | xmc[7] << 13;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[8] << 13;\r
-                       sr = sr >> 3 | xmc[9] << 13;\r
-                       sr = sr >> 3 | xmc[10] << 13;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 3 | xmc[11] << 13;\r
-                       sr = sr >> 3 | xmc[12] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 7 | Nc[1] << 9;\r
-                       sr = sr >> 2 | bc[1] << 14;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 2 | Mc[1] << 14;\r
-                       sr = sr >> 6 | xmaxc[1] << 10;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[13] << 13;\r
-                       sr = sr >> 3 | xmc[14] << 13;\r
-                       sr = sr >> 3 | xmc[15] << 13;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 3 | xmc[16] << 13;\r
-                       sr = sr >> 3 | xmc[17] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 3 | xmc[18] << 13;\r
-                       sr = sr >> 3 | xmc[19] << 13;\r
-                       sr = sr >> 3 | xmc[20] << 13;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[21] << 13;\r
-                       sr = sr >> 3 | xmc[22] << 13;\r
-                       sr = sr >> 3 | xmc[23] << 13;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 3 | xmc[24] << 13;\r
-                       sr = sr >> 3 | xmc[25] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 7 | Nc[2] << 9;\r
-                       sr = sr >> 2 | bc[2] << 14;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 2 | Mc[2] << 14;\r
-                       sr = sr >> 6 | xmaxc[2] << 10;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[26] << 13;\r
-                       sr = sr >> 3 | xmc[27] << 13;\r
-                       sr = sr >> 3 | xmc[28] << 13;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 3 | xmc[29] << 13;\r
-                       sr = sr >> 3 | xmc[30] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 3 | xmc[31] << 13;\r
-                       sr = sr >> 3 | xmc[32] << 13;\r
-                       sr = sr >> 3 | xmc[33] << 13;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[34] << 13;\r
-                       sr = sr >> 3 | xmc[35] << 13;\r
-                       sr = sr >> 3 | xmc[36] << 13;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 3 | xmc[37] << 13;\r
-                       sr = sr >> 3 | xmc[38] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 7 | Nc[3] << 9;\r
-                       sr = sr >> 2 | bc[3] << 14;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 2 | Mc[3] << 14;\r
-                       sr = sr >> 6 | xmaxc[3] << 10;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[39] << 13;\r
-                       sr = sr >> 3 | xmc[40] << 13;\r
-                       sr = sr >> 3 | xmc[41] << 13;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 3 | xmc[42] << 13;\r
-                       sr = sr >> 3 | xmc[43] << 13;\r
-                       *c++ = sr >> 8;\r
-                       sr = sr >> 3 | xmc[44] << 13;\r
-                       sr = sr >> 3 | xmc[45] << 13;\r
-                       sr = sr >> 3 | xmc[46] << 13;\r
-                       *c++ = sr >> 7;\r
-                       sr = sr >> 3 | xmc[47] << 13;\r
-                       sr = sr >> 3 | xmc[48] << 13;\r
-                       sr = sr >> 3 | xmc[49] << 13;\r
-                       *c++ = sr >> 6;\r
-                       sr = sr >> 3 | xmc[50] << 13;\r
-                       sr = sr >> 3 | xmc[51] << 13;\r
-                       *c++ = sr >> 8;\r
-               }\r
-       }\r
-\r
-       else\r
-\r
-#endif /* WAV49 */\r
-       {\r
-\r
-               *c++ =   ((GSM_MAGIC & 0xF) << 4)               /* 1 */\r
-                      | ((LARc[0] >> 2) & 0xF);\r
-               *c++ =   ((LARc[0] & 0x3) << 6)\r
-                      | (LARc[1] & 0x3F);\r
-               *c++ =   ((LARc[2] & 0x1F) << 3)\r
-                      | ((LARc[3] >> 2) & 0x7);\r
-               *c++ =   ((LARc[3] & 0x3) << 6)\r
-                      | ((LARc[4] & 0xF) << 2)\r
-                      | ((LARc[5] >> 2) & 0x3);\r
-               *c++ =   ((LARc[5] & 0x3) << 6)\r
-                      | ((LARc[6] & 0x7) << 3)\r
-                      | (LARc[7] & 0x7);\r
-               *c++ =   ((Nc[0] & 0x7F) << 1)\r
-                      | ((bc[0] >> 1) & 0x1);\r
-               *c++ =   ((bc[0] & 0x1) << 7)\r
-                      | ((Mc[0] & 0x3) << 5)\r
-                      | ((xmaxc[0] >> 1) & 0x1F);\r
-               *c++ =   ((xmaxc[0] & 0x1) << 7)\r
-                      | ((xmc[0] & 0x7) << 4)\r
-                      | ((xmc[1] & 0x7) << 1)\r
-                      | ((xmc[2] >> 2) & 0x1);\r
-               *c++ =   ((xmc[2] & 0x3) << 6)\r
-                      | ((xmc[3] & 0x7) << 3)\r
-                      | (xmc[4] & 0x7);\r
-               *c++ =   ((xmc[5] & 0x7) << 5)                  /* 10 */\r
-                      | ((xmc[6] & 0x7) << 2)\r
-                      | ((xmc[7] >> 1) & 0x3);\r
-               *c++ =   ((xmc[7] & 0x1) << 7)\r
-                      | ((xmc[8] & 0x7) << 4)\r
-                      | ((xmc[9] & 0x7) << 1)\r
-                      | ((xmc[10] >> 2) & 0x1);\r
-               *c++ =   ((xmc[10] & 0x3) << 6)\r
-                      | ((xmc[11] & 0x7) << 3)\r
-                      | (xmc[12] & 0x7);\r
-               *c++ =   ((Nc[1] & 0x7F) << 1)\r
-                      | ((bc[1] >> 1) & 0x1);\r
-               *c++ =   ((bc[1] & 0x1) << 7)\r
-                      | ((Mc[1] & 0x3) << 5)\r
-                      | ((xmaxc[1] >> 1) & 0x1F);\r
-               *c++ =   ((xmaxc[1] & 0x1) << 7)\r
-                      | ((xmc[13] & 0x7) << 4)\r
-                      | ((xmc[14] & 0x7) << 1)\r
-                      | ((xmc[15] >> 2) & 0x1);\r
-               *c++ =   ((xmc[15] & 0x3) << 6)\r
-                      | ((xmc[16] & 0x7) << 3)\r
-                      | (xmc[17] & 0x7);\r
-               *c++ =   ((xmc[18] & 0x7) << 5)\r
-                      | ((xmc[19] & 0x7) << 2)\r
-                      | ((xmc[20] >> 1) & 0x3);\r
-               *c++ =   ((xmc[20] & 0x1) << 7)\r
-                      | ((xmc[21] & 0x7) << 4)\r
-                      | ((xmc[22] & 0x7) << 1)\r
-                      | ((xmc[23] >> 2) & 0x1);\r
-               *c++ =   ((xmc[23] & 0x3) << 6)\r
-                      | ((xmc[24] & 0x7) << 3)\r
-                      | (xmc[25] & 0x7);\r
-               *c++ =   ((Nc[2] & 0x7F) << 1)                  /* 20 */\r
-                      | ((bc[2] >> 1) & 0x1);\r
-               *c++ =   ((bc[2] & 0x1) << 7)\r
-                      | ((Mc[2] & 0x3) << 5)\r
-                      | ((xmaxc[2] >> 1) & 0x1F);\r
-               *c++ =   ((xmaxc[2] & 0x1) << 7)\r
-                      | ((xmc[26] & 0x7) << 4)\r
-                      | ((xmc[27] & 0x7) << 1)\r
-                      | ((xmc[28] >> 2) & 0x1);\r
-               *c++ =   ((xmc[28] & 0x3) << 6)\r
-                      | ((xmc[29] & 0x7) << 3)\r
-                      | (xmc[30] & 0x7);\r
-               *c++ =   ((xmc[31] & 0x7) << 5)\r
-                      | ((xmc[32] & 0x7) << 2)\r
-                      | ((xmc[33] >> 1) & 0x3);\r
-               *c++ =   ((xmc[33] & 0x1) << 7)\r
-                      | ((xmc[34] & 0x7) << 4)\r
-                      | ((xmc[35] & 0x7) << 1)\r
-                      | ((xmc[36] >> 2) & 0x1);\r
-               *c++ =   ((xmc[36] & 0x3) << 6)\r
-                      | ((xmc[37] & 0x7) << 3)\r
-                      | (xmc[38] & 0x7);\r
-               *c++ =   ((Nc[3] & 0x7F) << 1)\r
-                      | ((bc[3] >> 1) & 0x1);\r
-               *c++ =   ((bc[3] & 0x1) << 7)\r
-                      | ((Mc[3] & 0x3) << 5)\r
-                      | ((xmaxc[3] >> 1) & 0x1F);\r
-               *c++ =   ((xmaxc[3] & 0x1) << 7)\r
-                      | ((xmc[39] & 0x7) << 4)\r
-                      | ((xmc[40] & 0x7) << 1)\r
-                      | ((xmc[41] >> 2) & 0x1);\r
-               *c++ =   ((xmc[41] & 0x3) << 6)                 /* 30 */\r
-                      | ((xmc[42] & 0x7) << 3)\r
-                      | (xmc[43] & 0x7);\r
-               *c++ =   ((xmc[44] & 0x7) << 5)\r
-                      | ((xmc[45] & 0x7) << 2)\r
-                      | ((xmc[46] >> 1) & 0x3);\r
-               *c++ =   ((xmc[46] & 0x1) << 7)\r
-                      | ((xmc[47] & 0x7) << 4)\r
-                      | ((xmc[48] & 0x7) << 1)\r
-                      | ((xmc[49] >> 2) & 0x1);\r
-               *c++ =   ((xmc[49] & 0x3) << 6)\r
-                      | ((xmc[50] & 0x7) << 3)\r
-                      | (xmc[51] & 0x7);\r
-\r
-       }\r
-}\r
diff --git a/libs/codecs/gsm/src/gsm_explode.c b/libs/codecs/gsm/src/gsm_explode.c
deleted file mode 100644 (file)
index 9c831a7..0000000
+++ /dev/null
@@ -1,417 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include "private.h"\r
-#include "gsm.h"\r
-#include "proto.h"\r
-\r
-int gsm_explode P3((s, c, target), gsm s, gsm_byte * c, gsm_signal * target)\r
-{\r
-#      define  LARc    target\r
-#      define  Nc      *((gsm_signal (*) [17])(target + 8))\r
-#      define  bc      *((gsm_signal (*) [17])(target + 9))\r
-#      define  Mc      *((gsm_signal (*) [17])(target + 10))\r
-#      define  xmaxc   *((gsm_signal (*) [17])(target + 11))\r
-\r
-\r
-#ifdef WAV49\r
-       if (s->wav_fmt) {\r
-\r
-               uword sr = 0;\r
-\r
-               if (s->frame_index == 1) {\r
-\r
-                       sr = *c++;\r
-                       LARc[0] = sr & 0x3f;  sr >>= 6;\r
-                       sr |= (uword)*c++ << 2;\r
-                       LARc[1] = sr & 0x3f;  sr >>= 6;\r
-                       sr |= (uword)*c++ << 4;\r
-                       LARc[2] = sr & 0x1f;  sr >>= 5;\r
-                       LARc[3] = sr & 0x1f;  sr >>= 5;\r
-                       sr |= (uword)*c++ << 2;\r
-                       LARc[4] = sr & 0xf;  sr >>= 4;\r
-                       LARc[5] = sr & 0xf;  sr >>= 4;\r
-                       sr |= (uword)*c++ << 2;                 /* 5 */\r
-                       LARc[6] = sr & 0x7;  sr >>= 3;\r
-                       LARc[7] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 4;\r
-                       Nc[0] = sr & 0x7f;  sr >>= 7;\r
-                       bc[0] = sr & 0x3;  sr >>= 2;\r
-                       Mc[0] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmaxc[0] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (target + 12)\r
-                       xmc[0] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[1] = sr & 0x7;  sr >>= 3;\r
-                       xmc[2] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[3] = sr & 0x7;  sr >>= 3;\r
-                       xmc[4] = sr & 0x7;  sr >>= 3;\r
-                       xmc[5] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;                 /* 10 */\r
-                       xmc[6] = sr & 0x7;  sr >>= 3;\r
-                       xmc[7] = sr & 0x7;  sr >>= 3;\r
-                       xmc[8] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[9] = sr & 0x7;  sr >>= 3;\r
-                       xmc[10] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[11] = sr & 0x7;  sr >>= 3;\r
-                       xmc[12] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 4;\r
-                       Nc[1] = sr & 0x7f;  sr >>= 7;\r
-                       bc[1] = sr & 0x3;  sr >>= 2;\r
-                       Mc[1] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmaxc[1] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (target + 29 - 13)\r
-\r
-                       xmc[13] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;                              /* 15 */\r
-                       xmc[14] = sr & 0x7;  sr >>= 3;\r
-                       xmc[15] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[16] = sr & 0x7;  sr >>= 3;\r
-                       xmc[17] = sr & 0x7;  sr >>= 3;\r
-                       xmc[18] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[19] = sr & 0x7;  sr >>= 3;\r
-                       xmc[20] = sr & 0x7;  sr >>= 3;\r
-                       xmc[21] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[22] = sr & 0x7;  sr >>= 3;\r
-                       xmc[23] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[24] = sr & 0x7;  sr >>= 3;\r
-                       xmc[25] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 4;                 /* 20 */\r
-                       Nc[2] = sr & 0x7f;  sr >>= 7;\r
-                       bc[2] = sr & 0x3;  sr >>= 2;\r
-                       Mc[2] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmaxc[2] = sr & 0x3f;  sr >>= 6;\r
-\r
-#undef xmc\r
-#define        xmc     (target + 46 - 26)\r
-\r
-                       xmc[26] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[27] = sr & 0x7;  sr >>= 3;\r
-                       xmc[28] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[29] = sr & 0x7;  sr >>= 3;\r
-                       xmc[30] = sr & 0x7;  sr >>= 3;\r
-                       xmc[31] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[32] = sr & 0x7;  sr >>= 3;\r
-                       xmc[33] = sr & 0x7;  sr >>= 3;\r
-                       xmc[34] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;                              /* 25 */\r
-                       xmc[35] = sr & 0x7;  sr >>= 3;\r
-                       xmc[36] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[37] = sr & 0x7;  sr >>= 3;\r
-                       xmc[38] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 4;\r
-                       Nc[3] = sr & 0x7f;  sr >>= 7;\r
-                       bc[3] = sr & 0x3;  sr >>= 2;\r
-                       Mc[3] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmaxc[3] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (target + 63 - 39)\r
-\r
-                       xmc[39] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[40] = sr & 0x7;  sr >>= 3;\r
-                       xmc[41] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;                 /* 30 */\r
-                       xmc[42] = sr & 0x7;  sr >>= 3;\r
-                       xmc[43] = sr & 0x7;  sr >>= 3;\r
-                       xmc[44] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[45] = sr & 0x7;  sr >>= 3;\r
-                       xmc[46] = sr & 0x7;  sr >>= 3;\r
-                       xmc[47] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[48] = sr & 0x7;  sr >>= 3;\r
-                       xmc[49] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[50] = sr & 0x7;  sr >>= 3;\r
-                       xmc[51] = sr & 0x7;  sr >>= 3;\r
-\r
-                       s->frame_chain = sr & 0xf;\r
-               }\r
-               else {\r
-                       sr = s->frame_chain;\r
-                       sr |= (uword)*c++ << 4;                 /* 1 */\r
-                       LARc[0] = sr & 0x3f;  sr >>= 6;\r
-                       LARc[1] = sr & 0x3f;  sr >>= 6;\r
-                       sr = *c++;\r
-                       LARc[2] = sr & 0x1f;  sr >>= 5;\r
-                       sr |= (uword)*c++ << 3;\r
-                       LARc[3] = sr & 0x1f;  sr >>= 5;\r
-                       LARc[4] = sr & 0xf;  sr >>= 4;\r
-                       sr |= (uword)*c++ << 2;\r
-                       LARc[5] = sr & 0xf;  sr >>= 4;\r
-                       LARc[6] = sr & 0x7;  sr >>= 3;\r
-                       LARc[7] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;                              /* 5 */\r
-                       Nc[0] = sr & 0x7f;  sr >>= 7;\r
-                       sr |= (uword)*c++ << 1;\r
-                       bc[0] = sr & 0x3;  sr >>= 2;\r
-                       Mc[0] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 5;\r
-                       xmaxc[0] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (target + 12)\r
-                       xmc[0] = sr & 0x7;  sr >>= 3;\r
-                       xmc[1] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[2] = sr & 0x7;  sr >>= 3;\r
-                       xmc[3] = sr & 0x7;  sr >>= 3;\r
-                       xmc[4] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[5] = sr & 0x7;  sr >>= 3;\r
-                       xmc[6] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;                 /* 10 */\r
-                       xmc[7] = sr & 0x7;  sr >>= 3;\r
-                       xmc[8] = sr & 0x7;  sr >>= 3;\r
-                       xmc[9] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[10] = sr & 0x7;  sr >>= 3;\r
-                       xmc[11] = sr & 0x7;  sr >>= 3;\r
-                       xmc[12] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       Nc[1] = sr & 0x7f;  sr >>= 7;\r
-                       sr |= (uword)*c++ << 1;\r
-                       bc[1] = sr & 0x3;  sr >>= 2;\r
-                       Mc[1] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 5;\r
-                       xmaxc[1] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (target + 29 - 13)\r
-\r
-                       xmc[13] = sr & 0x7;  sr >>= 3;\r
-                       xmc[14] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;                 /* 15 */\r
-                       xmc[15] = sr & 0x7;  sr >>= 3;\r
-                       xmc[16] = sr & 0x7;  sr >>= 3;\r
-                       xmc[17] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[18] = sr & 0x7;  sr >>= 3;\r
-                       xmc[19] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[20] = sr & 0x7;  sr >>= 3;\r
-                       xmc[21] = sr & 0x7;  sr >>= 3;\r
-                       xmc[22] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[23] = sr & 0x7;  sr >>= 3;\r
-                       xmc[24] = sr & 0x7;  sr >>= 3;\r
-                       xmc[25] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       Nc[2] = sr & 0x7f;  sr >>= 7;\r
-                       sr |= (uword)*c++ << 1;                 /* 20 */\r
-                       bc[2] = sr & 0x3;  sr >>= 2;\r
-                       Mc[2] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 5;\r
-                       xmaxc[2] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (target + 46 - 26)\r
-                       xmc[26] = sr & 0x7;  sr >>= 3;\r
-                       xmc[27] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1; \r
-                       xmc[28] = sr & 0x7;  sr >>= 3;\r
-                       xmc[29] = sr & 0x7;  sr >>= 3;\r
-                       xmc[30] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[31] = sr & 0x7;  sr >>= 3;\r
-                       xmc[32] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[33] = sr & 0x7;  sr >>= 3;\r
-                       xmc[34] = sr & 0x7;  sr >>= 3;\r
-                       xmc[35] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;                 /* 25 */\r
-                       xmc[36] = sr & 0x7;  sr >>= 3;\r
-                       xmc[37] = sr & 0x7;  sr >>= 3;\r
-                       xmc[38] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       Nc[3] = sr & 0x7f;  sr >>= 7;\r
-                       sr |= (uword)*c++ << 1;         \r
-                       bc[3] = sr & 0x3;  sr >>= 2;\r
-                       Mc[3] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 5;\r
-                       xmaxc[3] = sr & 0x3f;  sr >>= 6;\r
-\r
-#undef xmc\r
-#define        xmc     (target + 63 - 39)\r
-\r
-                       xmc[39] = sr & 0x7;  sr >>= 3;\r
-                       xmc[40] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[41] = sr & 0x7;  sr >>= 3;\r
-                       xmc[42] = sr & 0x7;  sr >>= 3;\r
-                       xmc[43] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;                              /* 30 */\r
-                       xmc[44] = sr & 0x7;  sr >>= 3;\r
-                       xmc[45] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[46] = sr & 0x7;  sr >>= 3;\r
-                       xmc[47] = sr & 0x7;  sr >>= 3;\r
-                       xmc[48] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[49] = sr & 0x7;  sr >>= 3;\r
-                       xmc[50] = sr & 0x7;  sr >>= 3;\r
-                       xmc[51] = sr & 0x7;  sr >>= 3;\r
-               }\r
-       }\r
-       else \r
-#endif\r
-       {\r
-       /* GSM_MAGIC  = (*c >> 4) & 0xF; */\r
-\r
-       if (((*c >> 4) & 0x0F) != GSM_MAGIC) return -1;\r
-\r
-       LARc[0]  = (*c++ & 0xF) << 2;           /* 1 */\r
-       LARc[0] |= (*c >> 6) & 0x3;\r
-       LARc[1]  = *c++ & 0x3F;\r
-       LARc[2]  = (*c >> 3) & 0x1F;\r
-       LARc[3]  = (*c++ & 0x7) << 2;\r
-       LARc[3] |= (*c >> 6) & 0x3;\r
-       LARc[4]  = (*c >> 2) & 0xF;\r
-       LARc[5]  = (*c++ & 0x3) << 2;\r
-       LARc[5] |= (*c >> 6) & 0x3;\r
-       LARc[6]  = (*c >> 3) & 0x7;\r
-       LARc[7]  = *c++ & 0x7;\r
-\r
-       Nc[0]  = (*c >> 1) & 0x7F;\r
-\r
-       bc[0]  = (*c++ & 0x1) << 1;\r
-       bc[0] |= (*c >> 7) & 0x1;\r
-\r
-       Mc[0]  = (*c >> 5) & 0x3;\r
-\r
-       xmaxc[0]  = (*c++ & 0x1F) << 1;\r
-       xmaxc[0] |= (*c >> 7) & 0x1;\r
-\r
-#undef xmc\r
-#define        xmc     (target + 12)\r
-\r
-       xmc[0]  = (*c >> 4) & 0x7;\r
-       xmc[1]  = (*c >> 1) & 0x7;\r
-       xmc[2]  = (*c++ & 0x1) << 2;\r
-       xmc[2] |= (*c >> 6) & 0x3;\r
-       xmc[3]  = (*c >> 3) & 0x7;\r
-       xmc[4]  = *c++ & 0x7;\r
-       xmc[5]  = (*c >> 5) & 0x7;\r
-       xmc[6]  = (*c >> 2) & 0x7;\r
-       xmc[7]  = (*c++ & 0x3) << 1;            /* 10 */\r
-       xmc[7] |= (*c >> 7) & 0x1;\r
-       xmc[8]  = (*c >> 4) & 0x7;\r
-       xmc[9]  = (*c >> 1) & 0x7;\r
-       xmc[10]  = (*c++ & 0x1) << 2;\r
-       xmc[10] |= (*c >> 6) & 0x3;\r
-       xmc[11]  = (*c >> 3) & 0x7;\r
-       xmc[12]  = *c++ & 0x7;\r
-\r
-       Nc[1]  = (*c >> 1) & 0x7F;\r
-\r
-       bc[1]  = (*c++ & 0x1) << 1;\r
-       bc[1] |= (*c >> 7) & 0x1;\r
-\r
-       Mc[1]  = (*c >> 5) & 0x3;\r
-\r
-       xmaxc[1]  = (*c++ & 0x1F) << 1;\r
-       xmaxc[1] |= (*c >> 7) & 0x1;\r
-\r
-#undef xmc\r
-#define        xmc     (target + 29 - 13)\r
-\r
-       xmc[13]  = (*c >> 4) & 0x7;\r
-       xmc[14]  = (*c >> 1) & 0x7;\r
-       xmc[15]  = (*c++ & 0x1) << 2;\r
-       xmc[15] |= (*c >> 6) & 0x3;\r
-       xmc[16]  = (*c >> 3) & 0x7;\r
-       xmc[17]  = *c++ & 0x7;\r
-       xmc[18]  = (*c >> 5) & 0x7;\r
-       xmc[19]  = (*c >> 2) & 0x7;\r
-       xmc[20]  = (*c++ & 0x3) << 1;\r
-       xmc[20] |= (*c >> 7) & 0x1;\r
-       xmc[21]  = (*c >> 4) & 0x7;\r
-       xmc[22]  = (*c >> 1) & 0x7;\r
-       xmc[23]  = (*c++ & 0x1) << 2;\r
-       xmc[23] |= (*c >> 6) & 0x3;\r
-       xmc[24]  = (*c >> 3) & 0x7;\r
-       xmc[25]  = *c++ & 0x7;\r
-\r
-       Nc[2]  = (*c >> 1) & 0x7F;\r
-\r
-       bc[2]  = (*c++ & 0x1) << 1;             /* 20 */\r
-       bc[2] |= (*c >> 7) & 0x1;\r
-\r
-       Mc[2]  = (*c >> 5) & 0x3;\r
-\r
-       xmaxc[2]  = (*c++ & 0x1F) << 1;\r
-       xmaxc[2] |= (*c >> 7) & 0x1;\r
-\r
-#undef xmc\r
-#define        xmc     (target + 46 - 26)\r
-\r
-       xmc[26]  = (*c >> 4) & 0x7;\r
-       xmc[27]  = (*c >> 1) & 0x7;\r
-       xmc[28]  = (*c++ & 0x1) << 2;\r
-       xmc[28] |= (*c >> 6) & 0x3;\r
-       xmc[29]  = (*c >> 3) & 0x7;\r
-       xmc[30]  = *c++ & 0x7;\r
-       xmc[31]  = (*c >> 5) & 0x7;\r
-       xmc[32]  = (*c >> 2) & 0x7;\r
-       xmc[33]  = (*c++ & 0x3) << 1;\r
-       xmc[33] |= (*c >> 7) & 0x1;\r
-       xmc[34]  = (*c >> 4) & 0x7;\r
-       xmc[35]  = (*c >> 1) & 0x7;\r
-       xmc[36]  = (*c++ & 0x1) << 2;\r
-       xmc[36] |= (*c >> 6) & 0x3;\r
-       xmc[37]  = (*c >> 3) & 0x7;\r
-       xmc[38]  = *c++ & 0x7;\r
-\r
-       Nc[3]  = (*c >> 1) & 0x7F;\r
-\r
-       bc[3]  = (*c++ & 0x1) << 1;\r
-       bc[3] |= (*c >> 7) & 0x1;\r
-\r
-       Mc[3]  = (*c >> 5) & 0x3;\r
-\r
-       xmaxc[3]  = (*c++ & 0x1F) << 1;\r
-       xmaxc[3] |= (*c >> 7) & 0x1;\r
-\r
-#undef xmc\r
-#define        xmc     (target + 63 - 39)\r
-\r
-       xmc[39]  = (*c >> 4) & 0x7;\r
-       xmc[40]  = (*c >> 1) & 0x7;\r
-       xmc[41]  = (*c++ & 0x1) << 2;\r
-       xmc[41] |= (*c >> 6) & 0x3;\r
-       xmc[42]  = (*c >> 3) & 0x7;\r
-       xmc[43]  = *c++ & 0x7;                  /* 30  */\r
-       xmc[44]  = (*c >> 5) & 0x7;\r
-       xmc[45]  = (*c >> 2) & 0x7;\r
-       xmc[46]  = (*c++ & 0x3) << 1;\r
-       xmc[46] |= (*c >> 7) & 0x1;\r
-       xmc[47]  = (*c >> 4) & 0x7;\r
-       xmc[48]  = (*c >> 1) & 0x7;\r
-       xmc[49]  = (*c++ & 0x1) << 2;\r
-       xmc[49] |= (*c >> 6) & 0x3;\r
-       xmc[50]  = (*c >> 3) & 0x7;\r
-       xmc[51]  = *c & 0x7;                    /* 33 */\r
-       }\r
-\r
-       return 0;\r
-}\r
diff --git a/libs/codecs/gsm/src/gsm_implode.c b/libs/codecs/gsm/src/gsm_implode.c
deleted file mode 100644 (file)
index 171836d..0000000
+++ /dev/null
@@ -1,515 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include "private.h"\r
-\r
-#include "gsm.h"\r
-#include "proto.h"\r
-\r
-void gsm_implode P3((s, source, c), gsm s, gsm_signal * source, gsm_byte * c)\r
-{\r
-       /*      variable        size    index\r
-\r
-               GSM_MAGIC       4       -\r
-\r
-               LARc[0]         6       0\r
-               LARc[1]         6       1\r
-               LARc[2]         5       2\r
-               LARc[3]         5       3\r
-               LARc[4]         4       4\r
-               LARc[5]         4       5\r
-               LARc[6]         3       6\r
-               LARc[7]         3       7\r
-\r
-               Nc[0]           7       8\r
-               bc[0]           2       9\r
-               Mc[0]           2       10\r
-               xmaxc[0]        6       11\r
-               xmc[0]          3       12\r
-               xmc[1]          3       13\r
-               xmc[2]          3       14\r
-               xmc[3]          3       15\r
-               xmc[4]          3       16\r
-               xmc[5]          3       17\r
-               xmc[6]          3       18\r
-               xmc[7]          3       19\r
-               xmc[8]          3       20\r
-               xmc[9]          3       21\r
-               xmc[10]         3       22\r
-               xmc[11]         3       23\r
-               xmc[12]         3       24\r
-\r
-               Nc[1]           7       25\r
-               bc[1]           2       26\r
-               Mc[1]           2       27\r
-               xmaxc[1]        6       28\r
-               xmc[13]         3       29\r
-               xmc[14]         3       30\r
-               xmc[15]         3       31\r
-               xmc[16]         3       32\r
-               xmc[17]         3       33\r
-               xmc[18]         3       34\r
-               xmc[19]         3       35\r
-               xmc[20]         3       36\r
-               xmc[21]         3       37\r
-               xmc[22]         3       38\r
-               xmc[23]         3       39\r
-               xmc[24]         3       40\r
-               xmc[25]         3       41\r
-\r
-               Nc[2]           7       42\r
-               bc[2]           2       43\r
-               Mc[2]           2       44\r
-               xmaxc[2]        6       45\r
-               xmc[26]         3       46\r
-               xmc[27]         3       47\r
-               xmc[28]         3       48\r
-               xmc[29]         3       49\r
-               xmc[30]         3       50\r
-               xmc[31]         3       51\r
-               xmc[32]         3       52\r
-               xmc[33]         3       53\r
-               xmc[34]         3       54\r
-               xmc[35]         3       55\r
-               xmc[36]         3       56\r
-               xmc[37]         3       57\r
-               xmc[38]         3       58\r
-\r
-               Nc[3]           7       59\r
-               bc[3]           2       60\r
-               Mc[3]           2       61\r
-               xmaxc[3]        6       62\r
-               xmc[39]         3       63\r
-               xmc[40]         3       64\r
-               xmc[41]         3       65\r
-               xmc[42]         3       66\r
-               xmc[43]         3       67\r
-               xmc[44]         3       68\r
-               xmc[45]         3       69\r
-               xmc[46]         3       70\r
-               xmc[47]         3       71\r
-               xmc[48]         3       72\r
-               xmc[49]         3       73\r
-               xmc[50]         3       74\r
-               xmc[51]         3       75\r
-       */\r
-\r
-       /*      There are 76 parameters per frame.  The first eight are\r
-        *      unique.  The remaining 68 are four identical subframes of\r
-        *      17 parameters each.  gsm_implode converts from a representation\r
-        *      of these parameters as values in one array of signed words\r
-        *      to the "packed" version of a GSM frame.\r
-        */\r
-\r
-#      define  LARc    source\r
-#      define  Nc      *((gsm_signal (*) [17])(source + 8))\r
-#      define  bc      *((gsm_signal (*) [17])(source + 9))\r
-#      define  Mc      *((gsm_signal (*) [17])(source + 10))\r
-#      define  xmaxc   *((gsm_signal (*) [17])(source + 11))\r
-\r
-#ifdef WAV49\r
-       if (s->wav_fmt) {\r
-\r
-               uword sr = 0;\r
-               if (s->frame_index == 0) {\r
-\r
-                       sr = *c++;\r
-                       LARc[0] = sr & 0x3f;  sr >>= 6;\r
-                       sr |= (uword)*c++ << 2;\r
-                       LARc[1] = sr & 0x3f;  sr >>= 6;\r
-                       sr |= (uword)*c++ << 4;\r
-                       LARc[2] = sr & 0x1f;  sr >>= 5;\r
-                       LARc[3] = sr & 0x1f;  sr >>= 5;\r
-                       sr |= (uword)*c++ << 2;\r
-                       LARc[4] = sr & 0xf;  sr >>= 4;\r
-                       LARc[5] = sr & 0xf;  sr >>= 4;\r
-                       sr |= (uword)*c++ << 2;                 /* 5 */\r
-                       LARc[6] = sr & 0x7;  sr >>= 3;\r
-                       LARc[7] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 4;\r
-                       Nc[0] = sr & 0x7f;  sr >>= 7;\r
-                       bc[0] = sr & 0x3;  sr >>= 2;\r
-                       Mc[0] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmaxc[0] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (source + 12)\r
-                       xmc[0] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[1] = sr & 0x7;  sr >>= 3;\r
-                       xmc[2] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[3] = sr & 0x7;  sr >>= 3;\r
-                       xmc[4] = sr & 0x7;  sr >>= 3;\r
-                       xmc[5] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;                 /* 10 */\r
-                       xmc[6] = sr & 0x7;  sr >>= 3;\r
-                       xmc[7] = sr & 0x7;  sr >>= 3;\r
-                       xmc[8] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[9] = sr & 0x7;  sr >>= 3;\r
-                       xmc[10] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[11] = sr & 0x7;  sr >>= 3;\r
-                       xmc[12] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 4;\r
-                       Nc[1] = sr & 0x7f;  sr >>= 7;\r
-                       bc[1] = sr & 0x3;  sr >>= 2;\r
-                       Mc[1] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmaxc[1] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (source + 29 - 13)\r
-                       xmc[13] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;                              /* 15 */\r
-                       xmc[14] = sr & 0x7;  sr >>= 3;\r
-                       xmc[15] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[16] = sr & 0x7;  sr >>= 3;\r
-                       xmc[17] = sr & 0x7;  sr >>= 3;\r
-                       xmc[18] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[19] = sr & 0x7;  sr >>= 3;\r
-                       xmc[20] = sr & 0x7;  sr >>= 3;\r
-                       xmc[21] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[22] = sr & 0x7;  sr >>= 3;\r
-                       xmc[23] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[24] = sr & 0x7;  sr >>= 3;\r
-                       xmc[25] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 4;                 /* 20 */\r
-                       Nc[2] = sr & 0x7f;  sr >>= 7;\r
-                       bc[2] = sr & 0x3;  sr >>= 2;\r
-                       Mc[2] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmaxc[2] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (source + 46 - 26)\r
-                       xmc[26] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[27] = sr & 0x7;  sr >>= 3;\r
-                       xmc[28] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[29] = sr & 0x7;  sr >>= 3;\r
-                       xmc[30] = sr & 0x7;  sr >>= 3;\r
-                       xmc[31] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[32] = sr & 0x7;  sr >>= 3;\r
-                       xmc[33] = sr & 0x7;  sr >>= 3;\r
-                       xmc[34] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;                              /* 25 */\r
-                       xmc[35] = sr & 0x7;  sr >>= 3;\r
-                       xmc[36] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[37] = sr & 0x7;  sr >>= 3;\r
-                       xmc[38] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 4;\r
-                       Nc[3] = sr & 0x7f;  sr >>= 7;\r
-                       bc[3] = sr & 0x3;  sr >>= 2;\r
-                       Mc[3] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmaxc[3] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (source + 63 - 39)\r
-\r
-                       xmc[39] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[40] = sr & 0x7;  sr >>= 3;\r
-                       xmc[41] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;                 /* 30 */\r
-                       xmc[42] = sr & 0x7;  sr >>= 3;\r
-                       xmc[43] = sr & 0x7;  sr >>= 3;\r
-                       xmc[44] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[45] = sr & 0x7;  sr >>= 3;\r
-                       xmc[46] = sr & 0x7;  sr >>= 3;\r
-                       xmc[47] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[48] = sr & 0x7;  sr >>= 3;\r
-                       xmc[49] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[50] = sr & 0x7;  sr >>= 3;\r
-                       xmc[51] = sr & 0x7;  sr >>= 3;\r
-\r
-                       s->frame_chain = sr & 0xf;\r
-               }\r
-               else {\r
-                       sr = s->frame_chain;\r
-                       sr |= (uword)*c++ << 4;                 /* 1 */\r
-                       LARc[0] = sr & 0x3f;  sr >>= 6;\r
-                       LARc[1] = sr & 0x3f;  sr >>= 6;\r
-                       sr = *c++;\r
-                       LARc[2] = sr & 0x1f;  sr >>= 5;\r
-                       sr |= (uword)*c++ << 3;\r
-                       LARc[3] = sr & 0x1f;  sr >>= 5;\r
-                       LARc[4] = sr & 0xf;  sr >>= 4;\r
-                       sr |= (uword)*c++ << 2;\r
-                       LARc[5] = sr & 0xf;  sr >>= 4;\r
-                       LARc[6] = sr & 0x7;  sr >>= 3;\r
-                       LARc[7] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;                              /* 5 */\r
-                       Nc[0] = sr & 0x7f;  sr >>= 7;\r
-                       sr |= (uword)*c++ << 1;\r
-                       bc[0] = sr & 0x3;  sr >>= 2;\r
-                       Mc[0] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 5;\r
-                       xmaxc[0] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (source + 12)\r
-                       xmc[0] = sr & 0x7;  sr >>= 3;\r
-                       xmc[1] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[2] = sr & 0x7;  sr >>= 3;\r
-                       xmc[3] = sr & 0x7;  sr >>= 3;\r
-                       xmc[4] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[5] = sr & 0x7;  sr >>= 3;\r
-                       xmc[6] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;                 /* 10 */\r
-                       xmc[7] = sr & 0x7;  sr >>= 3;\r
-                       xmc[8] = sr & 0x7;  sr >>= 3;\r
-                       xmc[9] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[10] = sr & 0x7;  sr >>= 3;\r
-                       xmc[11] = sr & 0x7;  sr >>= 3;\r
-                       xmc[12] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       Nc[1] = sr & 0x7f;  sr >>= 7;\r
-                       sr |= (uword)*c++ << 1;\r
-                       bc[1] = sr & 0x3;  sr >>= 2;\r
-                       Mc[1] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 5;\r
-                       xmaxc[1] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (source + 29 - 13)\r
-                       xmc[13] = sr & 0x7;  sr >>= 3;\r
-                       xmc[14] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;                 /* 15 */\r
-                       xmc[15] = sr & 0x7;  sr >>= 3;\r
-                       xmc[16] = sr & 0x7;  sr >>= 3;\r
-                       xmc[17] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[18] = sr & 0x7;  sr >>= 3;\r
-                       xmc[19] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[20] = sr & 0x7;  sr >>= 3;\r
-                       xmc[21] = sr & 0x7;  sr >>= 3;\r
-                       xmc[22] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[23] = sr & 0x7;  sr >>= 3;\r
-                       xmc[24] = sr & 0x7;  sr >>= 3;\r
-                       xmc[25] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       Nc[2] = sr & 0x7f;  sr >>= 7;\r
-                       sr |= (uword)*c++ << 1;                 /* 20 */\r
-                       bc[2] = sr & 0x3;  sr >>= 2;\r
-                       Mc[2] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 5;\r
-                       xmaxc[2] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (source + 46 - 26)\r
-                       xmc[26] = sr & 0x7;  sr >>= 3;\r
-                       xmc[27] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1; \r
-                       xmc[28] = sr & 0x7;  sr >>= 3;\r
-                       xmc[29] = sr & 0x7;  sr >>= 3;\r
-                       xmc[30] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       xmc[31] = sr & 0x7;  sr >>= 3;\r
-                       xmc[32] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[33] = sr & 0x7;  sr >>= 3;\r
-                       xmc[34] = sr & 0x7;  sr >>= 3;\r
-                       xmc[35] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;                 /* 25 */\r
-                       xmc[36] = sr & 0x7;  sr >>= 3;\r
-                       xmc[37] = sr & 0x7;  sr >>= 3;\r
-                       xmc[38] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;\r
-                       Nc[3] = sr & 0x7f;  sr >>= 7;\r
-                       sr |= (uword)*c++ << 1;         \r
-                       bc[3] = sr & 0x3;  sr >>= 2;\r
-                       Mc[3] = sr & 0x3;  sr >>= 2;\r
-                       sr |= (uword)*c++ << 5;\r
-                       xmaxc[3] = sr & 0x3f;  sr >>= 6;\r
-#undef xmc\r
-#define        xmc     (source + 63 - 39)\r
-\r
-                       xmc[39] = sr & 0x7;  sr >>= 3;\r
-                       xmc[40] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[41] = sr & 0x7;  sr >>= 3;\r
-                       xmc[42] = sr & 0x7;  sr >>= 3;\r
-                       xmc[43] = sr & 0x7;  sr >>= 3;\r
-                       sr = *c++;                              /* 30 */\r
-                       xmc[44] = sr & 0x7;  sr >>= 3;\r
-                       xmc[45] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 2;\r
-                       xmc[46] = sr & 0x7;  sr >>= 3;\r
-                       xmc[47] = sr & 0x7;  sr >>= 3;\r
-                       xmc[48] = sr & 0x7;  sr >>= 3;\r
-                       sr |= (uword)*c++ << 1;\r
-                       xmc[49] = sr & 0x7;  sr >>= 3;\r
-                       xmc[50] = sr & 0x7;  sr >>= 3;\r
-                       xmc[51] = sr & 0x7;  sr >>= 3;\r
-               }\r
-       }\r
-       else\r
-#endif \r
-       {\r
-\r
-       *c++ =   ((GSM_MAGIC & 0xF) << 4)               /* 1 */\r
-              | ((LARc[0] >> 2) & 0xF);\r
-       *c++ =   ((LARc[0] & 0x3) << 6)\r
-              | (LARc[1] & 0x3F);\r
-       *c++ =   ((LARc[2] & 0x1F) << 3)\r
-              | ((LARc[3] >> 2) & 0x7);\r
-       *c++ =   ((LARc[3] & 0x3) << 6)\r
-              | ((LARc[4] & 0xF) << 2)\r
-              | ((LARc[5] >> 2) & 0x3);\r
-       *c++ =   ((LARc[5] & 0x3) << 6)\r
-              | ((LARc[6] & 0x7) << 3)\r
-              | (LARc[7] & 0x7);\r
-\r
-\r
-       *c++ =   ((Nc[0] & 0x7F) << 1)\r
-\r
-\r
-              | ((bc[0] >> 1) & 0x1);\r
-       *c++ =   ((bc[0] & 0x1) << 7)\r
-\r
-\r
-              | ((Mc[0] & 0x3) << 5)\r
-\r
-              | ((xmaxc[0] >> 1) & 0x1F);\r
-       *c++ =   ((xmaxc[0] & 0x1) << 7)\r
-\r
-#undef xmc\r
-#define        xmc     (source + 12)\r
-\r
-              | ((xmc[0] & 0x7) << 4)\r
-              | ((xmc[1] & 0x7) << 1)\r
-              | ((xmc[2] >> 2) & 0x1);\r
-       *c++ =   ((xmc[2] & 0x3) << 6)\r
-              | ((xmc[3] & 0x7) << 3)\r
-              | (xmc[4] & 0x7);\r
-       *c++ =   ((xmc[5] & 0x7) << 5)                  /* 10 */\r
-              | ((xmc[6] & 0x7) << 2)\r
-              | ((xmc[7] >> 1) & 0x3);\r
-       *c++ =   ((xmc[7] & 0x1) << 7)\r
-              | ((xmc[8] & 0x7) << 4)\r
-              | ((xmc[9] & 0x7) << 1)\r
-              | ((xmc[10] >> 2) & 0x1);\r
-       *c++ =   ((xmc[10] & 0x3) << 6)\r
-              | ((xmc[11] & 0x7) << 3)\r
-              | (xmc[12] & 0x7);\r
-\r
-\r
-       *c++ =   ((Nc[1] & 0x7F) << 1)\r
-\r
-\r
-              | ((bc[1] >> 1) & 0x1);\r
-       *c++ =   ((bc[1] & 0x1) << 7)\r
-\r
-\r
-              | ((Mc[1] & 0x3) << 5)\r
-\r
-\r
-              | ((xmaxc[1] >> 1) & 0x1F);\r
-       *c++ =   ((xmaxc[1] & 0x1) << 7)\r
-\r
-#undef xmc\r
-#define        xmc     (source + 29 - 13)\r
-\r
-              | ((xmc[13] & 0x7) << 4)\r
-              | ((xmc[14] & 0x7) << 1)\r
-              | ((xmc[15] >> 2) & 0x1);\r
-       *c++ =   ((xmc[15] & 0x3) << 6)\r
-              | ((xmc[16] & 0x7) << 3)\r
-              | (xmc[17] & 0x7);\r
-       *c++ =   ((xmc[18] & 0x7) << 5)\r
-              | ((xmc[19] & 0x7) << 2)\r
-              | ((xmc[20] >> 1) & 0x3);\r
-       *c++ =   ((xmc[20] & 0x1) << 7)\r
-              | ((xmc[21] & 0x7) << 4)\r
-              | ((xmc[22] & 0x7) << 1)\r
-              | ((xmc[23] >> 2) & 0x1);\r
-       *c++ =   ((xmc[23] & 0x3) << 6)\r
-              | ((xmc[24] & 0x7) << 3)\r
-              | (xmc[25] & 0x7);\r
-\r
-\r
-       *c++ =   ((Nc[2] & 0x7F) << 1)                  /* 20 */\r
-\r
-\r
-              | ((bc[2] >> 1) & 0x1);\r
-       *c++ =   ((bc[2] & 0x1) << 7)\r
-\r
-\r
-              | ((Mc[2] & 0x3) << 5)\r
-\r
-\r
-              | ((xmaxc[2] >> 1) & 0x1F);\r
-       *c++ =   ((xmaxc[2] & 0x1) << 7)\r
-\r
-#undef xmc\r
-#define        xmc     (source + 46 - 26)\r
-\r
-              | ((xmc[26] & 0x7) << 4)\r
-              | ((xmc[27] & 0x7) << 1)\r
-              | ((xmc[28] >> 2) & 0x1);\r
-       *c++ =   ((xmc[28] & 0x3) << 6)\r
-              | ((xmc[29] & 0x7) << 3)\r
-              | (xmc[30] & 0x7);\r
-       *c++ =   ((xmc[31] & 0x7) << 5)\r
-              | ((xmc[32] & 0x7) << 2)\r
-              | ((xmc[33] >> 1) & 0x3);\r
-       *c++ =   ((xmc[33] & 0x1) << 7)\r
-              | ((xmc[34] & 0x7) << 4)\r
-              | ((xmc[35] & 0x7) << 1)\r
-              | ((xmc[36] >> 2) & 0x1);\r
-       *c++ =   ((xmc[36] & 0x3) << 6)\r
-              | ((xmc[37] & 0x7) << 3)\r
-              | (xmc[38] & 0x7);\r
-\r
-\r
-       *c++ =   ((Nc[3] & 0x7F) << 1)\r
-\r
-\r
-              | ((bc[3] >> 1) & 0x1);\r
-       *c++ =   ((bc[3] & 0x1) << 7)\r
-\r
-\r
-              | ((Mc[3] & 0x3) << 5)\r
-\r
-\r
-              | ((xmaxc[3] >> 1) & 0x1F);\r
-       *c++ =   ((xmaxc[3] & 0x1) << 7)\r
-\r
-#undef xmc\r
-#define        xmc     (source + 63 - 39)\r
-\r
-              | ((xmc[39] & 0x7) << 4)\r
-              | ((xmc[40] & 0x7) << 1)\r
-              | ((xmc[41] >> 2) & 0x1);\r
-       *c++ =   ((xmc[41] & 0x3) << 6)                 /* 30 */\r
-              | ((xmc[42] & 0x7) << 3)\r
-              | (xmc[43] & 0x7);\r
-       *c++ =   ((xmc[44] & 0x7) << 5)\r
-              | ((xmc[45] & 0x7) << 2)\r
-              | ((xmc[46] >> 1) & 0x3);\r
-       *c++ =   ((xmc[46] & 0x1) << 7)\r
-              | ((xmc[47] & 0x7) << 4)\r
-              | ((xmc[48] & 0x7) << 1)\r
-              | ((xmc[49] >> 2) & 0x1);\r
-       *c++ =   ((xmc[49] & 0x3) << 6)\r
-              | ((xmc[50] & 0x7) << 3)\r
-              | (xmc[51] & 0x7);\r
-       }\r
-}\r
diff --git a/libs/codecs/gsm/src/gsm_option.c b/libs/codecs/gsm/src/gsm_option.c
deleted file mode 100644 (file)
index 7f33278..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include "private.h"\r
-\r
-#include "gsm.h"\r
-#include "proto.h"\r
-\r
-int gsm_option P3((r, opt, val), gsm r, int opt, int * val)\r
-{\r
-       int     result = -1;\r
-\r
-       switch (opt) {\r
-       case GSM_OPT_LTP_CUT:\r
-#ifdef         LTP_CUT\r
-               result = r->ltp_cut;\r
-               if (val) r->ltp_cut = *val;\r
-#endif\r
-               break;\r
-\r
-       case GSM_OPT_VERBOSE:\r
-#ifndef        NDEBUG\r
-               result = r->verbose;\r
-               if (val) r->verbose = *val;\r
-#endif\r
-               break;\r
-\r
-       case GSM_OPT_FAST:\r
-\r
-#if    defined(FAST) && defined(USE_FLOAT_MUL)\r
-               result = r->fast;\r
-               if (val) r->fast = !!*val;\r
-#endif\r
-               break;\r
-\r
-       case GSM_OPT_FRAME_CHAIN:\r
-\r
-#ifdef WAV49\r
-               result = r->frame_chain;\r
-               if (val) r->frame_chain = *val;\r
-#endif\r
-               break;\r
-\r
-       case GSM_OPT_FRAME_INDEX:\r
-\r
-#ifdef WAV49\r
-               result = r->frame_index;\r
-               if (val) r->frame_index = *val;\r
-#endif\r
-               break;\r
-\r
-       case GSM_OPT_WAV49:\r
-\r
-#ifdef WAV49 \r
-               result = r->wav_fmt;\r
-               if (val) r->wav_fmt = !!*val;\r
-#endif\r
-               break;\r
-\r
-       default:\r
-               break;\r
-       }\r
-       return result;\r
-}\r
diff --git a/libs/codecs/gsm/src/gsm_print.c b/libs/codecs/gsm/src/gsm_print.c
deleted file mode 100644 (file)
index 41657a0..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include       <stdio.h>\r
-\r
-#include "private.h"\r
-\r
-#include "gsm.h"\r
-#include "proto.h"\r
-\r
-int gsm_print P3((f, s, c), FILE * f, gsm s, gsm_byte * c)\r
-{\r
-       word    LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13*4];\r
-\r
-       /* GSM_MAGIC  = (*c >> 4) & 0xF; */\r
-\r
-       if (((*c >> 4) & 0x0F) != GSM_MAGIC) return -1;\r
-\r
-       LARc[0]  = (*c++ & 0xF) << 2;           /* 1 */\r
-       LARc[0] |= (*c >> 6) & 0x3;\r
-       LARc[1]  = *c++ & 0x3F;\r
-       LARc[2]  = (*c >> 3) & 0x1F;\r
-       LARc[3]  = (*c++ & 0x7) << 2;\r
-       LARc[3] |= (*c >> 6) & 0x3;\r
-       LARc[4]  = (*c >> 2) & 0xF;\r
-       LARc[5]  = (*c++ & 0x3) << 2;\r
-       LARc[5] |= (*c >> 6) & 0x3;\r
-       LARc[6]  = (*c >> 3) & 0x7;\r
-       LARc[7]  = *c++ & 0x7;\r
-\r
-\r
-       Nc[0]  = (*c >> 1) & 0x7F;\r
-       bc[0]  = (*c++ & 0x1) << 1;\r
-       bc[0] |= (*c >> 7) & 0x1;\r
-       Mc[0]  = (*c >> 5) & 0x3;\r
-       xmaxc[0]  = (*c++ & 0x1F) << 1;\r
-       xmaxc[0] |= (*c >> 7) & 0x1;\r
-       xmc[0]  = (*c >> 4) & 0x7;\r
-       xmc[1]  = (*c >> 1) & 0x7;\r
-       xmc[2]  = (*c++ & 0x1) << 2;\r
-       xmc[2] |= (*c >> 6) & 0x3;\r
-       xmc[3]  = (*c >> 3) & 0x7;\r
-       xmc[4]  = *c++ & 0x7;\r
-       xmc[5]  = (*c >> 5) & 0x7;\r
-       xmc[6]  = (*c >> 2) & 0x7;\r
-       xmc[7]  = (*c++ & 0x3) << 1;            /* 10 */\r
-       xmc[7] |= (*c >> 7) & 0x1;\r
-       xmc[8]  = (*c >> 4) & 0x7;\r
-       xmc[9]  = (*c >> 1) & 0x7;\r
-       xmc[10]  = (*c++ & 0x1) << 2;\r
-       xmc[10] |= (*c >> 6) & 0x3;\r
-       xmc[11]  = (*c >> 3) & 0x7;\r
-       xmc[12]  = *c++ & 0x7;\r
-\r
-       Nc[1]  = (*c >> 1) & 0x7F;\r
-       bc[1]  = (*c++ & 0x1) << 1;\r
-       bc[1] |= (*c >> 7) & 0x1;\r
-       Mc[1]  = (*c >> 5) & 0x3;\r
-       xmaxc[1]  = (*c++ & 0x1F) << 1;\r
-       xmaxc[1] |= (*c >> 7) & 0x1;\r
-       xmc[13]  = (*c >> 4) & 0x7;\r
-       xmc[14]  = (*c >> 1) & 0x7;\r
-       xmc[15]  = (*c++ & 0x1) << 2;\r
-       xmc[15] |= (*c >> 6) & 0x3;\r
-       xmc[16]  = (*c >> 3) & 0x7;\r
-       xmc[17]  = *c++ & 0x7;\r
-       xmc[18]  = (*c >> 5) & 0x7;\r
-       xmc[19]  = (*c >> 2) & 0x7;\r
-       xmc[20]  = (*c++ & 0x3) << 1;\r
-       xmc[20] |= (*c >> 7) & 0x1;\r
-       xmc[21]  = (*c >> 4) & 0x7;\r
-       xmc[22]  = (*c >> 1) & 0x7;\r
-       xmc[23]  = (*c++ & 0x1) << 2;\r
-       xmc[23] |= (*c >> 6) & 0x3;\r
-       xmc[24]  = (*c >> 3) & 0x7;\r
-       xmc[25]  = *c++ & 0x7;\r
-\r
-\r
-       Nc[2]  = (*c >> 1) & 0x7F;\r
-       bc[2]  = (*c++ & 0x1) << 1;             /* 20 */\r
-       bc[2] |= (*c >> 7) & 0x1;\r
-       Mc[2]  = (*c >> 5) & 0x3;\r
-       xmaxc[2]  = (*c++ & 0x1F) << 1;\r
-       xmaxc[2] |= (*c >> 7) & 0x1;\r
-       xmc[26]  = (*c >> 4) & 0x7;\r
-       xmc[27]  = (*c >> 1) & 0x7;\r
-       xmc[28]  = (*c++ & 0x1) << 2;\r
-       xmc[28] |= (*c >> 6) & 0x3;\r
-       xmc[29]  = (*c >> 3) & 0x7;\r
-       xmc[30]  = *c++ & 0x7;\r
-       xmc[31]  = (*c >> 5) & 0x7;\r
-       xmc[32]  = (*c >> 2) & 0x7;\r
-       xmc[33]  = (*c++ & 0x3) << 1;\r
-       xmc[33] |= (*c >> 7) & 0x1;\r
-       xmc[34]  = (*c >> 4) & 0x7;\r
-       xmc[35]  = (*c >> 1) & 0x7;\r
-       xmc[36]  = (*c++ & 0x1) << 2;\r
-       xmc[36] |= (*c >> 6) & 0x3;\r
-       xmc[37]  = (*c >> 3) & 0x7;\r
-       xmc[38]  = *c++ & 0x7;\r
-\r
-       Nc[3]  = (*c >> 1) & 0x7F;\r
-       bc[3]  = (*c++ & 0x1) << 1;\r
-       bc[3] |= (*c >> 7) & 0x1;\r
-       Mc[3]  = (*c >> 5) & 0x3;\r
-       xmaxc[3]  = (*c++ & 0x1F) << 1;\r
-       xmaxc[3] |= (*c >> 7) & 0x1;\r
-\r
-       xmc[39]  = (*c >> 4) & 0x7;\r
-       xmc[40]  = (*c >> 1) & 0x7;\r
-       xmc[41]  = (*c++ & 0x1) << 2;\r
-       xmc[41] |= (*c >> 6) & 0x3;\r
-       xmc[42]  = (*c >> 3) & 0x7;\r
-       xmc[43]  = *c++ & 0x7;                  /* 30  */\r
-       xmc[44]  = (*c >> 5) & 0x7;\r
-       xmc[45]  = (*c >> 2) & 0x7;\r
-       xmc[46]  = (*c++ & 0x3) << 1;\r
-       xmc[46] |= (*c >> 7) & 0x1;\r
-       xmc[47]  = (*c >> 4) & 0x7;\r
-       xmc[48]  = (*c >> 1) & 0x7;\r
-       xmc[49]  = (*c++ & 0x1) << 2;\r
-       xmc[49] |= (*c >> 6) & 0x3;\r
-       xmc[50]  = (*c >> 3) & 0x7;\r
-       xmc[51]  = *c & 0x7;                    /* 33 */\r
-\r
-       fprintf(f,\r
-             "LARc:\t%2.2d  %2.2d  %2.2d  %2.2d  %2.2d  %2.2d  %2.2d  %2.2d\n",\r
-              LARc[0],LARc[1],LARc[2],LARc[3],LARc[4],LARc[5],LARc[6],LARc[7]);\r
-\r
-       fprintf(f, "#1:         Nc %4.4d    bc %d    Mc %d    xmaxc %d\n",\r
-               Nc[0], bc[0], Mc[0], xmaxc[0]);\r
-       fprintf(f,\r
-"\t%.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d\n",\r
-               xmc[0],xmc[1],xmc[2],xmc[3],xmc[4],xmc[5],xmc[6],\r
-               xmc[7],xmc[8],xmc[9],xmc[10],xmc[11],xmc[12] );\r
-\r
-       fprintf(f, "#2:         Nc %4.4d    bc %d    Mc %d    xmaxc %d\n",\r
-               Nc[1], bc[1], Mc[1], xmaxc[1]);\r
-       fprintf(f,\r
-"\t%.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d\n",\r
-               xmc[13+0],xmc[13+1],xmc[13+2],xmc[13+3],xmc[13+4],xmc[13+5],\r
-               xmc[13+6], xmc[13+7],xmc[13+8],xmc[13+9],xmc[13+10],xmc[13+11],\r
-               xmc[13+12] );\r
-\r
-       fprintf(f, "#3:         Nc %4.4d    bc %d    Mc %d    xmaxc %d\n",\r
-               Nc[2], bc[2], Mc[2], xmaxc[2]);\r
-       fprintf(f,\r
-"\t%.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d\n",\r
-               xmc[26+0],xmc[26+1],xmc[26+2],xmc[26+3],xmc[26+4],xmc[26+5],\r
-               xmc[26+6], xmc[26+7],xmc[26+8],xmc[26+9],xmc[26+10],xmc[26+11],\r
-               xmc[26+12] );\r
-\r
-       fprintf(f, "#4:         Nc %4.4d    bc %d    Mc %d    xmaxc %d\n",\r
-               Nc[3], bc[3], Mc[3], xmaxc[3]);\r
-       fprintf(f,\r
-"\t%.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d\n",\r
-               xmc[39+0],xmc[39+1],xmc[39+2],xmc[39+3],xmc[39+4],xmc[39+5],\r
-               xmc[39+6], xmc[39+7],xmc[39+8],xmc[39+9],xmc[39+10],xmc[39+11],\r
-               xmc[39+12] );\r
-\r
-       return 0;\r
-}\r
diff --git a/libs/codecs/gsm/src/k6opt.h b/libs/codecs/gsm/src/k6opt.h
deleted file mode 100644 (file)
index 2a4b118..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/* k6opt.h  vector functions optimized for MMX extensions to x86\r
- *\r
- * Copyright (C) 1999 by Stanley J. Brooks <stabro@megsinet.net>\r
- * \r
- * Any use of this software is permitted provided that this notice is not\r
- * removed and that neither the authors nor the Technische Universitaet Berlin\r
- * are deemed to have made any representations as to the suitability of this\r
- * software for any purpose nor are held responsible for any defects of\r
- * this software.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE;\r
- * not even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
- * A PARTICULAR PURPOSE.\r
- * \r
- * Chicago, 03.12.1999\r
- * Stanley J. Brooks\r
- */\r
-\r
-extern void Weighting_filter P2((e, x),\r
-       const word      * e,    /* signal [-5..0.39.44] IN  */\r
-       word    * x             /* signal [0..39]       OUT */\r
-)\r
-;\r
-\r
-extern longword k6maxcc P3((wt,dp,Nc_out),\r
-       const word *wt,\r
-       const word *dp, \r
-       word            * Nc_out        /*              OUT     */\r
-)\r
-;\r
-/*\r
- * k6maxmin(p,n,out[])\r
- *  input p[n] is array of shorts (require n>0)\r
- *  returns (long) maximum absolute value..\r
- *  if out!=NULL, also returns out[0] the maximum and out[1] the minimum\r
- */\r
-extern longword k6maxmin P3((p,n,out),\r
-       const word *p,\r
-       int n, \r
-       word *out       /*              out[0] is max, out[1] is min */\r
-)\r
-;\r
-\r
-extern longword k6iprod P3((p,q,n),\r
-       const word *p,\r
-       const word *q,\r
-       int n\r
-)\r
-;\r
-\r
-/*\r
- * k6vsraw(p,n,bits)\r
- *  input p[n] is array of shorts (require n>0)\r
- *  shift/round each to the right by bits>=0 bits.\r
- */\r
-extern void k6vsraw P3((p,n,bits),\r
-       const word *p,\r
-       int n, \r
-       int bits\r
-)\r
-;\r
-\r
-/*\r
- * k6vsllw(p,n,bits)\r
- *  input p[n] is array of shorts (require n>0)\r
- *  shift each to the left by bits>=0 bits.\r
- */\r
-extern void k6vsllw P3((p,n,bits),\r
-       const word *p,\r
-       int n, \r
-       int bits\r
-)\r
-;\r
-\r
-#if 1  /* there isn't any significant speed gain from mmx here: */\r
-extern void Short_term_analysis_filteringx P4((u0,rp0,k_n,s),\r
-       register word * u0,\r
-       register word   * rp0,  /* [0..7]       IN      */\r
-       register int    k_n,    /*   k_end - k_start    */\r
-       register word   * s     /* [0..n-1]     IN/OUT  */\r
-)\r
-;\r
-/*\r
-#define Short_term_analysis_filtering Short_term_analysis_filteringx\r
-*/\r
-#endif\r
diff --git a/libs/codecs/gsm/src/k6opt.s b/libs/codecs/gsm/src/k6opt.s
deleted file mode 100644 (file)
index 85d28e1..0000000
+++ /dev/null
@@ -1,739 +0,0 @@
-       .file   "k6opt.s"\r
-       .version        "01.01"\r
-/* gcc2_compiled.: */\r
-.section       .rodata\r
-       .align 4\r
-       .type    coefs,@object\r
-       .size    coefs,24\r
-coefs:\r
-       .value -134\r
-       .value -374\r
-       .value 0\r
-       .value 2054\r
-       .value 5741\r
-       .value 8192\r
-       .value 5741\r
-       .value 2054\r
-       .value 0\r
-       .value -374\r
-       .value -134\r
-       .value 0\r
-.text\r
-       .align 4\r
-/* void Weighting_filter (const short *e, short *x) */\r
-.globl Weighting_filter\r
-       .type    Weighting_filter,@function\r
-Weighting_filter:\r
-       pushl %ebp\r
-       movl %esp,%ebp\r
-       pushl %edi\r
-       pushl %esi\r
-       pushl %ebx\r
-       movl 12(%ebp),%edi\r
-       movl 8(%ebp),%ebx\r
-       addl $-10,%ebx\r
-       emms\r
-       movl $0x1000,%eax; movd %eax,%mm5  /* for rounding */\r
-       movq coefs,%mm1\r
-       movq coefs+8,%mm2\r
-       movq coefs+16,%mm3\r
-       xorl %esi,%esi\r
-       .p2align 2\r
-.L21:\r
-       movq (%ebx,%esi,2),%mm0\r
-       pmaddwd %mm1,%mm0\r
-\r
-       movq 8(%ebx,%esi,2),%mm4\r
-       pmaddwd %mm2,%mm4\r
-       paddd %mm4,%mm0\r
-\r
-       movq 16(%ebx,%esi,2),%mm4\r
-       pmaddwd %mm3,%mm4\r
-       paddd %mm4,%mm0\r
-\r
-       movq %mm0,%mm4\r
-       punpckhdq %mm0,%mm4  /* mm4 has high int32 of mm0 dup'd */\r
-       paddd %mm4,%mm0;\r
-\r
-       paddd %mm5,%mm0 /* add for roundoff */\r
-       psrad $13,%mm0\r
-       packssdw %mm0,%mm0      \r
-       movd %mm0,%eax  /* ax has result */\r
-       movw %ax,(%edi,%esi,2)\r
-       incl %esi\r
-       cmpl $39,%esi\r
-       jle .L21\r
-       emms\r
-       popl %ebx\r
-       popl %esi\r
-       popl %edi\r
-       leave\r
-       ret\r
-.Lfe1:\r
-       .size    Weighting_filter,.Lfe1-Weighting_filter\r
-\r
-.macro ccstep n\r
-.if \n\r
-       movq \n(%edi),%mm1\r
-       movq \n(%esi),%mm2\r
-.else\r
-       movq (%edi),%mm1\r
-       movq (%esi),%mm2\r
-.endif\r
-       pmaddwd %mm2,%mm1\r
-       paddd %mm1,%mm0\r
-.endm\r
-\r
-       .align 4\r
-/* long k6maxcc(const short *wt, const short *dp, short *Nc_out) */\r
-.globl k6maxcc\r
-       .type    k6maxcc,@function\r
-k6maxcc:\r
-       pushl %ebp\r
-       movl %esp,%ebp\r
-       pushl %edi\r
-       pushl %esi\r
-       pushl %ebx\r
-       emms\r
-       movl 8(%ebp),%edi\r
-       movl 12(%ebp),%esi\r
-       movl $0,%edx  /* will be maximum inner-product */\r
-       movl $40,%ebx\r
-       movl %ebx,%ecx /* will be index of max inner-product */\r
-       subl $80,%esi\r
-       .p2align 2\r
-.L41:\r
-       movq (%edi),%mm0\r
-       movq (%esi),%mm2\r
-       pmaddwd %mm2,%mm0\r
-       ccstep 8\r
-       ccstep 16\r
-       ccstep 24\r
-       ccstep 32\r
-       ccstep 40\r
-       ccstep 48\r
-       ccstep 56\r
-       ccstep 64\r
-       ccstep 72\r
-\r
-       movq %mm0,%mm1\r
-       punpckhdq %mm0,%mm1  /* mm1 has high int32 of mm0 dup'd */\r
-       paddd %mm1,%mm0;\r
-       movd %mm0,%eax  /* eax has result */\r
-\r
-       cmpl %edx,%eax\r
-       jle .L40\r
-       movl %eax,%edx\r
-       movl %ebx,%ecx\r
-       .p2align 2\r
-.L40:\r
-       subl $2,%esi\r
-       incl %ebx\r
-       cmpl $120,%ebx\r
-       jle .L41\r
-       movl 16(%ebp),%eax\r
-       movw %cx,(%eax)\r
-       movl %edx,%eax\r
-       emms\r
-       popl %ebx\r
-       popl %esi\r
-       popl %edi\r
-       leave\r
-       ret\r
-.Lfe2:\r
-       .size    k6maxcc,.Lfe2-k6maxcc\r
-\r
-\r
-       .align 4\r
-/* long k6iprod (const short *p, const short *q, int n) */\r
-.globl k6iprod\r
-       .type    k6iprod,@function\r
-k6iprod:\r
-       pushl %ebp\r
-       movl %esp,%ebp\r
-       pushl %edi\r
-       pushl %esi\r
-       emms\r
-       pxor %mm0,%mm0\r
-       movl 8(%ebp),%esi\r
-       movl 12(%ebp),%edi\r
-       movl 16(%ebp),%eax\r
-       leal -32(%esi,%eax,2),%edx /* edx = top - 32 */\r
-\r
-       cmpl %edx,%esi; ja .L202\r
-\r
-       .p2align 2\r
-.L201:\r
-       ccstep 0\r
-       ccstep 8\r
-       ccstep 16\r
-       ccstep 24\r
-\r
-       addl $32,%esi\r
-       addl $32,%edi\r
-       cmpl %edx,%esi; jbe .L201\r
-\r
-       .p2align 2\r
-.L202:\r
-       addl $24,%edx  /* now edx = top-8 */\r
-       cmpl %edx,%esi; ja .L205\r
-\r
-       .p2align 2\r
-.L203:\r
-       ccstep 0\r
-\r
-       addl $8,%esi\r
-       addl $8,%edi\r
-       cmpl %edx,%esi; jbe .L203\r
-\r
-       .p2align 2\r
-.L205:\r
-       addl $4,%edx  /* now edx = top-4 */\r
-       cmpl %edx,%esi; ja .L207\r
-\r
-       movd (%edi),%mm1\r
-       movd (%esi),%mm2\r
-       pmaddwd %mm2,%mm1\r
-       paddd %mm1,%mm0\r
-\r
-       addl $4,%esi\r
-       addl $4,%edi\r
-\r
-       .p2align 2\r
-.L207:\r
-       addl $2,%edx  /* now edx = top-2 */\r
-       cmpl %edx,%esi; ja .L209\r
-\r
-       movswl (%edi),%eax\r
-       movd %eax,%mm1\r
-       movswl (%esi),%eax\r
-       movd %eax,%mm2\r
-       pmaddwd %mm2,%mm1\r
-       paddd %mm1,%mm0\r
-\r
-       .p2align 2\r
-.L209:\r
-       movq %mm0,%mm1\r
-       punpckhdq %mm0,%mm1  /* mm1 has high int32 of mm0 dup'd */\r
-       paddd %mm1,%mm0;\r
-       movd %mm0,%eax  /* eax has result */\r
-\r
-       emms\r
-       popl %esi\r
-       popl %edi\r
-       leave\r
-       ret\r
-.Lfe3:\r
-       .size    k6iprod,.Lfe3-k6iprod\r
-\r
-\r
-       .align 4\r
-/* void k6vsraw P3((short *p, int n, int bits) */\r
-.globl k6vsraw\r
-       .type    k6vsraw,@function\r
-k6vsraw:\r
-       pushl %ebp\r
-       movl %esp,%ebp\r
-       pushl %esi\r
-       movl 8(%ebp),%esi\r
-       movl 16(%ebp),%ecx\r
-       andl %ecx,%ecx; jle .L399\r
-       movl 12(%ebp),%eax\r
-       leal -16(%esi,%eax,2),%edx /* edx = top - 16 */\r
-       emms\r
-       movd %ecx,%mm3\r
-       movq ones,%mm2\r
-       psllw %mm3,%mm2; psrlw $1,%mm2\r
-       cmpl %edx,%esi; ja .L306\r
-\r
-       .p2align 2\r
-.L302: /* 8 words per iteration */\r
-       movq (%esi),%mm0\r
-       movq 8(%esi),%mm1\r
-       paddsw %mm2,%mm0\r
-       psraw %mm3,%mm0;\r
-       paddsw %mm2,%mm1\r
-       psraw %mm3,%mm1;\r
-       movq %mm0,(%esi)\r
-       movq %mm1,8(%esi)\r
-       addl $16,%esi\r
-       cmpl %edx,%esi\r
-       jbe .L302\r
-\r
-       .p2align 2\r
-.L306:\r
-       addl $12,%edx /* now edx = top-4 */\r
-       cmpl %edx,%esi; ja .L310\r
-\r
-       .p2align 2\r
-.L308: /* do up to 6 words, two at a time */\r
-       movd  (%esi),%mm0\r
-       paddsw %mm2,%mm0\r
-       psraw %mm3,%mm0;\r
-       movd %mm0,(%esi)\r
-       addl $4,%esi\r
-       cmpl %edx,%esi\r
-       jbe .L308\r
-\r
-       .p2align 2\r
-.L310:\r
-       addl $2,%edx /* now edx = top-2 */\r
-       cmpl %edx,%esi; ja .L315\r
-       \r
-       movzwl (%esi),%eax\r
-       movd %eax,%mm0\r
-       paddsw %mm2,%mm0\r
-       psraw %mm3,%mm0;\r
-       movd %mm0,%eax\r
-       movw %ax,(%esi)\r
-\r
-       .p2align 2\r
-.L315:\r
-       emms\r
-.L399:\r
-       popl %esi\r
-       leave\r
-       ret\r
-.Lfe4:\r
-       .size    k6vsraw,.Lfe4-k6vsraw\r
-       \r
-       .align 4\r
-/* void k6vsllw P3((short *p, int n, int bits) */\r
-.globl k6vsllw\r
-       .type    k6vsllw,@function\r
-k6vsllw:\r
-       pushl %ebp\r
-       movl %esp,%ebp\r
-       pushl %esi\r
-       movl 8(%ebp),%esi\r
-       movl 16(%ebp),%ecx\r
-       andl %ecx,%ecx; jle .L499\r
-       movl 12(%ebp),%eax\r
-       leal -16(%esi,%eax,2),%edx /* edx = top - 16 */\r
-       emms\r
-       movd %ecx,%mm3\r
-       cmpl %edx,%esi; ja .L406\r
-\r
-       .p2align 2\r
-.L402: /* 8 words per iteration */\r
-       movq (%esi),%mm0\r
-       movq 8(%esi),%mm1\r
-       psllw %mm3,%mm0;\r
-       psllw %mm3,%mm1;\r
-       movq %mm0,(%esi)\r
-       movq %mm1,8(%esi)\r
-       addl $16,%esi\r
-       cmpl %edx,%esi\r
-       jbe .L402\r
-\r
-       .p2align 2\r
-.L406:\r
-       addl $12,%edx /* now edx = top-4 */\r
-       cmpl %edx,%esi; ja .L410\r
-\r
-       .p2align 2\r
-.L408: /* do up to 6 words, two at a time */\r
-       movd (%esi),%mm0\r
-       psllw %mm3,%mm0;\r
-       movd %mm0,(%esi)\r
-       addl $4,%esi\r
-       cmpl %edx,%esi\r
-       jbe .L408\r
-\r
-       .p2align 2\r
-.L410:\r
-       addl $2,%edx /* now edx = top-2 */\r
-       cmpl %edx,%esi; ja .L415\r
-       \r
-       movzwl (%esi),%eax\r
-       movd %eax,%mm0\r
-       psllw %mm3,%mm0;\r
-       movd %mm0,%eax\r
-       movw %ax,(%esi)\r
-\r
-       .p2align 2\r
-.L415:\r
-       emms\r
-.L499:\r
-       popl %esi\r
-       leave\r
-       ret\r
-.Lfe5:\r
-       .size    k6vsllw,.Lfe5-k6vsllw\r
-\r
-\r
-.section       .rodata\r
-       .align 4\r
-       .type    extremes,@object\r
-       .size    extremes,8\r
-extremes:\r
-       .long 0x80008000\r
-       .long 0x7fff7fff\r
-       .type    ones,@object\r
-       .size    ones,8\r
-ones:\r
-       .long 0x00010001\r
-       .long 0x00010001\r
-\r
-.text\r
-       .align 4\r
-/* long k6maxmin (const short *p, int n, short *out) */\r
-.globl k6maxmin\r
-       .type    k6maxmin,@function\r
-k6maxmin:\r
-       pushl %ebp\r
-       movl %esp,%ebp\r
-       pushl %esi\r
-       emms\r
-       movl 8(%ebp),%esi\r
-       movl 12(%ebp),%eax\r
-       leal -8(%esi,%eax,2),%edx\r
-\r
-       cmpl %edx,%esi\r
-       jbe .L52\r
-       movd extremes,%mm0\r
-       movd extremes+4,%mm1\r
-       jmp .L58\r
-\r
-       .p2align 2\r
-.L52:\r
-       movq (%esi),%mm0   /* mm0 will be max's */\r
-       movq %mm0,%mm1     /* mm1 will be min's */\r
-       addl $8,%esi\r
-       cmpl %edx,%esi\r
-       ja .L56\r
-\r
-       .p2align 2\r
-.L54:\r
-       movq (%esi),%mm2\r
-\r
-       movq %mm2,%mm3\r
-       pcmpgtw %mm0,%mm3  /* mm3 is bitmask for words where mm2 > mm0 */ \r
-       movq %mm3,%mm4\r
-       pand %mm2,%mm3     /* mm3 is mm2 masked to new max's */\r
-       pandn %mm0,%mm4    /* mm4 is mm0 masked to its max's */\r
-       por %mm3,%mm4\r
-       movq %mm4,%mm0     /* now mm0 is updated max's */\r
-       \r
-       movq %mm1,%mm3\r
-       pcmpgtw %mm2,%mm3  /* mm3 is bitmask for words where mm2 < mm1 */ \r
-       pand %mm3,%mm2     /* mm2 is mm2 masked to new min's */\r
-       pandn %mm1,%mm3    /* mm3 is mm1 masked to its min's */\r
-       por %mm3,%mm2\r
-       movq %mm2,%mm1     /* now mm1 is updated min's */\r
-\r
-       addl $8,%esi\r
-       cmpl %edx,%esi\r
-       jbe .L54\r
-\r
-       .p2align 2\r
-.L56: /* merge down the 4-word max/mins to lower 2 words */\r
-\r
-       movq %mm0,%mm2\r
-       psrlq $32,%mm2\r
-       movq %mm2,%mm3\r
-       pcmpgtw %mm0,%mm3  /* mm3 is bitmask for words where mm2 > mm0 */ \r
-       pand %mm3,%mm2     /* mm2 is mm2 masked to new max's */\r
-       pandn %mm0,%mm3    /* mm3 is mm0 masked to its max's */\r
-       por %mm3,%mm2\r
-       movq %mm2,%mm0     /* now mm0 is updated max's */\r
-\r
-       movq %mm1,%mm2\r
-       psrlq $32,%mm2\r
-       movq %mm1,%mm3\r
-       pcmpgtw %mm2,%mm3  /* mm3 is bitmask for words where mm2 < mm1 */ \r
-       pand %mm3,%mm2     /* mm2 is mm2 masked to new min's */\r
-       pandn %mm1,%mm3    /* mm3 is mm1 masked to its min's */\r
-       por %mm3,%mm2\r
-       movq %mm2,%mm1     /* now mm1 is updated min's */\r
-\r
-       .p2align 2\r
-.L58:\r
-       addl $4,%edx       /* now dx = top-4 */\r
-       cmpl %edx,%esi\r
-       ja .L62\r
-       /* here, there are >= 2 words of input remaining */\r
-       movd (%esi),%mm2\r
-\r
-       movq %mm2,%mm3\r
-       pcmpgtw %mm0,%mm3  /* mm3 is bitmask for words where mm2 > mm0 */ \r
-       movq %mm3,%mm4\r
-       pand %mm2,%mm3     /* mm3 is mm2 masked to new max's */\r
-       pandn %mm0,%mm4    /* mm4 is mm0 masked to its max's */\r
-       por %mm3,%mm4\r
-       movq %mm4,%mm0     /* now mm0 is updated max's */\r
-       \r
-       movq %mm1,%mm3\r
-       pcmpgtw %mm2,%mm3  /* mm3 is bitmask for words where mm2 < mm1 */ \r
-       pand %mm3,%mm2     /* mm2 is mm2 masked to new min's */\r
-       pandn %mm1,%mm3    /* mm3 is mm1 masked to its min's */\r
-       por %mm3,%mm2\r
-       movq %mm2,%mm1     /* now mm1 is updated min's */\r
-\r
-       addl $4,%esi\r
-\r
-       .p2align 2\r
-.L62:\r
-       /* merge down the 2-word max/mins to 1 word */\r
-\r
-       movq %mm0,%mm2\r
-       psrlq $16,%mm2\r
-       movq %mm2,%mm3\r
-       pcmpgtw %mm0,%mm3  /* mm3 is bitmask for words where mm2 > mm0 */ \r
-       pand %mm3,%mm2     /* mm2 is mm2 masked to new max's */\r
-       pandn %mm0,%mm3    /* mm3 is mm0 masked to its max's */\r
-       por %mm3,%mm2\r
-       movd %mm2,%ecx     /* cx is max so far */\r
-\r
-       movq %mm1,%mm2\r
-       psrlq $16,%mm2\r
-       movq %mm1,%mm3\r
-       pcmpgtw %mm2,%mm3  /* mm3 is bitmask for words where mm2 < mm1 */ \r
-       pand %mm3,%mm2     /* mm2 is mm2 masked to new min's */\r
-       pandn %mm1,%mm3    /* mm3 is mm1 masked to its min's */\r
-       por %mm3,%mm2\r
-       movd %mm2,%eax     /* ax is min so far */\r
-       \r
-       addl $2,%edx       /* now dx = top-2 */\r
-       cmpl %edx,%esi\r
-       ja .L65\r
-\r
-       /* here, there is one word of input left */\r
-       cmpw (%esi),%cx\r
-       jge .L64\r
-       movw (%esi),%cx\r
-       .p2align 2\r
-.L64:\r
-       cmpw (%esi),%ax\r
-       jle .L65\r
-       movw (%esi),%ax\r
-\r
-       .p2align 2\r
-.L65:  /* (finally!) cx is the max, ax the min */\r
-       movswl %cx,%ecx\r
-       movswl %ax,%eax\r
-\r
-       movl 16(%ebp),%edx /* ptr to output max,min vals */\r
-       andl %edx,%edx; jz .L77\r
-       movw %cx,(%edx)  /* max */\r
-       movw %ax,2(%edx) /* min */\r
-       .p2align 2\r
-.L77:\r
-       /* now calculate max absolute val */\r
-       negl %eax\r
-       cmpl %ecx,%eax\r
-       jge .L81\r
-       movl %ecx,%eax\r
-       .p2align 2\r
-.L81:\r
-       emms\r
-       popl %esi\r
-       leave\r
-       ret\r
-.Lfe6:\r
-       .size    k6maxmin,.Lfe6-k6maxmin\r
-\r
-/* void Short_term_analysis_filtering (short *u0, const short *rp0, int kn, short *s) */\r
-       .equiv pm_u0,8\r
-       .equiv pm_rp0,12\r
-       .equiv pm_kn,16\r
-       .equiv pm_s,20\r
-       .equiv lv_u_top,-4\r
-       .equiv lv_s_top,-8\r
-       .equiv lv_rp,-40 /* local version of rp0 with each word twice */\r
-       .align 4\r
-.globl Short_term_analysis_filteringx\r
-       .type    Short_term_analysis_filteringx,@function\r
-Short_term_analysis_filteringx:\r
-       pushl %ebp\r
-       movl %esp,%ebp\r
-       subl $40,%esp\r
-       pushl %edi\r
-       pushl %esi\r
-\r
-       movl pm_rp0(%ebp),%esi;\r
-       leal lv_rp(%ebp),%edi;\r
-       cld\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       emms\r
-       movl $0x4000,%eax;\r
-       movd %eax,%mm4;\r
-       punpckldq %mm4,%mm4 /* (0x00004000,0x00004000) for rounding dword product pairs */\r
-\r
-       movl pm_u0(%ebp),%eax\r
-       addl $16,%eax\r
-       movl %eax,lv_u_top(%ebp) /* UTOP */\r
-       movl pm_s(%ebp),%edx  /* edx is local s ptr throughout below */\r
-       movl pm_kn(%ebp),%eax\r
-       leal (%edx,%eax,2),%eax\r
-       movl %eax,lv_s_top(%ebp)\r
-       cmpl %eax,%edx\r
-       jae .L179\r
-       .p2align 2\r
-.L181:\r
-       leal lv_rp(%ebp),%esi  /* RP */\r
-       movl pm_u0(%ebp),%edi  /* U  */\r
-       movw (%edx),%ax /* (0,DI) */\r
-       roll $16,%eax\r
-       movw (%edx),%ax /* (DI,DI) */\r
-       .p2align 2\r
-.L185: /* RP is %esi */\r
-       movl %eax,%ecx\r
-       movw (%edi),%ax  /* (DI,U) */\r
-       movd (%esi),%mm3 /* mm3 is (0,0,RP,RP) */\r
-       movw %cx,(%edi)\r
-\r
-       movd %eax,%mm2   /* mm2 is (0,0,DI,U) */\r
-       rorl $16,%eax \r
-       movd %eax,%mm1   /* mm1 is (0,0,U,DI) */\r
-\r
-       movq %mm1,%mm0\r
-       pmullw %mm3,%mm0\r
-       pmulhw %mm3,%mm1\r
-       punpcklwd %mm1,%mm0 /* mm0 is (RP*U,RP*DI) */\r
-       paddd %mm4,%mm0     /* mm4 is 0x00004000,0x00004000 */\r
-       psrad $15,%mm0      /* (RP*U,RP*DI) adjusted */\r
-       packssdw %mm0,%mm0  /* (*,*,RP*U,RP*DI) adjusted and saturated to word */\r
-       paddsw %mm2,%mm0    /* mm0 is (?,?, DI', U') */\r
-       movd %mm0,%eax      /* (DI,U') */\r
-\r
-       addl $2,%edi\r
-       addl $4,%esi\r
-       cmpl lv_u_top(%ebp),%edi\r
-       jb .L185\r
-\r
-       rorl $16,%eax\r
-       movw %ax,(%edx) /* last DI goes to *s */\r
-       addl $2,%edx    /* next s */\r
-       cmpl lv_s_top(%ebp),%edx\r
-       jb .L181\r
-       .p2align 2\r
-.L179:\r
-       emms\r
-       popl %esi\r
-       popl %edi\r
-       leave\r
-       ret\r
-.Lfe7:\r
-       .size    Short_term_analysis_filteringx,.Lfe7-Short_term_analysis_filteringx\r
-\r
-.end\r
-\r
-/* 'as' macro's seem to be case-insensitive */\r
-.macro STEP n\r
-.if \n\r
-       movd \n(%esi),%mm3 /* mm3 is (0,0,RP,RP) */\r
-.else\r
-       movd (%esi),%mm3 /* mm3 is (0,0,RP,RP) */\r
-.endif\r
-       movq %mm5,%mm1;\r
-       movd %mm4,%ecx; movw %cx,%ax  /* (DI,U) */\r
-       psllq $48,%mm1; psrlq $16,%mm4; por %mm1,%mm4\r
-       psllq $48,%mm0; psrlq $16,%mm5; por %mm0,%mm5\r
-\r
-       movd %eax,%mm2   /* mm2 is (0,0,DI,U) */\r
-       rorl $16,%eax \r
-       movd %eax,%mm1   /* mm1 is (0,0,U,DI) */\r
-\r
-       movq %mm1,%mm0\r
-       pmullw %mm3,%mm0\r
-       pmulhw %mm3,%mm1\r
-       punpcklwd %mm1,%mm0 /* mm0 is (RP*U,RP*DI) */\r
-       paddd %mm6,%mm0     /* mm6 is 0x00004000,0x00004000 */\r
-       psrad $15,%mm0      /* (RP*U,RP*DI) adjusted */\r
-       packssdw %mm0,%mm0  /* (*,*,RP*U,RP*DI) adjusted and saturated to word */\r
-       paddsw %mm2,%mm0    /* mm0 is (?,?, DI', U') */\r
-       movd %mm0,%eax      /* (DI,U') */\r
-.endm\r
-\r
-/* void Short_term_analysis_filtering (short *u0, const short *rp0, int kn, short *s) */\r
-       .equiv pm_u0,8\r
-       .equiv pm_rp0,12\r
-       .equiv pm_kn,16\r
-       .equiv pm_s,20\r
-       .equiv lv_rp_top,-4\r
-       .equiv lv_s_top,-8\r
-       .equiv lv_rp,-40 /* local version of rp0 with each word twice */\r
-       .align 4\r
-.globl Short_term_analysis_filteringx\r
-       .type    Short_term_analysis_filteringx,@function\r
-Short_term_analysis_filteringx:\r
-       pushl %ebp\r
-       movl %esp,%ebp\r
-       subl $56,%esp\r
-       pushl %edi\r
-       pushl %esi\r
-       pushl %ebx\r
-\r
-       movl pm_rp0(%ebp),%esi;\r
-       leal lv_rp(%ebp),%edi;\r
-       cld\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       lodsw; stosw; stosw\r
-       movl %edi,lv_rp_top(%ebp)\r
-       emms\r
-\r
-       movl $0x4000,%eax;\r
-       movd %eax,%mm6;\r
-       punpckldq %mm6,%mm6 /* (0x00004000,0x00004000) for rounding dword product pairs */\r
-\r
-       movl pm_u0(%ebp),%ebx\r
-       movq (%ebx),%mm4; movq 8(%ebx),%mm5 /* the 8 u's */\r
-       movl pm_s(%ebp),%edx  /* edx is local s ptr throughout below */\r
-       movl pm_kn(%ebp),%eax\r
-       leal (%edx,%eax,2),%eax\r
-       movl %eax,lv_s_top(%ebp)\r
-       cmpl %eax,%edx\r
-       jae .L179\r
-       .p2align 2\r
-.L181:\r
-       leal lv_rp(%ebp),%esi  /* RP */\r
-       movw (%edx),%ax /* (0,DI) */\r
-       roll $16,%eax\r
-       movw (%edx),%ax /* (DI,DI) */\r
-       movd %eax,%mm0\r
-       .p2align 2\r
-.L185: /* RP is %esi */\r
-       step 0\r
-       step 4\r
-       step 8\r
-       step 12\r
-/*\r
-       step 16\r
-       step 20\r
-       step 24\r
-       step 28\r
-*/\r
-       addl $16,%esi\r
-       cmpl lv_rp_top(%ebp),%esi \r
-       jb .L185\r
-\r
-       rorl $16,%eax\r
-       movw %ax,(%edx) /* last DI goes to *s */\r
-       addl $2,%edx    /* next s */\r
-       cmpl lv_s_top(%ebp),%edx\r
-       jb .L181\r
-.L179:\r
-       movq %mm4,(%ebx); movq %mm5,8(%ebx) /* the 8 u's */\r
-       emms\r
-       popl %ebx\r
-       popl %esi\r
-       popl %edi\r
-       leave\r
-       ret\r
-.Lfe7:\r
-       .size    Short_term_analysis_filteringx,.Lfe7-Short_term_analysis_filteringx\r
-       .ident  "GCC: (GNU) 2.95.2 19991109 (Debian GNU/Linux)"\r
diff --git a/libs/codecs/gsm/src/long_term.c b/libs/codecs/gsm/src/long_term.c
deleted file mode 100644 (file)
index b8d6601..0000000
+++ /dev/null
@@ -1,952 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include <stdio.h>\r
-#include <assert.h>\r
-\r
-#include "private.h"\r
-\r
-#include "gsm.h"\r
-#include "proto.h"\r
-#ifdef K6OPT\r
-#include "k6opt.h"\r
-#endif\r
-/*\r
- *  4.2.11 .. 4.2.12 LONG TERM PREDICTOR (LTP) SECTION\r
- */\r
-\r
-\r
-/*\r
- * This module computes the LTP gain (bc) and the LTP lag (Nc)\r
- * for the long term analysis filter.   This is done by calculating a\r
- * maximum of the cross-correlation function between the current\r
- * sub-segment short term residual signal d[0..39] (output of\r
- * the short term analysis filter; for simplification the index\r
- * of this array begins at 0 and ends at 39 for each sub-segment of the\r
- * RPE-LTP analysis) and the previous reconstructed short term\r
- * residual signal dp[ -120 .. -1 ].  A dynamic scaling must be\r
- * performed to avoid overflow.\r
- */\r
-\r
- /* The next procedure exists in six versions.  First two integer\r
-  * version (if USE_FLOAT_MUL is not defined); then four floating\r
-  * point versions, twice with proper scaling (USE_FLOAT_MUL defined),\r
-  * once without (USE_FLOAT_MUL and FAST defined, and fast run-time\r
-  * option used).  Every pair has first a Cut version (see the -C\r
-  * option to toast or the LTP_CUT option to gsm_option()), then the\r
-  * uncut one.  (For a detailed explanation of why this is altogether\r
-  * a bad idea, see Henry Spencer and Geoff Collyer, ``#ifdef Considered\r
-  * Harmful''.)\r
-  */\r
-\r
-#ifndef  USE_FLOAT_MUL\r
-\r
-#ifdef LTP_CUT\r
-\r
-static void Cut_Calculation_of_the_LTP_parameters P5((st, d,dp,bc_out,Nc_out),\r
-\r
-       struct gsm_state * st,\r
-\r
-       register word   * d,            /* [0..39]      IN      */\r
-       register word   * dp,           /* [-120..-1]   IN      */\r
-       word            * bc_out,       /*              OUT     */\r
-       word            * Nc_out        /*              OUT     */\r
-)\r
-{\r
-       register int    k, lambda;\r
-       word            Nc, bc;\r
-       word            wt[40];\r
-\r
-       longword        L_result;\r
-       longword        L_max, L_power;\r
-       word            R, S, dmax, scal, best_k;\r
-       word            ltp_cut;\r
-\r
-       register word   temp, wt_k;\r
-\r
-       /*  Search of the optimum scaling of d[0..39].\r
-        */\r
-       dmax = 0;\r
-       for (k = 0; k <= 39; k++) {\r
-               temp = d[k];\r
-               temp = GSM_ABS( temp );\r
-               if (temp > dmax) {\r
-                       dmax = temp;\r
-                       best_k = k;\r
-               }\r
-       }\r
-       temp = 0;\r
-       if (dmax == 0) scal = 0;\r
-       else {\r
-               assert(dmax > 0);\r
-               temp = gsm_norm( (longword)dmax << 16 );\r
-       }\r
-       if (temp > 6) scal = 0;\r
-       else scal = 6 - temp;\r
-       assert(scal >= 0);\r
-\r
-       /* Search for the maximum cross-correlation and coding of the LTP lag\r
-        */\r
-       L_max = 0;\r
-       Nc    = 40;     /* index for the maximum cross-correlation */\r
-       wt_k  = SASR(d[best_k], scal);\r
-\r
-       for (lambda = 40; lambda <= 120; lambda++) {\r
-               L_result = (longword)wt_k * dp[best_k - lambda];\r
-               if (L_result > L_max) {\r
-                       Nc    = lambda;\r
-                       L_max = L_result;\r
-               }\r
-       }\r
-       *Nc_out = Nc;\r
-       L_max <<= 1;\r
-\r
-       /*  Rescaling of L_max\r
-        */\r
-       assert(scal <= 100 && scal >= -100);\r
-       L_max = L_max >> (6 - scal);    /* sub(6, scal) */\r
-\r
-       assert( Nc <= 120 && Nc >= 40);\r
-\r
-       /*   Compute the power of the reconstructed short term residual\r
-        *   signal dp[..]\r
-        */\r
-       L_power = 0;\r
-       for (k = 0; k <= 39; k++) {\r
-\r
-               register longword L_temp;\r
-\r
-               L_temp   = SASR( dp[k - Nc], 3 );\r
-               L_power += L_temp * L_temp;\r
-       }\r
-       L_power <<= 1;  /* from L_MULT */\r
-\r
-       /*  Normalization of L_max and L_power\r
-        */\r
-\r
-       if (L_max <= 0)  {\r
-               *bc_out = 0;\r
-               return;\r
-       }\r
-       if (L_max >= L_power) {\r
-               *bc_out = 3;\r
-               return;\r
-       }\r
-\r
-       temp = gsm_norm( L_power );\r
-\r
-       R = SASR( L_max   << temp, 16 );\r
-       S = SASR( L_power << temp, 16 );\r
-\r
-       /*  Coding of the LTP gain\r
-        */\r
-\r
-       /*  Table 4.3a must be used to obtain the level DLB[i] for the\r
-        *  quantization of the LTP gain b to get the coded version bc.\r
-        */\r
-       for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break;\r
-       *bc_out = bc;\r
-}\r
-\r
-#endif         /* LTP_CUT */\r
-\r
-static void Calculation_of_the_LTP_parameters P4((d,dp,bc_out,Nc_out),\r
-       register word   * d,            /* [0..39]      IN      */\r
-       register word   * dp,           /* [-120..-1]   IN      */\r
-       word            * bc_out,       /*              OUT     */\r
-       word            * Nc_out        /*              OUT     */\r
-)\r
-{\r
-       register int    k, lambda;\r
-       word            Nc, bc;\r
-       word            wt[40];\r
-\r
-       longword        L_max, L_power;\r
-       word            R, S, dmax, scal;\r
-       register word   temp;\r
-\r
-       /*  Search of the optimum scaling of d[0..39].\r
-        */\r
-       dmax = 0;\r
-\r
-       for (k = 0; k <= 39; k++) {\r
-               temp = d[k];\r
-               temp = GSM_ABS( temp );\r
-               if (temp > dmax) dmax = temp;\r
-       }\r
-\r
-       temp = 0;\r
-       if (dmax == 0) scal = 0;\r
-       else {\r
-               assert(dmax > 0);\r
-               temp = gsm_norm( (longword)dmax << 16 );\r
-       }\r
-\r
-       if (temp > 6) scal = 0;\r
-       else scal = 6 - temp;\r
-\r
-       assert(scal >= 0);\r
-\r
-       /*  Initialization of a working array wt\r
-        */\r
-\r
-       for (k = 0; k <= 39; k++) wt[k] = SASR( d[k], scal );\r
-\r
-       /* Search for the maximum cross-correlation and coding of the LTP lag\r
-        */\r
-# ifdef K6OPT\r
-       L_max = k6maxcc(wt,dp,&Nc);\r
-#      else\r
-       L_max = 0;\r
-       Nc    = 40;     /* index for the maximum cross-correlation */\r
-\r
-       for (lambda = 40; lambda <= 120; lambda++) {\r
-\r
-# undef STEP\r
-#              define STEP(k)  (longword)wt[k] * dp[k - lambda]\r
-\r
-               register longword L_result;\r
-\r
-               L_result  = STEP(0)  ; L_result += STEP(1) ;\r
-               L_result += STEP(2)  ; L_result += STEP(3) ;\r
-               L_result += STEP(4)  ; L_result += STEP(5)  ;\r
-               L_result += STEP(6)  ; L_result += STEP(7)  ;\r
-               L_result += STEP(8)  ; L_result += STEP(9)  ;\r
-               L_result += STEP(10) ; L_result += STEP(11) ;\r
-               L_result += STEP(12) ; L_result += STEP(13) ;\r
-               L_result += STEP(14) ; L_result += STEP(15) ;\r
-               L_result += STEP(16) ; L_result += STEP(17) ;\r
-               L_result += STEP(18) ; L_result += STEP(19) ;\r
-               L_result += STEP(20) ; L_result += STEP(21) ;\r
-               L_result += STEP(22) ; L_result += STEP(23) ;\r
-               L_result += STEP(24) ; L_result += STEP(25) ;\r
-               L_result += STEP(26) ; L_result += STEP(27) ;\r
-               L_result += STEP(28) ; L_result += STEP(29) ;\r
-               L_result += STEP(30) ; L_result += STEP(31) ;\r
-               L_result += STEP(32) ; L_result += STEP(33) ;\r
-               L_result += STEP(34) ; L_result += STEP(35) ;\r
-               L_result += STEP(36) ; L_result += STEP(37) ;\r
-               L_result += STEP(38) ; L_result += STEP(39) ;\r
-\r
-               if (L_result > L_max) {\r
-\r
-                       Nc    = lambda;\r
-                       L_max = L_result;\r
-               }\r
-       }\r
-#      endif\r
-       *Nc_out = Nc;\r
-\r
-       L_max <<= 1;\r
-\r
-       /*  Rescaling of L_max\r
-        */\r
-       assert(scal <= 100 && scal >=  -100);\r
-       L_max = L_max >> (6 - scal);    /* sub(6, scal) */\r
-\r
-       assert( Nc <= 120 && Nc >= 40);\r
-\r
-       /*   Compute the power of the reconstructed short term residual\r
-        *   signal dp[..]\r
-        */\r
-       L_power = 0;\r
-       for (k = 0; k <= 39; k++) {\r
-\r
-               register longword L_temp;\r
-\r
-               L_temp   = SASR( dp[k - Nc], 3 );\r
-               L_power += L_temp * L_temp;\r
-       }\r
-       L_power <<= 1;  /* from L_MULT */\r
-\r
-       /*  Normalization of L_max and L_power\r
-        */\r
-\r
-       if (L_max <= 0)  {\r
-               *bc_out = 0;\r
-               return;\r
-       }\r
-       if (L_max >= L_power) {\r
-               *bc_out = 3;\r
-               return;\r
-       }\r
-\r
-       temp = gsm_norm( L_power );\r
-\r
-       R = SASR( L_max   << temp, 16 );\r
-       S = SASR( L_power << temp, 16 );\r
-\r
-       /*  Coding of the LTP gain\r
-        */\r
-\r
-       /*  Table 4.3a must be used to obtain the level DLB[i] for the\r
-        *  quantization of the LTP gain b to get the coded version bc.\r
-        */\r
-       for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break;\r
-       *bc_out = bc;\r
-}\r
-\r
-#else  /* USE_FLOAT_MUL */\r
-\r
-#ifdef LTP_CUT\r
-\r
-static void Cut_Calculation_of_the_LTP_parameters P5((st, d,dp,bc_out,Nc_out),\r
-       struct gsm_state * st,          /*              IN      */\r
-       register word   * d,            /* [0..39]      IN      */\r
-       register word   * dp,           /* [-120..-1]   IN      */\r
-       word            * bc_out,       /*              OUT     */\r
-       word            * Nc_out        /*              OUT     */\r
-)\r
-{\r
-       register int    k, lambda;\r
-       word            Nc, bc;\r
-       word            ltp_cut;\r
-\r
-       float           wt_float[40];\r
-       float           dp_float_base[120], * dp_float = dp_float_base + 120;\r
-\r
-       longword        L_max, L_power;\r
-       word            R, S, dmax, scal;\r
-       register word   temp;\r
-\r
-       /*  Search of the optimum scaling of d[0..39].\r
-        */\r
-       dmax = 0;\r
-\r
-       for (k = 0; k <= 39; k++) {\r
-               temp = d[k];\r
-               temp = GSM_ABS( temp );\r
-               if (temp > dmax) dmax = temp;\r
-       }\r
-\r
-       temp = 0;\r
-       if (dmax == 0) scal = 0;\r
-       else {\r
-               assert(dmax > 0);\r
-               temp = gsm_norm( (longword)dmax << 16 );\r
-       }\r
-\r
-       if (temp > 6) scal = 0;\r
-       else scal = 6 - temp;\r
-\r
-       assert(scal >= 0);\r
-       ltp_cut = (longword)SASR(dmax, scal) * st->ltp_cut / 100; \r
-\r
-\r
-       /*  Initialization of a working array wt\r
-        */\r
-\r
-       for (k = 0; k < 40; k++) {\r
-               register word w = SASR( d[k], scal );\r
-               if (w < 0 ? w > -ltp_cut : w < ltp_cut) {\r
-                       wt_float[k] = 0.0;\r
-               }\r
-               else {\r
-                       wt_float[k] =  w;\r
-               }\r
-       }\r
-       for (k = -120; k <  0; k++) dp_float[k] =  dp[k];\r
-\r
-       /* Search for the maximum cross-correlation and coding of the LTP lag\r
-        */\r
-       L_max = 0;\r
-       Nc    = 40;     /* index for the maximum cross-correlation */\r
-\r
-       for (lambda = 40; lambda <= 120; lambda += 9) {\r
-\r
-               /*  Calculate L_result for l = lambda .. lambda + 9.\r
-                */\r
-               register float *lp = dp_float - lambda;\r
-\r
-               register float  W;\r
-               register float  a = lp[-8], b = lp[-7], c = lp[-6],\r
-                               d = lp[-5], e = lp[-4], f = lp[-3],\r
-                               g = lp[-2], h = lp[-1];\r
-               register float  E; \r
-               register float  S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0,\r
-                               S5 = 0, S6 = 0, S7 = 0, S8 = 0;\r
-\r
-#              undef STEP\r
-#              define  STEP(K, a, b, c, d, e, f, g, h) \\r
-                       if ((W = wt_float[K]) != 0.0) { \\r
-                       E = W * a; S8 += E;             \\r
-                       E = W * b; S7 += E;             \\r
-                       E = W * c; S6 += E;             \\r
-                       E = W * d; S5 += E;             \\r
-                       E = W * e; S4 += E;             \\r
-                       E = W * f; S3 += E;             \\r
-                       E = W * g; S2 += E;             \\r
-                       E = W * h; S1 += E;             \\r
-                       a  = lp[K];                     \\r
-                       E = W * a; S0 += E; } else (a = lp[K])\r
-\r
-#              define  STEP_A(K)       STEP(K, a, b, c, d, e, f, g, h)\r
-#              define  STEP_B(K)       STEP(K, b, c, d, e, f, g, h, a)\r
-#              define  STEP_C(K)       STEP(K, c, d, e, f, g, h, a, b)\r
-#              define  STEP_D(K)       STEP(K, d, e, f, g, h, a, b, c)\r
-#              define  STEP_E(K)       STEP(K, e, f, g, h, a, b, c, d)\r
-#              define  STEP_F(K)       STEP(K, f, g, h, a, b, c, d, e)\r
-#              define  STEP_G(K)       STEP(K, g, h, a, b, c, d, e, f)\r
-#              define  STEP_H(K)       STEP(K, h, a, b, c, d, e, f, g)\r
-\r
-               STEP_A( 0); STEP_B( 1); STEP_C( 2); STEP_D( 3);\r
-               STEP_E( 4); STEP_F( 5); STEP_G( 6); STEP_H( 7);\r
-\r
-               STEP_A( 8); STEP_B( 9); STEP_C(10); STEP_D(11);\r
-               STEP_E(12); STEP_F(13); STEP_G(14); STEP_H(15);\r
-\r
-               STEP_A(16); STEP_B(17); STEP_C(18); STEP_D(19);\r
-               STEP_E(20); STEP_F(21); STEP_G(22); STEP_H(23);\r
-\r
-               STEP_A(24); STEP_B(25); STEP_C(26); STEP_D(27);\r
-               STEP_E(28); STEP_F(29); STEP_G(30); STEP_H(31);\r
-\r
-               STEP_A(32); STEP_B(33); STEP_C(34); STEP_D(35);\r
-               STEP_E(36); STEP_F(37); STEP_G(38); STEP_H(39);\r
-\r
-               if (S0 > L_max) { L_max = S0; Nc = lambda;     }\r
-               if (S1 > L_max) { L_max = S1; Nc = lambda + 1; }\r
-               if (S2 > L_max) { L_max = S2; Nc = lambda + 2; }\r
-               if (S3 > L_max) { L_max = S3; Nc = lambda + 3; }\r
-               if (S4 > L_max) { L_max = S4; Nc = lambda + 4; }\r
-               if (S5 > L_max) { L_max = S5; Nc = lambda + 5; }\r
-               if (S6 > L_max) { L_max = S6; Nc = lambda + 6; }\r
-               if (S7 > L_max) { L_max = S7; Nc = lambda + 7; }\r
-               if (S8 > L_max) { L_max = S8; Nc = lambda + 8; }\r
-\r
-       }\r
-       *Nc_out = Nc;\r
-\r
-       L_max <<= 1;\r
-\r
-       /*  Rescaling of L_max\r
-        */\r
-       assert(scal <= 100 && scal >=  -100);\r
-       L_max = L_max >> (6 - scal);    /* sub(6, scal) */\r
-\r
-       assert( Nc <= 120 && Nc >= 40);\r
-\r
-       /*   Compute the power of the reconstructed short term residual\r
-        *   signal dp[..]\r
-        */\r
-       L_power = 0;\r
-       for (k = 0; k <= 39; k++) {\r
-\r
-               register longword L_temp;\r
-\r
-               L_temp   = SASR( dp[k - Nc], 3 );\r
-               L_power += L_temp * L_temp;\r
-       }\r
-       L_power <<= 1;  /* from L_MULT */\r
-\r
-       /*  Normalization of L_max and L_power\r
-        */\r
-\r
-       if (L_max <= 0)  {\r
-               *bc_out = 0;\r
-               return;\r
-       }\r
-       if (L_max >= L_power) {\r
-               *bc_out = 3;\r
-               return;\r
-       }\r
-\r
-       temp = gsm_norm( L_power );\r
-\r
-       R = SASR( L_max   << temp, 16 );\r
-       S = SASR( L_power << temp, 16 );\r
-\r
-       /*  Coding of the LTP gain\r
-        */\r
-\r
-       /*  Table 4.3a must be used to obtain the level DLB[i] for the\r
-        *  quantization of the LTP gain b to get the coded version bc.\r
-        */\r
-       for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break;\r
-       *bc_out = bc;\r
-}\r
-\r
-#endif /* LTP_CUT */\r
-\r
-static void Calculation_of_the_LTP_parameters P4((d,dp,bc_out,Nc_out),\r
-       register word   * d,            /* [0..39]      IN      */\r
-       register word   * dp,           /* [-120..-1]   IN      */\r
-       word            * bc_out,       /*              OUT     */\r
-       word            * Nc_out        /*              OUT     */\r
-)\r
-{\r
-       register int    k, lambda;\r
-       word            Nc, bc;\r
-\r
-       float           wt_float[40];\r
-       float           dp_float_base[120], * dp_float = dp_float_base + 120;\r
-\r
-       longword        L_max, L_power;\r
-       word            R, S, dmax, scal;\r
-       register word   temp;\r
-\r
-       /*  Search of the optimum scaling of d[0..39].\r
-        */\r
-       dmax = 0;\r
-\r
-       for (k = 0; k <= 39; k++) {\r
-               temp = d[k];\r
-               temp = GSM_ABS( temp );\r
-               if (temp > dmax) dmax = temp;\r
-       }\r
-\r
-       temp = 0;\r
-       if (dmax == 0) scal = 0;\r
-       else {\r
-               assert(dmax > 0);\r
-               temp = gsm_norm( (longword)dmax << 16 );\r
-       }\r
-\r
-       if (temp > 6) scal = 0;\r
-       else scal = 6 - temp;\r
-\r
-       assert(scal >= 0);\r
-\r
-       /*  Initialization of a working array wt\r
-        */\r
-\r
-       for (k =    0; k < 40; k++) wt_float[k] =  SASR( d[k], scal );\r
-       for (k = -120; k <  0; k++) dp_float[k] =  dp[k];\r
-\r
-       /* Search for the maximum cross-correlation and coding of the LTP lag\r
-        */\r
-       L_max = 0;\r
-       Nc    = 40;     /* index for the maximum cross-correlation */\r
-\r
-       for (lambda = 40; lambda <= 120; lambda += 9) {\r
-\r
-               /*  Calculate L_result for l = lambda .. lambda + 9.\r
-                */\r
-               register float *lp = dp_float - lambda;\r
-\r
-               register float  W;\r
-               register float  a = lp[-8], b = lp[-7], c = lp[-6],\r
-                               d = lp[-5], e = lp[-4], f = lp[-3],\r
-                               g = lp[-2], h = lp[-1];\r
-               register float  E; \r
-               register float  S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0,\r
-                               S5 = 0, S6 = 0, S7 = 0, S8 = 0;\r
-\r
-#              undef STEP\r
-#              define  STEP(K, a, b, c, d, e, f, g, h) \\r
-                       W = wt_float[K];                \\r
-                       E = W * a; S8 += E;             \\r
-                       E = W * b; S7 += E;             \\r
-                       E = W * c; S6 += E;             \\r
-                       E = W * d; S5 += E;             \\r
-                       E = W * e; S4 += E;             \\r
-                       E = W * f; S3 += E;             \\r
-                       E = W * g; S2 += E;             \\r
-                       E = W * h; S1 += E;             \\r
-                       a  = lp[K];                     \\r
-                       E = W * a; S0 += E\r
-\r
-#              define  STEP_A(K)       STEP(K, a, b, c, d, e, f, g, h)\r
-#              define  STEP_B(K)       STEP(K, b, c, d, e, f, g, h, a)\r
-#              define  STEP_C(K)       STEP(K, c, d, e, f, g, h, a, b)\r
-#              define  STEP_D(K)       STEP(K, d, e, f, g, h, a, b, c)\r
-#              define  STEP_E(K)       STEP(K, e, f, g, h, a, b, c, d)\r
-#              define  STEP_F(K)       STEP(K, f, g, h, a, b, c, d, e)\r
-#              define  STEP_G(K)       STEP(K, g, h, a, b, c, d, e, f)\r
-#              define  STEP_H(K)       STEP(K, h, a, b, c, d, e, f, g)\r
-\r
-               STEP_A( 0); STEP_B( 1); STEP_C( 2); STEP_D( 3);\r
-               STEP_E( 4); STEP_F( 5); STEP_G( 6); STEP_H( 7);\r
-\r
-               STEP_A( 8); STEP_B( 9); STEP_C(10); STEP_D(11);\r
-               STEP_E(12); STEP_F(13); STEP_G(14); STEP_H(15);\r
-\r
-               STEP_A(16); STEP_B(17); STEP_C(18); STEP_D(19);\r
-               STEP_E(20); STEP_F(21); STEP_G(22); STEP_H(23);\r
-\r
-               STEP_A(24); STEP_B(25); STEP_C(26); STEP_D(27);\r
-               STEP_E(28); STEP_F(29); STEP_G(30); STEP_H(31);\r
-\r
-               STEP_A(32); STEP_B(33); STEP_C(34); STEP_D(35);\r
-               STEP_E(36); STEP_F(37); STEP_G(38); STEP_H(39);\r
-\r
-               if (S0 > L_max) { L_max = S0; Nc = lambda;     }\r
-               if (S1 > L_max) { L_max = S1; Nc = lambda + 1; }\r
-               if (S2 > L_max) { L_max = S2; Nc = lambda + 2; }\r
-               if (S3 > L_max) { L_max = S3; Nc = lambda + 3; }\r
-               if (S4 > L_max) { L_max = S4; Nc = lambda + 4; }\r
-               if (S5 > L_max) { L_max = S5; Nc = lambda + 5; }\r
-               if (S6 > L_max) { L_max = S6; Nc = lambda + 6; }\r
-               if (S7 > L_max) { L_max = S7; Nc = lambda + 7; }\r
-               if (S8 > L_max) { L_max = S8; Nc = lambda + 8; }\r
-       }\r
-       *Nc_out = Nc;\r
-\r
-       L_max <<= 1;\r
-\r
-       /*  Rescaling of L_max\r
-        */\r
-       assert(scal <= 100 && scal >=  -100);\r
-       L_max = L_max >> (6 - scal);    /* sub(6, scal) */\r
-\r
-       assert( Nc <= 120 && Nc >= 40);\r
-\r
-       /*   Compute the power of the reconstructed short term residual\r
-        *   signal dp[..]\r
-        */\r
-       L_power = 0;\r
-       for (k = 0; k <= 39; k++) {\r
-\r
-               register longword L_temp;\r
-\r
-               L_temp   = SASR( dp[k - Nc], 3 );\r
-               L_power += L_temp * L_temp;\r
-       }\r
-       L_power <<= 1;  /* from L_MULT */\r
-\r
-       /*  Normalization of L_max and L_power\r
-        */\r
-\r
-       if (L_max <= 0)  {\r
-               *bc_out = 0;\r
-               return;\r
-       }\r
-       if (L_max >= L_power) {\r
-               *bc_out = 3;\r
-               return;\r
-       }\r
-\r
-       temp = gsm_norm( L_power );\r
-\r
-       R = SASR( L_max   << temp, 16 );\r
-       S = SASR( L_power << temp, 16 );\r
-\r
-       /*  Coding of the LTP gain\r
-        */\r
-\r
-       /*  Table 4.3a must be used to obtain the level DLB[i] for the\r
-        *  quantization of the LTP gain b to get the coded version bc.\r
-        */\r
-       for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break;\r
-       *bc_out = bc;\r
-}\r
-\r
-#ifdef FAST\r
-#ifdef LTP_CUT\r
-\r
-static void Cut_Fast_Calculation_of_the_LTP_parameters P5((st,\r
-                                                       d,dp,bc_out,Nc_out),\r
-       struct gsm_state * st,          /*              IN      */\r
-       register word   * d,            /* [0..39]      IN      */\r
-       register word   * dp,           /* [-120..-1]   IN      */\r
-       word            * bc_out,       /*              OUT     */\r
-       word            * Nc_out        /*              OUT     */\r
-)\r
-{\r
-       register int    k, lambda;\r
-       register float  wt_float;\r
-       word            Nc, bc;\r
-       word            wt_max, best_k, ltp_cut;\r
-\r
-       float           dp_float_base[120], * dp_float = dp_float_base + 120;\r
-\r
-       register float  L_result, L_max, L_power;\r
-\r
-       wt_max = 0;\r
-\r
-       for (k = 0; k < 40; ++k) {\r
-               if      ( d[k] > wt_max) wt_max =  d[best_k = k];\r
-               else if (-d[k] > wt_max) wt_max = -d[best_k = k];\r
-       }\r
-\r
-       assert(wt_max >= 0);\r
-       wt_float = (float)wt_max;\r
-\r
-       for (k = -120; k < 0; ++k) dp_float[k] = (float)dp[k];\r
-\r
-       /* Search for the maximum cross-correlation and coding of the LTP lag\r
-        */\r
-       L_max = 0;\r
-       Nc    = 40;     /* index for the maximum cross-correlation */\r
-\r
-       for (lambda = 40; lambda <= 120; lambda++) {\r
-               L_result = wt_float * dp_float[best_k - lambda];\r
-               if (L_result > L_max) {\r
-                       Nc    = lambda;\r
-                       L_max = L_result;\r
-               }\r
-       }\r
-\r
-       *Nc_out = Nc;\r
-       if (L_max <= 0.)  {\r
-               *bc_out = 0;\r
-               return;\r
-       }\r
-\r
-       /*  Compute the power of the reconstructed short term residual\r
-        *  signal dp[..]\r
-        */\r
-       dp_float -= Nc;\r
-       L_power = 0;\r
-       for (k = 0; k < 40; ++k) {\r
-               register float f = dp_float[k];\r
-               L_power += f * f;\r
-       }\r
-\r
-       if (L_max >= L_power) {\r
-               *bc_out = 3;\r
-               return;\r
-       }\r
-\r
-       /*  Coding of the LTP gain\r
-        *  Table 4.3a must be used to obtain the level DLB[i] for the\r
-        *  quantization of the LTP gain b to get the coded version bc.\r
-        */\r
-       lambda = L_max / L_power * 32768.;\r
-       for (bc = 0; bc <= 2; ++bc) if (lambda <= gsm_DLB[bc]) break;\r
-       *bc_out = bc;\r
-}\r
-\r
-#endif /* LTP_CUT */\r
-\r
-static void Fast_Calculation_of_the_LTP_parameters P4((d,dp,bc_out,Nc_out),\r
-       register word   * d,            /* [0..39]      IN      */\r
-       register word   * dp,           /* [-120..-1]   IN      */\r
-       word            * bc_out,       /*              OUT     */\r
-       word            * Nc_out        /*              OUT     */\r
-)\r
-{\r
-       register int    k, lambda;\r
-       word            Nc, bc;\r
-\r
-       float           wt_float[40];\r
-       float           dp_float_base[120], * dp_float = dp_float_base + 120;\r
-\r
-       register float  L_max, L_power;\r
-\r
-       for (k = 0; k < 40; ++k) wt_float[k] = (float)d[k];\r
-       for (k = -120; k < 0; ++k) dp_float[k] = (float)dp[k];\r
-\r
-       /* Search for the maximum cross-correlation and coding of the LTP lag\r
-        */\r
-       L_max = 0;\r
-       Nc    = 40;     /* index for the maximum cross-correlation */\r
-\r
-       for (lambda = 40; lambda <= 120; lambda += 9) {\r
-\r
-               /*  Calculate L_result for l = lambda .. lambda + 9.\r
-                */\r
-               register float *lp = dp_float - lambda;\r
-\r
-               register float  W;\r
-               register float  a = lp[-8], b = lp[-7], c = lp[-6],\r
-                               d = lp[-5], e = lp[-4], f = lp[-3],\r
-                               g = lp[-2], h = lp[-1];\r
-               register float  E; \r
-               register float  S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0,\r
-                               S5 = 0, S6 = 0, S7 = 0, S8 = 0;\r
-\r
-#              undef STEP\r
-#              define  STEP(K, a, b, c, d, e, f, g, h) \\r
-                       W = wt_float[K];                \\r
-                       E = W * a; S8 += E;             \\r
-                       E = W * b; S7 += E;             \\r
-                       E = W * c; S6 += E;             \\r
-                       E = W * d; S5 += E;             \\r
-                       E = W * e; S4 += E;             \\r
-                       E = W * f; S3 += E;             \\r
-                       E = W * g; S2 += E;             \\r
-                       E = W * h; S1 += E;             \\r
-                       a  = lp[K];                     \\r
-                       E = W * a; S0 += E\r
-\r
-#              define  STEP_A(K)       STEP(K, a, b, c, d, e, f, g, h)\r
-#              define  STEP_B(K)       STEP(K, b, c, d, e, f, g, h, a)\r
-#              define  STEP_C(K)       STEP(K, c, d, e, f, g, h, a, b)\r
-#              define  STEP_D(K)       STEP(K, d, e, f, g, h, a, b, c)\r
-#              define  STEP_E(K)       STEP(K, e, f, g, h, a, b, c, d)\r
-#              define  STEP_F(K)       STEP(K, f, g, h, a, b, c, d, e)\r
-#              define  STEP_G(K)       STEP(K, g, h, a, b, c, d, e, f)\r
-#              define  STEP_H(K)       STEP(K, h, a, b, c, d, e, f, g)\r
-\r
-               STEP_A( 0); STEP_B( 1); STEP_C( 2); STEP_D( 3);\r
-               STEP_E( 4); STEP_F( 5); STEP_G( 6); STEP_H( 7);\r
-\r
-               STEP_A( 8); STEP_B( 9); STEP_C(10); STEP_D(11);\r
-               STEP_E(12); STEP_F(13); STEP_G(14); STEP_H(15);\r
-\r
-               STEP_A(16); STEP_B(17); STEP_C(18); STEP_D(19);\r
-               STEP_E(20); STEP_F(21); STEP_G(22); STEP_H(23);\r
-\r
-               STEP_A(24); STEP_B(25); STEP_C(26); STEP_D(27);\r
-               STEP_E(28); STEP_F(29); STEP_G(30); STEP_H(31);\r
-\r
-               STEP_A(32); STEP_B(33); STEP_C(34); STEP_D(35);\r
-               STEP_E(36); STEP_F(37); STEP_G(38); STEP_H(39);\r
-\r
-               if (S0 > L_max) { L_max = S0; Nc = lambda;     }\r
-               if (S1 > L_max) { L_max = S1; Nc = lambda + 1; }\r
-               if (S2 > L_max) { L_max = S2; Nc = lambda + 2; }\r
-               if (S3 > L_max) { L_max = S3; Nc = lambda + 3; }\r
-               if (S4 > L_max) { L_max = S4; Nc = lambda + 4; }\r
-               if (S5 > L_max) { L_max = S5; Nc = lambda + 5; }\r
-               if (S6 > L_max) { L_max = S6; Nc = lambda + 6; }\r
-               if (S7 > L_max) { L_max = S7; Nc = lambda + 7; }\r
-               if (S8 > L_max) { L_max = S8; Nc = lambda + 8; }\r
-       }\r
-       *Nc_out = Nc;\r
-\r
-       if (L_max <= 0.)  {\r
-               *bc_out = 0;\r
-               return;\r
-       }\r
-\r
-       /*  Compute the power of the reconstructed short term residual\r
-        *  signal dp[..]\r
-        */\r
-       dp_float -= Nc;\r
-       L_power = 0;\r
-       for (k = 0; k < 40; ++k) {\r
-               register float f = dp_float[k];\r
-               L_power += f * f;\r
-       }\r
-\r
-       if (L_max >= L_power) {\r
-               *bc_out = 3;\r
-               return;\r
-       }\r
-\r
-       /*  Coding of the LTP gain\r
-        *  Table 4.3a must be used to obtain the level DLB[i] for the\r
-        *  quantization of the LTP gain b to get the coded version bc.\r
-        */\r
-       lambda = L_max / L_power * 32768.;\r
-       for (bc = 0; bc <= 2; ++bc) if (lambda <= gsm_DLB[bc]) break;\r
-       *bc_out = bc;\r
-}\r
-\r
-#endif /* FAST          */\r
-#endif /* USE_FLOAT_MUL */\r
-\r
-\r
-/* 4.2.12 */\r
-\r
-static void Long_term_analysis_filtering P6((bc,Nc,dp,d,dpp,e),\r
-       word            bc,     /*                                      IN  */\r
-       word            Nc,     /*                                      IN  */\r
-       register word   * dp,   /* previous d   [-120..-1]              IN  */\r
-       register word   * d,    /* d            [0..39]                 IN  */\r
-       register word   * dpp,  /* estimate     [0..39]                 OUT */\r
-       register word   * e     /* long term res. signal [0..39]        OUT */\r
-)\r
-/*\r
- *  In this part, we have to decode the bc parameter to compute\r
- *  the samples of the estimate dpp[0..39].  The decoding of bc needs the\r
- *  use of table 4.3b.  The long term residual signal e[0..39]\r
- *  is then calculated to be fed to the RPE encoding section.\r
- */\r
-{\r
-       register int      k;\r
-\r
-#      undef STEP\r
-#      define STEP(BP)                                 \\r
-       for (k = 0; k <= 39; k++) {                     \\r
-               dpp[k]  = GSM_MULT_R( BP, dp[k - Nc]);  \\r
-               e[k]    = GSM_SUB( d[k], dpp[k] );      \\r
-       }\r
-\r
-       switch (bc) {\r
-       case 0: STEP(  3277 ); break;\r
-       case 1: STEP( 11469 ); break;\r
-       case 2: STEP( 21299 ); break;\r
-       case 3: STEP( 32767 ); break; \r
-       }\r
-}\r
-\r
-void Gsm_Long_Term_Predictor P7((S,d,dp,e,dpp,Nc,bc),  /* 4x for 160 samples */\r
-\r
-       struct gsm_state        * S,\r
-\r
-       word    * d,    /* [0..39]   residual signal    IN      */\r
-       word    * dp,   /* [-120..-1] d'                IN      */\r
-\r
-       word    * e,    /* [0..39]                      OUT     */\r
-       word    * dpp,  /* [0..39]                      OUT     */\r
-       word    * Nc,   /* correlation lag              OUT     */\r
-       word    * bc    /* gain factor                  OUT     */\r
-)\r
-{\r
-       assert( d  ); assert( dp ); assert( e  );\r
-       assert( dpp); assert( Nc ); assert( bc );\r
-\r
-#if defined(FAST) && defined(USE_FLOAT_MUL)\r
-       if (S->fast) \r
-#if   defined (LTP_CUT)\r
-               if (S->ltp_cut)\r
-                       Cut_Fast_Calculation_of_the_LTP_parameters(S,\r
-                               d, dp, bc, Nc);\r
-               else\r
-#endif /* LTP_CUT */\r
-                       Fast_Calculation_of_the_LTP_parameters(d, dp, bc, Nc );\r
-       else \r
-#endif /* FAST & USE_FLOAT_MUL */\r
-#ifdef LTP_CUT\r
-               if (S->ltp_cut)\r
-                       Cut_Calculation_of_the_LTP_parameters(S, d, dp, bc, Nc);\r
-               else\r
-#endif\r
-                       Calculation_of_the_LTP_parameters(d, dp, bc, Nc);\r
-\r
-       Long_term_analysis_filtering( *bc, *Nc, dp, d, dpp, e );\r
-}\r
-\r
-/* 4.3.2 */\r
-void Gsm_Long_Term_Synthesis_Filtering P5((S,Ncr,bcr,erp,drp),\r
-       struct gsm_state        * S,\r
-\r
-       word                    Ncr,\r
-       word                    bcr,\r
-       register word           * erp,     /* [0..39]                    IN */\r
-       register word           * drp      /* [-120..-1] IN, [-120..40] OUT */\r
-)\r
-/*\r
- *  This procedure uses the bcr and Ncr parameter to realize the\r
- *  long term synthesis filtering.  The decoding of bcr needs\r
- *  table 4.3b.\r
- */\r
-{\r
-       register int            k;\r
-       word                    brp, drpp, Nr;\r
-\r
-       /*  Check the limits of Nr.\r
-        */\r
-       Nr = Ncr < 40 || Ncr > 120 ? S->nrp : Ncr;\r
-       S->nrp = Nr;\r
-       assert(Nr >= 40 && Nr <= 120);\r
-\r
-       /*  Decoding of the LTP gain bcr\r
-        */\r
-       brp = gsm_QLB[ bcr ];\r
-\r
-       /*  Computation of the reconstructed short term residual \r
-        *  signal drp[0..39]\r
-        */\r
-       assert(brp != MIN_WORD);\r
-\r
-       for (k = 0; k <= 39; k++) {\r
-               drpp   = GSM_MULT_R( brp, drp[ k - Nr ] );\r
-               drp[k] = GSM_ADD( erp[k], drpp );\r
-       }\r
-\r
-       /*\r
-        *  Update of the reconstructed short term residual signal\r
-        *  drp[ -1..-120 ]\r
-        */\r
-\r
-       for (k = 0; k <= 119; k++) drp[ -120 + k ] = drp[ -80 + k ];\r
-}\r
diff --git a/libs/codecs/gsm/src/lpc.c b/libs/codecs/gsm/src/lpc.c
deleted file mode 100644 (file)
index 9e2e153..0000000
+++ /dev/null
@@ -1,369 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include <stdio.h>\r
-#include <assert.h>\r
-\r
-#include "private.h"\r
-\r
-#include "gsm.h"\r
-#include "proto.h"\r
-\r
-#ifdef K6OPT\r
-#include "k6opt.h"\r
-#endif\r
-\r
-#undef P\r
-\r
-/*\r
- *  4.2.4 .. 4.2.7 LPC ANALYSIS SECTION\r
- */\r
-\r
-/* 4.2.4 */\r
-\r
-\r
-static void Autocorrelation P2((s, L_ACF),\r
-       word     * s,           /* [0..159]     IN/OUT  */\r
-       longword * L_ACF)       /* [0..8]       OUT     */\r
-/*\r
- *  The goal is to compute the array L_ACF[k].  The signal s[i] must\r
- *  be scaled in order to avoid an overflow situation.\r
- */\r
-{\r
-       register int    k, i;\r
-\r
-       word            temp, smax, scalauto;\r
-\r
-#ifdef USE_FLOAT_MUL\r
-       float           float_s[160];\r
-#endif\r
-\r
-       /*  Dynamic scaling of the array  s[0..159]\r
-        */\r
-\r
-       /*  Search for the maximum.\r
-        */\r
-#ifndef K6OPT\r
-       smax = 0;\r
-       for (k = 0; k <= 159; k++) {\r
-               temp = GSM_ABS( s[k] );\r
-               if (temp > smax) smax = temp;\r
-       }\r
-#else\r
-       {\r
-               longword lmax;\r
-               lmax = k6maxmin(s,160,NULL);\r
-               smax = (lmax > MAX_WORD) ? MAX_WORD : lmax;\r
-       }\r
-#endif\r
-       /*  Computation of the scaling factor.\r
-        */\r
-       if (smax == 0) scalauto = 0;\r
-       else {\r
-               assert(smax > 0);\r
-               scalauto = 4 - gsm_norm( (longword)smax << 16 );/* sub(4,..) */\r
-       }\r
-\r
-       /*  Scaling of the array s[0...159]\r
-        */\r
-\r
-       if (scalauto > 0) {\r
-#      ifndef K6OPT\r
-\r
-# ifdef USE_FLOAT_MUL\r
-#   define SCALE(n)    \\r
-       case n: for (k = 0; k <= 159; k++) \\r
-                       float_s[k] = (float)    \\r
-                               (s[k] = GSM_MULT_R(s[k], 16384 >> (n-1)));\\r
-               break;\r
-# else \r
-#   define SCALE(n)    \\r
-       case n: for (k = 0; k <= 159; k++) \\r
-                       s[k] = GSM_MULT_R( s[k], 16384 >> (n-1) );\\r
-               break;\r
-# endif /* USE_FLOAT_MUL */\r
-\r
-               switch (scalauto) {\r
-               SCALE(1)\r
-               SCALE(2)\r
-               SCALE(3)\r
-               SCALE(4)\r
-               }\r
-# undef        SCALE\r
-\r
-#      else /* K6OPT */\r
-               k6vsraw(s,160,scalauto);\r
-#      endif\r
-       }\r
-# ifdef        USE_FLOAT_MUL\r
-       else for (k = 0; k <= 159; k++) float_s[k] = (float) s[k];\r
-# endif\r
-\r
-       /*  Compute the L_ACF[..].\r
-        */\r
-#ifndef K6OPT\r
-       {\r
-# ifdef        USE_FLOAT_MUL\r
-               register float * sp = float_s;\r
-               register float   sl = *sp;\r
-\r
-#              define STEP(k)   L_ACF[k] += (longword)(sl * sp[ -(k) ]);\r
-# else\r
-               word  * sp = s;\r
-               word    sl = *sp;\r
-\r
-#              define STEP(k)   L_ACF[k] += ((longword)sl * sp[ -(k) ]);\r
-# endif\r
-\r
-#      define NEXTI     sl = *++sp\r
-\r
-\r
-       for (k = 9; k--; L_ACF[k] = 0) ;\r
-\r
-       STEP (0);\r
-       NEXTI;\r
-       STEP(0); STEP(1);\r
-       NEXTI;\r
-       STEP(0); STEP(1); STEP(2);\r
-       NEXTI;\r
-       STEP(0); STEP(1); STEP(2); STEP(3);\r
-       NEXTI;\r
-       STEP(0); STEP(1); STEP(2); STEP(3); STEP(4);\r
-       NEXTI;\r
-       STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5);\r
-       NEXTI;\r
-       STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5); STEP(6);\r
-       NEXTI;\r
-       STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5); STEP(6); STEP(7);\r
-\r
-       for (i = 8; i <= 159; i++) {\r
-\r
-               NEXTI;\r
-\r
-               STEP(0);\r
-               STEP(1); STEP(2); STEP(3); STEP(4);\r
-               STEP(5); STEP(6); STEP(7); STEP(8);\r
-       }\r
-\r
-       for (k = 9; k--; L_ACF[k] <<= 1) ; \r
-\r
-       }\r
-\r
-#else\r
-       {\r
-               int k;\r
-               for (k=0; k<9; k++) {\r
-                       L_ACF[k] = 2*k6iprod(s,s+k,160-k);\r
-               }\r
-       }\r
-#endif\r
-       /*   Rescaling of the array s[0..159]\r
-        */\r
-       if (scalauto > 0) {\r
-               assert(scalauto <= 4); \r
-#ifndef K6OPT\r
-               for (k = 160; k--; *s++ <<= scalauto) ;\r
-#      else /* K6OPT */\r
-               k6vsllw(s,160,scalauto);\r
-#      endif\r
-       }\r
-}\r
-\r
-#if defined(USE_FLOAT_MUL) && defined(FAST)\r
-\r
-static void Fast_Autocorrelation P2((s, L_ACF),\r
-       word * s,               /* [0..159]     IN/OUT  */\r
-       longword * L_ACF)       /* [0..8]       OUT     */\r
-{\r
-       register int    k, i;\r
-       float f_L_ACF[9];\r
-       float scale;\r
-\r
-       float          s_f[160];\r
-       register float *sf = s_f;\r
-\r
-       for (i = 0; i < 160; ++i) sf[i] = s[i];\r
-       for (k = 0; k <= 8; k++) {\r
-               register float L_temp2 = 0;\r
-               register float *sfl = sf - k;\r
-               for (i = k; i < 160; ++i) L_temp2 += sf[i] * sfl[i];\r
-               f_L_ACF[k] = L_temp2;\r
-       }\r
-       scale = MAX_LONGWORD / f_L_ACF[0];\r
-\r
-       for (k = 0; k <= 8; k++) {\r
-               L_ACF[k] = f_L_ACF[k] * scale;\r
-       }\r
-}\r
-#endif /* defined (USE_FLOAT_MUL) && defined (FAST) */\r
-\r
-/* 4.2.5 */\r
-\r
-static void Reflection_coefficients P2( (L_ACF, r),\r
-       longword        * L_ACF,                /* 0...8        IN      */\r
-       register word   * r                     /* 0...7        OUT     */\r
-)\r
-{\r
-       register int    i, m, n;\r
-       register word   temp;\r
-       word            ACF[9]; /* 0..8 */\r
-       word            P[  9]; /* 0..8 */\r
-       word            K[  9]; /* 2..8 */\r
-\r
-       /*  Schur recursion with 16 bits arithmetic.\r
-        */\r
-\r
-       if (L_ACF[0] == 0) {\r
-               for (i = 8; i--; *r++ = 0) ;\r
-               return;\r
-       }\r
-\r
-       assert( L_ACF[0] != 0 );\r
-       temp = gsm_norm( L_ACF[0] );\r
-\r
-       assert(temp >= 0 && temp < 32);\r
-\r
-       /* ? overflow ? */\r
-       for (i = 0; i <= 8; i++) ACF[i] = SASR( L_ACF[i] << temp, 16 );\r
-\r
-       /*   Initialize array P[..] and K[..] for the recursion.\r
-        */\r
-\r
-       for (i = 1; i <= 7; i++) K[ i ] = ACF[ i ];\r
-       for (i = 0; i <= 8; i++) P[ i ] = ACF[ i ];\r
-\r
-       /*   Compute reflection coefficients\r
-        */\r
-       for (n = 1; n <= 8; n++, r++) {\r
-\r
-               temp = P[1];\r
-               temp = GSM_ABS(temp);\r
-               if (P[0] < temp) {\r
-                       for (i = n; i <= 8; i++) *r++ = 0;\r
-                       return;\r
-               }\r
-\r
-               *r = gsm_div( temp, P[0] );\r
-\r
-               assert(*r >= 0);\r
-               if (P[1] > 0) *r = -*r;         /* r[n] = sub(0, r[n]) */\r
-               assert (*r != MIN_WORD);\r
-               if (n == 8) return; \r
-\r
-               /*  Schur recursion\r
-                */\r
-               temp = GSM_MULT_R( P[1], *r );\r
-               P[0] = GSM_ADD( P[0], temp );\r
-\r
-               for (m = 1; m <= 8 - n; m++) {\r
-                       temp     = GSM_MULT_R( K[ m   ],    *r );\r
-                       P[m]     = GSM_ADD(    P[ m+1 ],  temp );\r
-\r
-                       temp     = GSM_MULT_R( P[ m+1 ],    *r );\r
-                       K[m]     = GSM_ADD(    K[ m   ],  temp );\r
-               }\r
-       }\r
-}\r
-\r
-/* 4.2.6 */\r
-\r
-static void Transformation_to_Log_Area_Ratios P1((r),\r
-       register word   * r                     /* 0..7    IN/OUT */\r
-)\r
-/*\r
- *  The following scaling for r[..] and LAR[..] has been used:\r
- *\r
- *  r[..]   = integer( real_r[..]*32768. ); -1 <= real_r < 1.\r
- *  LAR[..] = integer( real_LAR[..] * 16384 );\r
- *  with -1.625 <= real_LAR <= 1.625\r
- */\r
-{\r
-       register word   temp;\r
-       register int    i;\r
-\r
-\r
-       /* Computation of the LAR[0..7] from the r[0..7]\r
-        */\r
-       for (i = 1; i <= 8; i++, r++) {\r
-\r
-               temp = *r;\r
-               temp = GSM_ABS(temp);\r
-               assert(temp >= 0);\r
-\r
-               if (temp < 22118) {\r
-                       temp >>= 1;\r
-               } else if (temp < 31130) {\r
-                       assert( temp >= 11059 );\r
-                       temp -= 11059;\r
-               } else {\r
-                       assert( temp >= 26112 );\r
-                       temp -= 26112;\r
-                       temp <<= 2;\r
-               }\r
-\r
-               *r = *r < 0 ? -temp : temp;\r
-               assert( *r != MIN_WORD );\r
-       }\r
-}\r
-\r
-/* 4.2.7 */\r
-\r
-static void Quantization_and_coding P1((LAR),\r
-       register word * LAR     /* [0..7]       IN/OUT  */\r
-)\r
-{\r
-       register word   temp;\r
-\r
-\r
-       /*  This procedure needs four tables; the following equations\r
-        *  give the optimum scaling for the constants:\r
-        *  \r
-        *  A[0..7] = integer( real_A[0..7] * 1024 )\r
-        *  B[0..7] = integer( real_B[0..7] *  512 )\r
-        *  MAC[0..7] = maximum of the LARc[0..7]\r
-        *  MIC[0..7] = minimum of the LARc[0..7]\r
-        */\r
-\r
-#      undef STEP\r
-#      define  STEP( A, B, MAC, MIC )          \\r
-               temp = GSM_MULT( A,   *LAR );   \\r
-               temp = GSM_ADD(  temp,   B );   \\r
-               temp = GSM_ADD(  temp, 256 );   \\r
-               temp = SASR(     temp,   9 );   \\r
-               *LAR  =  temp>MAC ? MAC - MIC : (temp<MIC ? 0 : temp - MIC); \\r
-               LAR++;\r
-\r
-       STEP(  20480,     0,  31, -32 );\r
-       STEP(  20480,     0,  31, -32 );\r
-       STEP(  20480,  2048,  15, -16 );\r
-       STEP(  20480, -2560,  15, -16 );\r
-\r
-       STEP(  13964,    94,   7,  -8 );\r
-       STEP(  15360, -1792,   7,  -8 );\r
-       STEP(   8534,  -341,   3,  -4 );\r
-       STEP(   9036, -1144,   3,  -4 );\r
-\r
-#      undef   STEP\r
-}\r
-\r
-void Gsm_LPC_Analysis P3((S, s,LARc),\r
-       struct gsm_state *S,\r
-       word             * s,           /* 0..159 signals       IN/OUT  */\r
-        word            * LARc)        /* 0..7   LARc's        OUT     */\r
-{\r
-       longword        L_ACF[9];\r
-\r
-#if defined(USE_FLOAT_MUL) && defined(FAST)\r
-       if (S->fast) Fast_Autocorrelation (s,     L_ACF );\r
-       else\r
-#endif\r
-       Autocorrelation                   (s,     L_ACF );\r
-       Reflection_coefficients           (L_ACF, LARc  );\r
-       Transformation_to_Log_Area_Ratios (LARc);\r
-       Quantization_and_coding           (LARc);\r
-}\r
diff --git a/libs/codecs/gsm/src/preprocess.c b/libs/codecs/gsm/src/preprocess.c
deleted file mode 100644 (file)
index ed12ad2..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include       <stdio.h>\r
-#include       <assert.h>\r
-\r
-#include "private.h"\r
-\r
-#include       "gsm.h"\r
-#include       "proto.h"\r
-\r
-/*     4.2.0 .. 4.2.3  PREPROCESSING SECTION\r
- *  \r
- *     After A-law to linear conversion (or directly from the\r
- *     Ato D converter) the following scaling is assumed for\r
- *     input to the RPE-LTP algorithm:\r
- *\r
- *      in:  0.1.....................12\r
- *          S.v.v.v.v.v.v.v.v.v.v.v.v.*.*.*\r
- *\r
- *     Where S is the sign bit, v a valid bit, and * a "don't care" bit.\r
- *     The original signal is called sop[..]\r
- *\r
- *      out:   0.1................... 12 \r
- *          S.S.v.v.v.v.v.v.v.v.v.v.v.v.0.0\r
- */\r
-\r
-\r
-void Gsm_Preprocess P3((S, s, so),\r
-       struct gsm_state * S,\r
-       word             * s,\r
-       word             * so )         /* [0..159]     IN/OUT  */\r
-{\r
-\r
-       word       z1 = S->z1;\r
-       longword L_z2 = S->L_z2;\r
-       word       mp = S->mp;\r
-\r
-       word            s1;\r
-\r
-\r
-       word            SO;\r
-\r
-       ulongword       utmp;           /* for L_ADD */\r
-\r
-       register int            k = 160;\r
-\r
-       while (k--) {\r
-\r
-       /*  4.2.1   Downscaling of the input signal\r
-        */\r
-               /* SO = SASR( *s, 3 ) << 2;*/\r
-               SO = SASR( *s, 1 ) & ~3;\r
-               s++;\r
-\r
-               assert (SO >= -0x4000); /* downscaled by     */\r
-               assert (SO <=  0x3FFC); /* previous routine. */\r
-\r
-\r
-       /*  4.2.2   Offset compensation\r
-        * \r
-        *  This part implements a high-pass filter and requires extended\r
-        *  arithmetic precision for the recursive part of this filter.\r
-        *  The input of this procedure is the array so[0...159] and the\r
-        *  output the array sof[ 0...159 ].\r
-        */\r
-               /*   Compute the non-recursive part\r
-                */\r
-\r
-               s1 = SO - z1;                   /* s1 = gsm_sub( *so, z1 ); */\r
-               z1 = SO;\r
-\r
-               assert(s1 != MIN_WORD);\r
-\r
-       /* SJB Remark: float might be faster than the mess that follows */\r
-\r
-               /*   Compute the recursive part\r
-                */\r
-\r
-               /*   Execution of a 31 bv 16 bits multiplication\r
-                */\r
-               {\r
-               word            msp;\r
-#ifndef __GNUC__ \r
-               word            lsp;\r
-#endif\r
-               longword L_s2;\r
-               longword L_temp;\r
-               \r
-               L_s2 = s1;\r
-               L_s2 <<= 15;\r
-#ifndef __GNUC__ \r
-               msp = SASR( L_z2, 15 );\r
-               lsp = L_z2 & 0x7fff; /* gsm_L_sub(L_z2,(msp<<15)); */\r
-\r
-               L_s2  += GSM_MULT_R( lsp, 32735 );\r
-               L_temp = (longword)msp * 32735; /* GSM_L_MULT(msp,32735) >> 1;*/\r
-               L_z2   = GSM_L_ADD( L_temp, L_s2 );\r
-               /* above does L_z2  = L_z2 * 0x7fd5/0x8000 + L_s2 */\r
-#else\r
-               L_z2 = ((long long)L_z2*32735 + 0x4000)>>15;\r
-               /* alternate (ansi) version of above line does slightly different rounding:\r
-                * L_temp = L_z2 >> 9;\r
-                * L_temp += L_temp >> 5;\r
-                * L_temp = (++L_temp) >> 1;\r
-                * L_z2 = L_z2 - L_temp;\r
-                */\r
-               L_z2 = GSM_L_ADD(L_z2,L_s2);\r
-#endif\r
-               /*    Compute sof[k] with rounding\r
-                */\r
-               L_temp = GSM_L_ADD( L_z2, 16384 );\r
-\r
-       /*   4.2.3  Preemphasis\r
-        */\r
-\r
-               msp   = GSM_MULT_R( mp, -28180 );\r
-               mp    = SASR( L_temp, 15 );\r
-               *so++ = GSM_ADD( mp, msp );\r
-               }\r
-       }\r
-\r
-       S->z1   = z1;\r
-       S->L_z2 = L_z2;\r
-       S->mp   = mp;\r
-}\r
diff --git a/libs/codecs/gsm/src/rpe.c b/libs/codecs/gsm/src/rpe.c
deleted file mode 100644 (file)
index 7f3b7eb..0000000
+++ /dev/null
@@ -1,490 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include <stdio.h>\r
-#include <assert.h>\r
-\r
-#include "private.h"\r
-\r
-#include "gsm.h"\r
-#include "proto.h"\r
-\r
-/*  4.2.13 .. 4.2.17  RPE ENCODING SECTION\r
- */\r
-\r
-/* 4.2.13 */\r
-#ifdef K6OPT\r
-#include "k6opt.h"\r
-#else\r
-static void Weighting_filter P2((e, x),\r
-       register word   * e,            /* signal [-5..0.39.44] IN  */\r
-       word            * x             /* signal [0..39]       OUT */\r
-)\r
-/*\r
- *  The coefficients of the weighting filter are stored in a table\r
- *  (see table 4.4).  The following scaling is used:\r
- *\r
- *     H[0..10] = integer( real_H[ 0..10] * 8192 ); \r
- */\r
-{\r
-       /* word                 wt[ 50 ]; */\r
-\r
-       register longword       L_result;\r
-       register int            k /* , i */ ;\r
-\r
-       /*  Initialization of a temporary working array wt[0...49]\r
-        */\r
-\r
-       /* for (k =  0; k <=  4; k++) wt[k] = 0;\r
-        * for (k =  5; k <= 44; k++) wt[k] = *e++;\r
-        * for (k = 45; k <= 49; k++) wt[k] = 0;\r
-        *\r
-        *  (e[-5..-1] and e[40..44] are allocated by the caller,\r
-        *  are initially zero and are not written anywhere.)\r
-        */\r
-       e -= 5;\r
-\r
-       /*  Compute the signal x[0..39]\r
-        */ \r
-       for (k = 0; k <= 39; k++) {\r
-\r
-               L_result = 8192 >> 1;\r
-\r
-               /* for (i = 0; i <= 10; i++) {\r
-                *      L_temp   = GSM_L_MULT( wt[k+i], gsm_H[i] );\r
-                *      L_result = GSM_L_ADD( L_result, L_temp );\r
-                * }\r
-                */\r
-\r
-#undef STEP\r
-#define        STEP( i, H )    (e[ k + i ] * (longword)H)\r
-\r
-               /*  Every one of these multiplications is done twice --\r
-                *  but I don't see an elegant way to optimize this. \r
-                *  Do you?\r
-                */\r
-\r
-#ifdef STUPID_COMPILER\r
-               L_result += STEP(       0,      -134 ) ;\r
-               L_result += STEP(       1,      -374 )  ;\r
-                      /* + STEP(       2,      0    )  */\r
-               L_result += STEP(       3,      2054 ) ;\r
-               L_result += STEP(       4,      5741 ) ;\r
-               L_result += STEP(       5,      8192 ) ;\r
-               L_result += STEP(       6,      5741 ) ;\r
-               L_result += STEP(       7,      2054 ) ;\r
-                      /* + STEP(       8,      0    )  */\r
-               L_result += STEP(       9,      -374 ) ;\r
-               L_result += STEP(       10,     -134 ) ;\r
-#else\r
-               L_result +=\r
-                 STEP( 0,      -134 ) \r
-               + STEP( 1,      -374 ) \r
-            /* + STEP( 2,      0    )  */\r
-               + STEP( 3,      2054 ) \r
-               + STEP( 4,      5741 ) \r
-               + STEP( 5,      8192 ) \r
-               + STEP( 6,      5741 ) \r
-               + STEP( 7,      2054 ) \r
-            /* + STEP( 8,      0    )  */\r
-               + STEP( 9,      -374 ) \r
-               + STEP(10,      -134 )\r
-               ;\r
-#endif\r
-\r
-               /* L_result = GSM_L_ADD( L_result, L_result ); (* scaling(x2) *)\r
-                * L_result = GSM_L_ADD( L_result, L_result ); (* scaling(x4) *)\r
-                *\r
-                * x[k] = SASR( L_result, 16 );\r
-                */\r
-\r
-               /* 2 adds vs. >>16 => 14, minus one shift to compensate for\r
-                * those we lost when replacing L_MULT by '*'.\r
-                */\r
-\r
-               L_result = SASR( L_result, 13 );\r
-               x[k] =  (  L_result < MIN_WORD ? MIN_WORD\r
-                       : (L_result > MAX_WORD ? MAX_WORD : L_result ));\r
-       }\r
-}\r
-#endif /* K6OPT */\r
-\r
-/* 4.2.14 */\r
-\r
-static void RPE_grid_selection P3((x,xM,Mc_out),\r
-       word            * x,            /* [0..39]              IN  */ \r
-       word            * xM,           /* [0..12]              OUT */\r
-       word            * Mc_out        /*                      OUT */\r
-)\r
-/*\r
- *  The signal x[0..39] is used to select the RPE grid which is\r
- *  represented by Mc.\r
- */\r
-{\r
-       /* register word        temp1;  */\r
-       register int            /* m, */  i;\r
-       register longword       L_result, L_temp;\r
-       longword                EM;     /* xxx should be L_EM? */\r
-       word                    Mc;\r
-\r
-       longword                L_common_0_3;\r
-\r
-       EM = 0;\r
-       Mc = 0;\r
-\r
-       /* for (m = 0; m <= 3; m++) {\r
-        *      L_result = 0;\r
-        *\r
-        *\r
-        *      for (i = 0; i <= 12; i++) {\r
-        *\r
-        *              temp1    = SASR( x[m + 3*i], 2 );\r
-        *\r
-        *              assert(temp1 != MIN_WORD);\r
-        *\r
-        *              L_temp   = GSM_L_MULT( temp1, temp1 );\r
-        *              L_result = GSM_L_ADD( L_temp, L_result );\r
-        *      }\r
-        * \r
-        *      if (L_result > EM) {\r
-        *              Mc = m;\r
-        *              EM = L_result;\r
-        *      }\r
-        * }\r
-        */\r
-\r
-#undef STEP\r
-#define        STEP( m, i )            L_temp = SASR( x[m + 3 * i], 2 );       \\r
-                               L_result += L_temp * L_temp;\r
-\r
-       /* common part of 0 and 3 */\r
-\r
-       L_result = 0;\r
-       STEP( 0, 1 ); STEP( 0, 2 ); STEP( 0, 3 ); STEP( 0, 4 );\r
-       STEP( 0, 5 ); STEP( 0, 6 ); STEP( 0, 7 ); STEP( 0, 8 );\r
-       STEP( 0, 9 ); STEP( 0, 10); STEP( 0, 11); STEP( 0, 12);\r
-       L_common_0_3 = L_result;\r
-\r
-       /* i = 0 */\r
-\r
-       STEP( 0, 0 );\r
-       L_result <<= 1; /* implicit in L_MULT */\r
-       EM = L_result;\r
-\r
-       /* i = 1 */\r
-\r
-       L_result = 0;\r
-       STEP( 1, 0 );\r
-       STEP( 1, 1 ); STEP( 1, 2 ); STEP( 1, 3 ); STEP( 1, 4 );\r
-       STEP( 1, 5 ); STEP( 1, 6 ); STEP( 1, 7 ); STEP( 1, 8 );\r
-       STEP( 1, 9 ); STEP( 1, 10); STEP( 1, 11); STEP( 1, 12);\r
-       L_result <<= 1;\r
-       if (L_result > EM) {\r
-               Mc = 1;\r
-               EM = L_result;\r
-       }\r
-\r
-       /* i = 2 */\r
-\r
-       L_result = 0;\r
-       STEP( 2, 0 );\r
-       STEP( 2, 1 ); STEP( 2, 2 ); STEP( 2, 3 ); STEP( 2, 4 );\r
-       STEP( 2, 5 ); STEP( 2, 6 ); STEP( 2, 7 ); STEP( 2, 8 );\r
-       STEP( 2, 9 ); STEP( 2, 10); STEP( 2, 11); STEP( 2, 12);\r
-       L_result <<= 1;\r
-       if (L_result > EM) {\r
-               Mc = 2;\r
-               EM = L_result;\r
-       }\r
-\r
-       /* i = 3 */\r
-\r
-       L_result = L_common_0_3;\r
-       STEP( 3, 12 );\r
-       L_result <<= 1;\r
-       if (L_result > EM) {\r
-               Mc = 3;\r
-               EM = L_result;\r
-       }\r
-\r
-       /**/\r
-\r
-       /*  Down-sampling by a factor 3 to get the selected xM[0..12]\r
-        *  RPE sequence.\r
-        */\r
-       for (i = 0; i <= 12; i ++) xM[i] = x[Mc + 3*i];\r
-       *Mc_out = Mc;\r
-}\r
-\r
-/* 4.12.15 */\r
-\r
-static void APCM_quantization_xmaxc_to_exp_mant P3((xmaxc,exp_out,mant_out),\r
-       word            xmaxc,          /* IN   */\r
-       word            * exp_out,      /* OUT  */\r
-       word            * mant_out )    /* OUT  */\r
-{\r
-       word    exp, mant;\r
-\r
-       /* Compute exponent and mantissa of the decoded version of xmaxc\r
-        */\r
-\r
-       exp = 0;\r
-       if (xmaxc > 15) exp = SASR(xmaxc, 3) - 1;\r
-       mant = xmaxc - (exp << 3);\r
-\r
-       if (mant == 0) {\r
-               exp  = -4;\r
-               mant = 7;\r
-       }\r
-       else {\r
-               while (mant <= 7) {\r
-                       mant = mant << 1 | 1;\r
-                       exp--;\r
-               }\r
-               mant -= 8;\r
-       }\r
-\r
-       assert( exp  >= -4 && exp <= 6 );\r
-       assert( mant >= 0 && mant <= 7 );\r
-\r
-       *exp_out  = exp;\r
-       *mant_out = mant;\r
-}\r
-\r
-static void APCM_quantization P5((xM,xMc,mant_out,exp_out,xmaxc_out),\r
-       word            * xM,           /* [0..12]              IN      */\r
-\r
-       word            * xMc,          /* [0..12]              OUT     */\r
-       word            * mant_out,     /*                      OUT     */\r
-       word            * exp_out,      /*                      OUT     */\r
-       word            * xmaxc_out     /*                      OUT     */\r
-)\r
-{\r
-       int     i, itest;\r
-\r
-       word    xmax, xmaxc, temp, temp1, temp2;\r
-       word    exp, mant;\r
-\r
-\r
-       /*  Find the maximum absolute value xmax of xM[0..12].\r
-        */\r
-\r
-       xmax = 0;\r
-       for (i = 0; i <= 12; i++) {\r
-               temp = xM[i];\r
-               temp = GSM_ABS(temp);\r
-               if (temp > xmax) xmax = temp;\r
-       }\r
-\r
-       /*  Qantizing and coding of xmax to get xmaxc.\r
-        */\r
-\r
-       exp   = 0;\r
-       temp  = SASR( xmax, 9 );\r
-       itest = 0;\r
-\r
-       for (i = 0; i <= 5; i++) {\r
-\r
-               itest |= (temp <= 0);\r
-               temp = SASR( temp, 1 );\r
-\r
-               assert(exp <= 5);\r
-               if (itest == 0) exp++;          /* exp = add (exp, 1) */\r
-       }\r
-\r
-       assert(exp <= 6 && exp >= 0);\r
-       temp = exp + 5;\r
-\r
-       assert(temp <= 11 && temp >= 0);\r
-       xmaxc = gsm_add( SASR(xmax, temp), exp << 3 );\r
-\r
-       /*   Quantizing and coding of the xM[0..12] RPE sequence\r
-        *   to get the xMc[0..12]\r
-        */\r
-\r
-       APCM_quantization_xmaxc_to_exp_mant( xmaxc, &exp, &mant );\r
-\r
-       /*  This computation uses the fact that the decoded version of xmaxc\r
-        *  can be calculated by using the exponent and the mantissa part of\r
-        *  xmaxc (logarithmic table).\r
-        *  So, this method avoids any division and uses only a scaling\r
-        *  of the RPE samples by a function of the exponent.  A direct \r
-        *  multiplication by the inverse of the mantissa (NRFAC[0..7]\r
-        *  found in table 4.5) gives the 3 bit coded version xMc[0..12]\r
-        *  of the RPE samples.\r
-        */\r
-\r
-\r
-       /* Direct computation of xMc[0..12] using table 4.5\r
-        */\r
-\r
-       assert( exp <= 4096 && exp >= -4096);\r
-       assert( mant >= 0 && mant <= 7 ); \r
-\r
-       temp1 = 6 - exp;                /* normalization by the exponent */\r
-       temp2 = gsm_NRFAC[ mant ];      /* inverse mantissa              */\r
-\r
-       for (i = 0; i <= 12; i++) {\r
-\r
-               assert(temp1 >= 0 && temp1 < 16);\r
-\r
-               temp = xM[i] << temp1;\r
-               temp = GSM_MULT( temp, temp2 );\r
-               temp = SASR(temp, 12);\r
-               xMc[i] = temp + 4;              /* see note below */\r
-       }\r
-\r
-       /*  NOTE: This equation is used to make all the xMc[i] positive.\r
-        */\r
-\r
-       *mant_out  = mant;\r
-       *exp_out   = exp;\r
-       *xmaxc_out = xmaxc;\r
-}\r
-\r
-/* 4.2.16 */\r
-\r
-static void APCM_inverse_quantization P4((xMc,mant,exp,xMp),\r
-       register word   * xMc,  /* [0..12]                      IN      */\r
-       word            mant,\r
-       word            exp,\r
-       register word   * xMp)  /* [0..12]                      OUT     */\r
-/* \r
- *  This part is for decoding the RPE sequence of coded xMc[0..12]\r
- *  samples to obtain the xMp[0..12] array.  Table 4.6 is used to get\r
- *  the mantissa of xmaxc (FAC[0..7]).\r
- */\r
-{\r
-       int     i;\r
-       word    temp, temp1, temp2, temp3;\r
-\r
-       assert( mant >= 0 && mant <= 7 ); \r
-\r
-       temp1 = gsm_FAC[ mant ];        /* see 4.2-15 for mant */\r
-       temp2 = gsm_sub( 6, exp );      /* see 4.2-15 for exp  */\r
-       temp3 = gsm_asl( 1, gsm_sub( temp2, 1 ));\r
-\r
-       for (i = 13; i--;) {\r
-\r
-               assert( *xMc <= 7 && *xMc >= 0 );       /* 3 bit unsigned */\r
-\r
-               /* temp = gsm_sub( *xMc++ << 1, 7 ); */\r
-               temp = (*xMc++ << 1) - 7;               /* restore sign   */\r
-               assert( temp <= 7 && temp >= -7 );      /* 4 bit signed   */\r
-\r
-               temp <<= 12;                            /* 16 bit signed  */\r
-               temp = GSM_MULT_R( temp1, temp );\r
-               temp = GSM_ADD( temp, temp3 );\r
-               *xMp++ = gsm_asr( temp, temp2 );\r
-       }\r
-}\r
-\r
-/* 4.2.17 */\r
-\r
-static void RPE_grid_positioning P3((Mc,xMp,ep),\r
-       word            Mc,             /* grid position        IN      */\r
-       register word   * xMp,          /* [0..12]              IN      */\r
-       register word   * ep            /* [0..39]              OUT     */\r
-)\r
-/*\r
- *  This procedure computes the reconstructed long term residual signal\r
- *  ep[0..39] for the LTP analysis filter.  The inputs are the Mc\r
- *  which is the grid position selection and the xMp[0..12] decoded\r
- *  RPE samples which are upsampled by a factor of 3 by inserting zero\r
- *  values.\r
- */\r
-{\r
-       int     i = 13;\r
-\r
-       assert(0 <= Mc && Mc <= 3);\r
-\r
-        switch (Mc) {\r
-                case 3: *ep++ = 0;\r
-                case 2:  do {\r
-                                *ep++ = 0;\r
-                case 1:         *ep++ = 0;\r
-                case 0:         *ep++ = *xMp++;\r
-                         } while (--i);\r
-        }\r
-        while (++Mc < 4) *ep++ = 0;\r
-\r
-       /*\r
-\r
-       int i, k;\r
-       for (k = 0; k <= 39; k++) ep[k] = 0;\r
-       for (i = 0; i <= 12; i++) {\r
-               ep[ Mc + (3*i) ] = xMp[i];\r
-       }\r
-       */\r
-}\r
-\r
-/* 4.2.18 */\r
-\r
-/*  This procedure adds the reconstructed long term residual signal\r
- *  ep[0..39] to the estimated signal dpp[0..39] from the long term\r
- *  analysis filter to compute the reconstructed short term residual\r
- *  signal dp[-40..-1]; also the reconstructed short term residual\r
- *  array dp[-120..-41] is updated.\r
- */\r
-\r
-#if 0  /* Has been inlined in code.c */\r
-void Gsm_Update_of_reconstructed_short_time_residual_signal P3((dpp, ep, dp),\r
-       word    * dpp,          /* [0...39]     IN      */\r
-       word    * ep,           /* [0...39]     IN      */\r
-       word    * dp)           /* [-120...-1]  IN/OUT  */\r
-{\r
-       int             k;\r
-\r
-       for (k = 0; k <= 79; k++) \r
-               dp[ -120 + k ] = dp[ -80 + k ];\r
-\r
-       for (k = 0; k <= 39; k++)\r
-               dp[ -40 + k ] = gsm_add( ep[k], dpp[k] );\r
-}\r
-#endif /* Has been inlined in code.c */\r
-\r
-void Gsm_RPE_Encoding P5((S,e,xmaxc,Mc,xMc),\r
-\r
-       struct gsm_state * S,\r
-\r
-       word    * e,            /* -5..-1][0..39][40..44        IN/OUT  */\r
-       word    * xmaxc,        /*                              OUT */\r
-       word    * Mc,           /*                              OUT */\r
-       word    * xMc)          /* [0..12]                      OUT */\r
-{\r
-       word    x[40];\r
-       word    xM[13], xMp[13];\r
-       word    mant, exp;\r
-\r
-       Weighting_filter(e, x);\r
-       RPE_grid_selection(x, xM, Mc);\r
-\r
-       APCM_quantization(      xM, xMc, &mant, &exp, xmaxc);\r
-       APCM_inverse_quantization(  xMc,  mant,  exp, xMp);\r
-\r
-       RPE_grid_positioning( *Mc, xMp, e );\r
-\r
-}\r
-\r
-void Gsm_RPE_Decoding P5((S, xmaxcr, Mcr, xMcr, erp),\r
-       struct gsm_state        * S,\r
-\r
-       word            xmaxcr,\r
-       word            Mcr,\r
-       word            * xMcr,  /* [0..12], 3 bits             IN      */\r
-       word            * erp    /* [0..39]                     OUT     */\r
-)\r
-{\r
-       word    exp, mant;\r
-       word    xMp[ 13 ];\r
-\r
-       APCM_quantization_xmaxc_to_exp_mant( xmaxcr, &exp, &mant );\r
-       APCM_inverse_quantization( xMcr, mant, exp, xMp );\r
-       RPE_grid_positioning( Mcr, xMp, erp );\r
-\r
-}\r
diff --git a/libs/codecs/gsm/src/short_term.c b/libs/codecs/gsm/src/short_term.c
deleted file mode 100644 (file)
index 9398df1..0000000
+++ /dev/null
@@ -1,448 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-#include <stdio.h>\r
-#include <assert.h>\r
-\r
-#include "private.h"\r
-\r
-#include "gsm.h"\r
-#include "proto.h"\r
-#ifdef K6OPT\r
-#include "k6opt.h"\r
-\r
-#define Short_term_analysis_filtering Short_term_analysis_filteringx\r
-\r
-#endif\r
-/*\r
- *  SHORT TERM ANALYSIS FILTERING SECTION\r
- */\r
-\r
-/* 4.2.8 */\r
-\r
-static void Decoding_of_the_coded_Log_Area_Ratios P2((LARc,LARpp),\r
-       word    * LARc,         /* coded log area ratio [0..7]  IN      */\r
-       word    * LARpp)        /* out: decoded ..                      */\r
-{\r
-       register word   temp1 /* , temp2 */;\r
-\r
-       /*  This procedure requires for efficient implementation\r
-        *  two tables.\r
-        *\r
-        *  INVA[1..8] = integer( (32768 * 8) / real_A[1..8])\r
-        *  MIC[1..8]  = minimum value of the LARc[1..8]\r
-        */\r
-\r
-       /*  Compute the LARpp[1..8]\r
-        */\r
-\r
-       /*      for (i = 1; i <= 8; i++, B++, MIC++, INVA++, LARc++, LARpp++) {\r
-        *\r
-        *              temp1  = GSM_ADD( *LARc, *MIC ) << 10;\r
-        *              temp2  = *B << 1;\r
-        *              temp1  = GSM_SUB( temp1, temp2 );\r
-        *\r
-        *              assert(*INVA != MIN_WORD);\r
-        *\r
-        *              temp1  = GSM_MULT_R( *INVA, temp1 );\r
-        *              *LARpp = GSM_ADD( temp1, temp1 );\r
-        *      }\r
-        */\r
-\r
-#undef STEP\r
-#define        STEP( B, MIC, INVA )    \\r
-               temp1    = GSM_ADD( *LARc++, MIC ) << 10;       \\r
-               temp1    = GSM_SUB( temp1, B << 1 );            \\r
-               temp1    = GSM_MULT_R( INVA, temp1 );           \\r
-               *LARpp++ = GSM_ADD( temp1, temp1 );\r
-\r
-       STEP(      0,  -32,  13107 );\r
-       STEP(      0,  -32,  13107 );\r
-       STEP(   2048,  -16,  13107 );\r
-       STEP(  -2560,  -16,  13107 );\r
-\r
-       STEP(     94,   -8,  19223 );\r
-       STEP(  -1792,   -8,  17476 );\r
-       STEP(   -341,   -4,  31454 );\r
-       STEP(  -1144,   -4,  29708 );\r
-\r
-       /* NOTE: the addition of *MIC is used to restore\r
-        *       the sign of *LARc.\r
-        */\r
-}\r
-\r
-/* 4.2.9 */\r
-/* Computation of the quantized reflection coefficients \r
- */\r
-\r
-/* 4.2.9.1  Interpolation of the LARpp[1..8] to get the LARp[1..8]\r
- */\r
-\r
-/*\r
- *  Within each frame of 160 analyzed speech samples the short term\r
- *  analysis and synthesis filters operate with four different sets of\r
- *  coefficients, derived from the previous set of decoded LARs(LARpp(j-1))\r
- *  and the actual set of decoded LARs (LARpp(j))\r
- *\r
- * (Initial value: LARpp(j-1)[1..8] = 0.)\r
- */\r
-\r
-static void Coefficients_0_12 P3((LARpp_j_1, LARpp_j, LARp),\r
-       register word * LARpp_j_1,\r
-       register word * LARpp_j,\r
-       register word * LARp)\r
-{\r
-       register int    i;\r
-\r
-       for (i = 1; i <= 8; i++, LARp++, LARpp_j_1++, LARpp_j++) {\r
-               *LARp = GSM_ADD( SASR( *LARpp_j_1, 2 ), SASR( *LARpp_j, 2 ));\r
-               *LARp = GSM_ADD( *LARp,  SASR( *LARpp_j_1, 1));\r
-       }\r
-}\r
-\r
-static void Coefficients_13_26 P3((LARpp_j_1, LARpp_j, LARp),\r
-       register word * LARpp_j_1,\r
-       register word * LARpp_j,\r
-       register word * LARp)\r
-{\r
-       register int i;\r
-       for (i = 1; i <= 8; i++, LARpp_j_1++, LARpp_j++, LARp++) {\r
-               *LARp = GSM_ADD( SASR( *LARpp_j_1, 1), SASR( *LARpp_j, 1 ));\r
-       }\r
-}\r
-\r
-static void Coefficients_27_39 P3((LARpp_j_1, LARpp_j, LARp),\r
-       register word * LARpp_j_1,\r
-       register word * LARpp_j,\r
-       register word * LARp)\r
-{\r
-       register int i;\r
-\r
-       for (i = 1; i <= 8; i++, LARpp_j_1++, LARpp_j++, LARp++) {\r
-               *LARp = GSM_ADD( SASR( *LARpp_j_1, 2 ), SASR( *LARpp_j, 2 ));\r
-               *LARp = GSM_ADD( *LARp, SASR( *LARpp_j, 1 ));\r
-       }\r
-}\r
-\r
-\r
-static void Coefficients_40_159 P2((LARpp_j, LARp),\r
-       register word * LARpp_j,\r
-       register word * LARp)\r
-{\r
-       register int i;\r
-\r
-       for (i = 1; i <= 8; i++, LARp++, LARpp_j++)\r
-               *LARp = *LARpp_j;\r
-}\r
-\r
-/* 4.2.9.2 */\r
-\r
-static void LARp_to_rp P1((LARp),\r
-       register word * LARp)   /* [0..7] IN/OUT  */\r
-/*\r
- *  The input of this procedure is the interpolated LARp[0..7] array.\r
- *  The reflection coefficients, rp[i], are used in the analysis\r
- *  filter and in the synthesis filter.\r
- */\r
-{\r
-       register int            i;\r
-       register word           temp;\r
-\r
-       for (i = 1; i <= 8; i++, LARp++) {\r
-\r
-               /* temp = GSM_ABS( *LARp );\r
-                *\r
-                * if (temp < 11059) temp <<= 1;\r
-                * else if (temp < 20070) temp += 11059;\r
-                * else temp = GSM_ADD( temp >> 2, 26112 );\r
-                *\r
-                * *LARp = *LARp < 0 ? -temp : temp;\r
-                */\r
-\r
-               if (*LARp < 0) {\r
-                       temp = *LARp == MIN_WORD ? MAX_WORD : -(*LARp);\r
-                       *LARp = - ((temp < 11059) ? temp << 1\r
-                               : ((temp < 20070) ? temp + 11059\r
-                               :  GSM_ADD( temp >> 2, 26112 )));\r
-               } else {\r
-                       temp  = *LARp;\r
-                       *LARp =    (temp < 11059) ? temp << 1\r
-                               : ((temp < 20070) ? temp + 11059\r
-                               :  GSM_ADD( temp >> 2, 26112 ));\r
-               }\r
-       }\r
-}\r
-\r
-\r
-/* 4.2.10 */\r
-#ifndef Short_term_analysis_filtering\r
-\r
-/* SJB Remark:\r
- * I tried 2 MMX versions of this function, neither is significantly\r
- * faster than the C version which follows.  MMX might be useful if\r
- * one were processing 2 input streams in parallel.\r
- */\r
-static void Short_term_analysis_filtering P4((u0,rp0,k_n,s),\r
-       register word * u0,\r
-       register word   * rp0,  /* [0..7]       IN      */\r
-       register int    k_n,    /*   k_end - k_start    */\r
-       register word   * s     /* [0..n-1]     IN/OUT  */\r
-)\r
-/*\r
- *  This procedure computes the short term residual signal d[..] to be fed\r
- *  to the RPE-LTP loop from the s[..] signal and from the local rp[..]\r
- *  array (quantized reflection coefficients).  As the call of this\r
- *  procedure can be done in many ways (see the interpolation of the LAR\r
- *  coefficient), it is assumed that the computation begins with index\r
- *  k_start (for arrays d[..] and s[..]) and stops with index k_end\r
- *  (k_start and k_end are defined in 4.2.9.1).  This procedure also\r
- *  needs to keep the array u0[0..7] in memory for each call.\r
- */\r
-{\r
-       register word           * u_top = u0 + 8;\r
-       register word           * s_top = s + k_n;\r
-\r
-       while (s < s_top) {\r
-               register word           *u, *rp ;\r
-               register longword               di, u_out;\r
-               di = u_out = *s;\r
-               for (rp=rp0, u=u0; u<u_top;) {\r
-                       register longword       ui, rpi;\r
-                       ui    = *u;\r
-                       *u++  = u_out;\r
-                       rpi   = *rp++;\r
-                       u_out = ui + (((rpi*di)+0x4000)>>15);\r
-                       di    = di + (((rpi*ui)+0x4000)>>15);\r
-                       /* make the common case fastest: */\r
-                       if ((u_out == (word)u_out) && (di == (word)di)) continue;\r
-                       /* otherwise do slower fixup (saturation) */\r
-                       if (u_out>MAX_WORD) u_out=MAX_WORD;\r
-                       else if (u_out<MIN_WORD) u_out=MIN_WORD;\r
-                       if (di>MAX_WORD) di=MAX_WORD;\r
-                       else if (di<MIN_WORD) di=MIN_WORD;\r
-               }\r
-               *s++ = di;\r
-       }\r
-}\r
-#endif\r
-\r
-#if defined(USE_FLOAT_MUL) && defined(FAST)\r
-\r
-static void Fast_Short_term_analysis_filtering P4((u,rp,k_n,s),\r
-       register word * u;\r
-       register word   * rp,   /* [0..7]       IN      */\r
-       register int    k_n,    /*   k_end - k_start    */\r
-       register word   * s     /* [0..n-1]     IN/OUT  */\r
-)\r
-{\r
-       register int            i;\r
-\r
-       float     uf[8],\r
-                rpf[8];\r
-\r
-       register float scalef = 3.0517578125e-5;\r
-       register float          sav, di, temp;\r
-\r
-       for (i = 0; i < 8; ++i) {\r
-               uf[i]  = u[i];\r
-               rpf[i] = rp[i] * scalef;\r
-       }\r
-       for (; k_n--; s++) {\r
-               sav = di = *s;\r
-               for (i = 0; i < 8; ++i) {\r
-                       register float rpfi = rpf[i];\r
-                       register float ufi  = uf[i];\r
-\r
-                       uf[i] = sav;\r
-                       temp  = rpfi * di + ufi;\r
-                       di   += rpfi * ufi;\r
-                       sav   = temp;\r
-               }\r
-               *s = di;\r
-       }\r
-       for (i = 0; i < 8; ++i) u[i] = uf[i];\r
-}\r
-#endif /* ! (defined (USE_FLOAT_MUL) && defined (FAST)) */\r
-\r
-/*\r
- * SJB Remark: modified Short_term_synthesis_filtering() below\r
- *  for significant (abt 35%) speedup of decompression.\r
- *    (gcc-2.95, k6 cpu)\r
- *  Please don't change this without benchmarking decompression\r
- *  to see that you haven't harmed speed.\r
- *  This function burns most of CPU time for untoasting.\r
- *  Unfortunately, didn't see any good way to benefit from mmx.\r
- */\r
-static void Short_term_synthesis_filtering P5((S,rrp,k,wt,sr),\r
-       struct gsm_state * S,\r
-       register word   * rrp,  /* [0..7]       IN      */\r
-       register int    k,      /* k_end - k_start      */\r
-       register word   * wt,   /* [0..k-1]     IN      */\r
-       register word   * sr    /* [0..k-1]     OUT     */\r
-)\r
-{\r
-       register word           * v = S->v;\r
-       register int            i;\r
-       register longword               sri;\r
-\r
-       while (k--) {\r
-               sri = *wt++;\r
-               for (i = 8; i--;) {\r
-                       register longword               tmp1, tmp2;\r
-\r
-                       /* sri = GSM_SUB( sri, gsm_mult_r( rrp[i], v[i] ) );\r
-                        */\r
-                       tmp1 = rrp[i];\r
-                       tmp2 = v[i];\r
-\r
-                       tmp2 = (( tmp1 * tmp2 + 16384) >> 15) ;\r
-                       /* saturation done below */\r
-                       sri  -= tmp2;\r
-                       if (sri != (word)sri) {\r
-                               sri = (sri<0)? MIN_WORD:MAX_WORD;\r
-                       }\r
-                       /* v[i+1] = GSM_ADD( v[i], gsm_mult_r( rrp[i], sri ) );\r
-                        */\r
-\r
-                       tmp1 = (( tmp1 * sri + 16384) >> 15) ;\r
-                       /* saturation done below */\r
-                       tmp1 += v[i];\r
-                       if (tmp1 != (word)tmp1) {\r
-                               tmp1 = (tmp1<0)? MIN_WORD:MAX_WORD;\r
-                       }\r
-                       v[i+1] = tmp1;\r
-               }\r
-               *sr++ = v[0] = sri;\r
-       }\r
-}\r
-\r
-\r
-#if defined(FAST) && defined(USE_FLOAT_MUL)\r
-\r
-static void Fast_Short_term_synthesis_filtering P5((S,rrp,k,wt,sr),\r
-       struct gsm_state * S,\r
-       register word   * rrp,  /* [0..7]       IN      */\r
-       register int    k,      /* k_end - k_start      */\r
-       register word   * wt,   /* [0..k-1]     IN      */\r
-       register word   * sr    /* [0..k-1]     OUT     */\r
-)\r
-{\r
-       register word           * v = S->v;\r
-       register int            i;\r
-\r
-       float va[9], rrpa[8];\r
-       register float scalef = 3.0517578125e-5, temp;\r
-\r
-       for (i = 0; i < 8; ++i) {\r
-               va[i]   = v[i];\r
-               rrpa[i] = (float)rrp[i] * scalef;\r
-       }\r
-       while (k--) {\r
-               register float sri = *wt++;\r
-               for (i = 8; i--;) {\r
-                       sri -= rrpa[i] * va[i];\r
-                       if     (sri < -32768.) sri = -32768.;\r
-                       else if (sri > 32767.) sri =  32767.;\r
-\r
-                       temp = va[i] + rrpa[i] * sri;\r
-                       if     (temp < -32768.) temp = -32768.;\r
-                       else if (temp > 32767.) temp =  32767.;\r
-                       va[i+1] = temp;\r
-               }\r
-               *sr++ = va[0] = sri;\r
-       }\r
-       for (i = 0; i < 9; ++i) v[i] = va[i];\r
-}\r
-\r
-#endif /* defined(FAST) && defined(USE_FLOAT_MUL) */\r
-\r
-void Gsm_Short_Term_Analysis_Filter P3((S,LARc,s),\r
-\r
-       struct gsm_state * S,\r
-\r
-       word    * LARc,         /* coded log area ratio [0..7]  IN      */\r
-       word    * s             /* signal [0..159]              IN/OUT  */\r
-)\r
-{\r
-       word            * LARpp_j       = S->LARpp[ S->j      ];\r
-       word            * LARpp_j_1     = S->LARpp[ S->j ^= 1 ];\r
-\r
-       word            LARp[8];\r
-int i;\r
-#undef FILTER\r
-#if    defined(FAST) && defined(USE_FLOAT_MUL)\r
-#      define  FILTER  (* (S->fast                     \\r
-                          ? Fast_Short_term_analysis_filtering \\r
-                          : Short_term_analysis_filtering      ))\r
-\r
-#else\r
-#      define  FILTER  Short_term_analysis_filtering\r
-#endif\r
-\r
-       Decoding_of_the_coded_Log_Area_Ratios( LARc, LARpp_j );\r
-\r
-       Coefficients_0_12(  LARpp_j_1, LARpp_j, LARp );\r
-       LARp_to_rp( LARp );\r
-       FILTER( S->u, LARp, 13, s);\r
-\r
-       Coefficients_13_26( LARpp_j_1, LARpp_j, LARp);\r
-       LARp_to_rp( LARp );\r
-       FILTER( S->u, LARp, 14, s + 13);\r
-\r
-       Coefficients_27_39( LARpp_j_1, LARpp_j, LARp);\r
-       LARp_to_rp( LARp );\r
-       FILTER( S->u, LARp, 13, s + 27);\r
-\r
-       Coefficients_40_159( LARpp_j, LARp);\r
-       LARp_to_rp( LARp );\r
-       FILTER( S->u, LARp, 120, s + 40);\r
-       \r
-}\r
-\r
-void Gsm_Short_Term_Synthesis_Filter P4((S, LARcr, wt, s),\r
-       struct gsm_state * S,\r
-\r
-       word    * LARcr,        /* received log area ratios [0..7] IN  */\r
-       word    * wt,           /* received d [0..159]             IN  */\r
-\r
-       word    * s             /* signal   s [0..159]            OUT  */\r
-)\r
-{\r
-       word            * LARpp_j       = S->LARpp[ S->j     ];\r
-       word            * LARpp_j_1     = S->LARpp[ S->j ^=1 ];\r
-\r
-       word            LARp[8];\r
-\r
-#undef FILTER\r
-#if    defined(FAST) && defined(USE_FLOAT_MUL)\r
-\r
-#      define  FILTER  (* (S->fast                     \\r
-                          ? Fast_Short_term_synthesis_filtering        \\r
-                          : Short_term_synthesis_filtering     ))\r
-#else\r
-#      define  FILTER  Short_term_synthesis_filtering\r
-#endif\r
-\r
-       Decoding_of_the_coded_Log_Area_Ratios( LARcr, LARpp_j );\r
-\r
-       Coefficients_0_12( LARpp_j_1, LARpp_j, LARp );\r
-       LARp_to_rp( LARp );\r
-       FILTER( S, LARp, 13, wt, s );\r
-\r
-       Coefficients_13_26( LARpp_j_1, LARpp_j, LARp);\r
-       LARp_to_rp( LARp );\r
-       FILTER( S, LARp, 14, wt + 13, s + 13 );\r
-\r
-       Coefficients_27_39( LARpp_j_1, LARpp_j, LARp);\r
-       LARp_to_rp( LARp );\r
-       FILTER( S, LARp, 13, wt + 27, s + 27 );\r
-\r
-       Coefficients_40_159( LARpp_j, LARp );\r
-       LARp_to_rp( LARp );\r
-       FILTER(S, LARp, 120, wt + 40, s + 40);\r
-}\r
diff --git a/libs/codecs/gsm/src/table.c b/libs/codecs/gsm/src/table.c
deleted file mode 100644 (file)
index bdca9fa..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*\r
- * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische\r
- * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for\r
- * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.\r
- */\r
-\r
-/* $Header$ */\r
-\r
-/*  Most of these tables are inlined at their point of use.\r
- */\r
-\r
-/*  4.4 TABLES USED IN THE FIXED POINT IMPLEMENTATION OF THE RPE-LTP\r
- *      CODER AND DECODER\r
- *\r
- *     (Most of them inlined, so watch out.)\r
- */\r
-\r
-#define        GSM_TABLE_C\r
-#include "private.h"\r
-#include       "gsm.h"\r
-\r
-/*  Table 4.1  Quantization of the Log.-Area Ratios\r
- */\r
-/* i                1      2      3        4      5      6        7       8 */\r
-word gsm_A[8]   = {20480, 20480, 20480,  20480,  13964,  15360,   8534,  9036};\r
-word gsm_B[8]   = {    0,     0,  2048,  -2560,     94,  -1792,   -341, -1144};\r
-word gsm_MIC[8] = { -32,   -32,   -16,    -16,     -8,     -8,     -4,    -4 };\r
-word gsm_MAC[8] = {  31,    31,    15,     15,      7,      7,      3,     3 };\r
-\r
-\r
-/*  Table 4.2  Tabulation  of 1/A[1..8]\r
- */\r
-word gsm_INVA[8]={ 13107, 13107,  13107, 13107,  19223, 17476,  31454, 29708 };\r
-\r
-\r
-/*   Table 4.3a  Decision level of the LTP gain quantizer\r
- */\r
-/*  bc               0         1         2          3                  */\r
-word gsm_DLB[4] = {  6554,    16384,   26214,     32767        };\r
-\r
-\r
-/*   Table 4.3b   Quantization levels of the LTP gain quantizer\r
- */\r
-/* bc                0          1        2          3                  */\r
-word gsm_QLB[4] = {  3277,    11469,   21299,     32767        };\r
-\r
-\r
-/*   Table 4.4  Coefficients of the weighting filter\r
- */\r
-/* i               0      1   2    3   4      5      6     7   8   9    10  */\r
-word gsm_H[11] = {-134, -374, 0, 2054, 5741, 8192, 5741, 2054, 0, -374, -134 };\r
-\r
-\r
-/*   Table 4.5          Normalized inverse mantissa used to compute xM/xmax \r
- */\r
-/* i                   0        1    2      3      4      5     6      7   */\r
-word gsm_NRFAC[8] = { 29128, 26215, 23832, 21846, 20165, 18725, 17476, 16384 };\r
-\r
-\r
-/*   Table 4.6  Normalized direct mantissa used to compute xM/xmax\r
- */\r
-/* i                  0      1       2      3      4      5      6      7   */\r
-word gsm_FAC[8]        = { 18431, 20479, 22527, 24575, 26623, 28671, 30719, 32767 };\r
diff --git a/libs/codecs/ilbc/FrameClassify.c b/libs/codecs/ilbc/FrameClassify.c
deleted file mode 100644 (file)
index 9a6f029..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    FrameClassify.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include "iLBC_define.h"\r
-#include "FrameClassify.h"\r
-\r
-/*---------------------------------------------------------------*\r
- *  Classification of subframes to localize start state\r
- *--------------------------------------------------------------*/\r
-\r
-int FrameClassify(      /* index to the max-energy sub-frame */\r
-    iLBC_Enc_Inst_t *iLBCenc_inst, \r
-                        /* (i/o) the encoder state structure */\r
-    float *residual     /* (i) lpc residual signal */\r
-) {\r
-    float max_ssqEn, fssqEn[NSUB_MAX], bssqEn[NSUB_MAX], *pp;\r
-    int n, l, max_ssqEn_n;\r
-    const float ssqEn_win[NSUB_MAX-1]={(float)0.8,(float)0.9,\r
-        (float)1.0,(float)0.9,(float)0.8};\r
-    const float sampEn_win[5]={(float)1.0/(float)6.0, \r
-        (float)2.0/(float)6.0, (float)3.0/(float)6.0,\r
-        (float)4.0/(float)6.0, (float)5.0/(float)6.0};\r
-    \r
-    /* init the front and back energies to zero */\r
-\r
-    memset(fssqEn, 0, NSUB_MAX*sizeof(float));\r
-    memset(bssqEn, 0, NSUB_MAX*sizeof(float));\r
-\r
-    /* Calculate front of first seqence */\r
-\r
-    n=0;\r
-    pp=residual;\r
-\r
-\r
-    for (l=0; l<5; l++) {\r
-        fssqEn[n] += sampEn_win[l] * (*pp) * (*pp);\r
-        pp++;\r
-    }\r
-    for (l=5; l<SUBL; l++) {\r
-        fssqEn[n] += (*pp) * (*pp);\r
-        pp++;\r
-    }\r
-\r
-    /* Calculate front and back of all middle sequences */\r
-\r
-    for (n=1; n<iLBCenc_inst->nsub-1; n++) {\r
-        pp=residual+n*SUBL;\r
-        for (l=0; l<5; l++) {\r
-            fssqEn[n] += sampEn_win[l] * (*pp) * (*pp);\r
-            bssqEn[n] += (*pp) * (*pp);\r
-            pp++;\r
-        }\r
-        for (l=5; l<SUBL-5; l++) {\r
-            fssqEn[n] += (*pp) * (*pp);\r
-            bssqEn[n] += (*pp) * (*pp);\r
-            pp++;\r
-        }\r
-        for (l=SUBL-5; l<SUBL; l++) {\r
-            fssqEn[n] += (*pp) * (*pp);\r
-            bssqEn[n] += sampEn_win[SUBL-l-1] * (*pp) * (*pp);\r
-            pp++;\r
-        }\r
-    }\r
-\r
-    /* Calculate back of last seqence */\r
-\r
-    n=iLBCenc_inst->nsub-1;\r
-    pp=residual+n*SUBL;\r
-    for (l=0; l<SUBL-5; l++) {\r
-        bssqEn[n] += (*pp) * (*pp);\r
-        pp++;\r
-    }\r
-    for (l=SUBL-5; l<SUBL; l++) {\r
-        bssqEn[n] += sampEn_win[SUBL-l-1] * (*pp) * (*pp);\r
-        pp++;\r
-    }\r
-\r
-    /* find the index to the weighted 80 sample with \r
-       most energy */\r
-\r
-    if (iLBCenc_inst->mode==20) l=1;\r
-    else                        l=0;\r
-\r
-    max_ssqEn=(fssqEn[0]+bssqEn[1])*ssqEn_win[l];\r
-    max_ssqEn_n=1;\r
-    for (n=2; n<iLBCenc_inst->nsub; n++) {\r
-\r
-        l++;\r
-\r
-\r
-        if ((fssqEn[n-1]+bssqEn[n])*ssqEn_win[l] > max_ssqEn) {\r
-            max_ssqEn=(fssqEn[n-1]+bssqEn[n]) *\r
-                            ssqEn_win[l];\r
-            max_ssqEn_n=n;\r
-        }\r
-    }\r
-\r
-    return max_ssqEn_n;\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/FrameClassify.h b/libs/codecs/ilbc/FrameClassify.h
deleted file mode 100644 (file)
index 6b58370..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    FrameClassify.h\r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-\r
-\r
-#ifndef __iLBC_FRAMECLASSIFY_H\r
-#define __iLBC_FRAMECLASSIFY_H\r
-\r
-int FrameClassify(      /* index to the max-energy sub-frame */\r
-    iLBC_Enc_Inst_t *iLBCenc_inst, \r
-                        /* (i/o) the encoder state structure */\r
-    float *residual     /* (i) lpc residual signal */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/LPCdecode.c b/libs/codecs/ilbc/LPCdecode.c
deleted file mode 100644 (file)
index 741c731..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    LPC_decode.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <math.h>\r
-#include <string.h>\r
-\r
-#include "helpfun.h"\r
-#include "lsf.h"\r
-#include "iLBC_define.h"\r
-#include "LPCdecode.h"\r
-#include "constants.h"\r
-\r
-/*---------------------------------------------------------------*\r
- *  interpolation of lsf coefficients for the decoder\r
- *--------------------------------------------------------------*/\r
-\r
-void LSFinterpolate2a_dec( \r
-    float *a,           /* (o) lpc coefficients for a sub-frame */\r
-    float *lsf1,    /* (i) first lsf coefficient vector */\r
-\r
-\r
-    float *lsf2,    /* (i) second lsf coefficient vector */\r
-    float coef,         /* (i) interpolation weight */\r
-    int length          /* (i) length of lsf vectors */\r
-){\r
-    float  lsftmp[LPC_FILTERORDER];\r
-    \r
-    interpolate(lsftmp, lsf1, lsf2, coef, length);\r
-    lsf2a(a, lsftmp);\r
-}\r
-\r
-/*---------------------------------------------------------------*\r
- *  obtain dequantized lsf coefficients from quantization index \r
- *--------------------------------------------------------------*/\r
-\r
-void SimplelsfDEQ(\r
-    float *lsfdeq,    /* (o) dequantized lsf coefficients */\r
-    int *index,         /* (i) quantization index */\r
-    int lpc_n           /* (i) number of LPCs */\r
-){  \r
-    int i, j, pos, cb_pos;\r
-\r
-    /* decode first LSF */\r
-    \r
-    pos = 0;\r
-    cb_pos = 0;\r
-    for (i = 0; i < LSF_NSPLIT; i++) {\r
-        for (j = 0; j < dim_lsfCbTbl[i]; j++) {\r
-            lsfdeq[pos + j] = lsfCbTbl[cb_pos + \r
-                (long)(index[i])*dim_lsfCbTbl[i] + j];\r
-        }       \r
-        pos += dim_lsfCbTbl[i];\r
-        cb_pos += size_lsfCbTbl[i]*dim_lsfCbTbl[i];\r
-    }\r
-\r
-    if (lpc_n>1) {\r
-\r
-        /* decode last LSF */\r
-\r
-        pos = 0;\r
-        cb_pos = 0;\r
-        for (i = 0; i < LSF_NSPLIT; i++) {\r
-            for (j = 0; j < dim_lsfCbTbl[i]; j++) {\r
-                lsfdeq[LPC_FILTERORDER + pos + j] = \r
-                    lsfCbTbl[cb_pos + \r
-                    (long)(index[LSF_NSPLIT + i])*\r
-                    dim_lsfCbTbl[i] + j];\r
-            }       \r
-            pos += dim_lsfCbTbl[i];\r
-            cb_pos += size_lsfCbTbl[i]*dim_lsfCbTbl[i];\r
-        }\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
-\r
-\r
- *  obtain synthesis and weighting filters form lsf coefficients \r
- *---------------------------------------------------------------*/\r
-\r
-void DecoderInterpolateLSF( \r
-    float *syntdenum, /* (o) synthesis filter coefficients */\r
-    float *weightdenum, /* (o) weighting denumerator \r
-                               coefficients */\r
-    float *lsfdeq,       /* (i) dequantized lsf coefficients */\r
-    int length,         /* (i) length of lsf coefficient vector */\r
-    iLBC_Dec_Inst_t *iLBCdec_inst \r
-                        /* (i) the decoder state structure */\r
-){\r
-    int    i, pos, lp_length;\r
-    float  lp[LPC_FILTERORDER + 1], *lsfdeq2;\r
-        \r
-    lsfdeq2 = lsfdeq + length;\r
-    lp_length = length + 1;\r
-    \r
-    if (iLBCdec_inst->mode==30) {\r
-        /* sub-frame 1: Interpolation between old and first */\r
-\r
-        LSFinterpolate2a_dec(lp, iLBCdec_inst->lsfdeqold, lsfdeq, \r
-            lsf_weightTbl_30ms[0], length);\r
-        memcpy(syntdenum,lp,lp_length*sizeof(float));\r
-        bwexpand(weightdenum, lp, LPC_CHIRP_WEIGHTDENUM, \r
-            lp_length);\r
-\r
-        /* sub-frames 2 to 6: interpolation between first \r
-           and last LSF */\r
-    \r
-        pos = lp_length;\r
-        for (i = 1; i < 6; i++) {\r
-            LSFinterpolate2a_dec(lp, lsfdeq, lsfdeq2, \r
-                lsf_weightTbl_30ms[i], length);\r
-            memcpy(syntdenum + pos,lp,lp_length*sizeof(float));\r
-            bwexpand(weightdenum + pos, lp, \r
-                LPC_CHIRP_WEIGHTDENUM, lp_length);\r
-            pos += lp_length;\r
-        }\r
-    }\r
-    else {\r
-        pos = 0;\r
-        for (i = 0; i < iLBCdec_inst->nsub; i++) {\r
-            LSFinterpolate2a_dec(lp, iLBCdec_inst->lsfdeqold, \r
-                lsfdeq, lsf_weightTbl_20ms[i], length);\r
-            memcpy(syntdenum+pos,lp,lp_length*sizeof(float));\r
-            bwexpand(weightdenum+pos, lp, LPC_CHIRP_WEIGHTDENUM, \r
-                lp_length);\r
-            pos += lp_length;\r
-        }\r
-    }\r
-    \r
-    /* update memory */\r
-\r
-\r
-\r
-    if (iLBCdec_inst->mode==30)\r
-        memcpy(iLBCdec_inst->lsfdeqold, lsfdeq2, \r
-                    length*sizeof(float));\r
-    else\r
-        memcpy(iLBCdec_inst->lsfdeqold, lsfdeq, \r
-                    length*sizeof(float));\r
-\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/LPCdecode.h b/libs/codecs/ilbc/LPCdecode.h
deleted file mode 100644 (file)
index 84116e0..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    LPC_decode.h     \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_LPC_DECODE_H\r
-#define __iLBC_LPC_DECODE_H\r
-\r
-void LSFinterpolate2a_dec( \r
-\r
-\r
-    float *a,           /* (o) lpc coefficients for a sub-frame */\r
-    float *lsf1,    /* (i) first lsf coefficient vector */\r
-    float *lsf2,    /* (i) second lsf coefficient vector */\r
-    float coef,         /* (i) interpolation weight */\r
-    int length          /* (i) length of lsf vectors */\r
-);\r
-      \r
-void SimplelsfDEQ( \r
-    float *lsfdeq,      /* (o) dequantized lsf coefficients */\r
-    int *index,         /* (i) quantization index */\r
-    int lpc_n           /* (i) number of LPCs */\r
-);\r
-\r
-void DecoderInterpolateLSF( \r
-    float *syntdenum,   /* (o) synthesis filter coefficients */\r
-    float *weightdenum, /* (o) weighting denumerator \r
-                               coefficients */\r
-    float *lsfdeq,      /* (i) dequantized lsf coefficients */\r
-    int length,         /* (i) length of lsf coefficient vector */\r
-    iLBC_Dec_Inst_t *iLBCdec_inst \r
-                        /* (i) the decoder state structure */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/LPCencode.c b/libs/codecs/ilbc/LPCencode.c
deleted file mode 100644 (file)
index d1286e2..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    LPCencode.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <string.h>\r
-\r
-\r
-\r
-#include "iLBC_define.h"\r
-#include "LPCencode.h"\r
-#include "helpfun.h"\r
-#include "lsf.h"\r
-#include "constants.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  lpc analysis (subrutine to LPCencode)\r
- *---------------------------------------------------------------*/\r
-\r
-static void SimpleAnalysis(\r
-    float *lsf,         /* (o) lsf coefficients */\r
-    float *data,    /* (i) new data vector */\r
-    iLBC_Enc_Inst_t *iLBCenc_inst \r
-                        /* (i/o) the encoder state structure */\r
-){\r
-    int k, is;\r
-    float temp[BLOCKL_MAX], lp[LPC_FILTERORDER + 1];\r
-    float lp2[LPC_FILTERORDER + 1];\r
-    float r[LPC_FILTERORDER + 1];\r
-\r
-    is=LPC_LOOKBACK+BLOCKL_MAX-iLBCenc_inst->blockl;\r
-    memcpy(iLBCenc_inst->lpc_buffer+is,data,\r
-        iLBCenc_inst->blockl*sizeof(float));\r
-    \r
-    /* No lookahead, last window is asymmetric */\r
-    \r
-    for (k = 0; k < iLBCenc_inst->lpc_n; k++) {\r
-        \r
-        is = LPC_LOOKBACK;\r
-\r
-        if (k < (iLBCenc_inst->lpc_n - 1)) {\r
-            window(temp, lpc_winTbl, \r
-                iLBCenc_inst->lpc_buffer, BLOCKL_MAX);\r
-        } else {\r
-            window(temp, lpc_asymwinTbl, \r
-                iLBCenc_inst->lpc_buffer + is, BLOCKL_MAX);\r
-        }\r
-        \r
-        autocorr(r, temp, BLOCKL_MAX, LPC_FILTERORDER);\r
-        window(r, r, lpc_lagwinTbl, LPC_FILTERORDER + 1);\r
-        \r
-        levdurb(lp, temp, r, LPC_FILTERORDER);\r
-        bwexpand(lp2, lp, LPC_CHIRP_SYNTDENUM, LPC_FILTERORDER+1);\r
-\r
-        a2lsf(lsf + k*LPC_FILTERORDER, lp2);\r
-    }\r
-    is=LPC_LOOKBACK+BLOCKL_MAX-iLBCenc_inst->blockl;\r
-    memmove(iLBCenc_inst->lpc_buffer, \r
-        iLBCenc_inst->lpc_buffer+LPC_LOOKBACK+BLOCKL_MAX-is, \r
-        is*sizeof(float));\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
-\r
-\r
- *  lsf interpolator and conversion from lsf to a coefficients\r
- *  (subrutine to SimpleInterpolateLSF)\r
- *---------------------------------------------------------------*/\r
-\r
-static void LSFinterpolate2a_enc(\r
-    float *a,       /* (o) lpc coefficients */ \r
-    float *lsf1,/* (i) first set of lsf coefficients */\r
-    float *lsf2,/* (i) second set of lsf coefficients */\r
-    float coef,     /* (i) weighting coefficient to use between \r
-                           lsf1 and lsf2 */\r
-    long length      /* (i) length of coefficient vectors */\r
-){  \r
-    float  lsftmp[LPC_FILTERORDER];\r
-    \r
-    interpolate(lsftmp, lsf1, lsf2, coef, length);\r
-    lsf2a(a, lsftmp);\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  lsf interpolator (subrutine to LPCencode)\r
- *---------------------------------------------------------------*/\r
-\r
-static void SimpleInterpolateLSF(\r
-    float *syntdenum,   /* (o) the synthesis filter denominator \r
-                               resulting from the quantized \r
-                               interpolated lsf */\r
-    float *weightdenum, /* (o) the weighting filter denominator \r
-                               resulting from the unquantized \r
-                               interpolated lsf */\r
-    float *lsf,         /* (i) the unquantized lsf coefficients */\r
-    float *lsfdeq,      /* (i) the dequantized lsf coefficients */\r
-    float *lsfold,      /* (i) the unquantized lsf coefficients of \r
-                               the previous signal frame */\r
-    float *lsfdeqold, /* (i) the dequantized lsf coefficients of \r
-                               the previous signal frame */\r
-    int length,         /* (i) should equate LPC_FILTERORDER */\r
-    iLBC_Enc_Inst_t *iLBCenc_inst \r
-                        /* (i/o) the encoder state structure */\r
-){\r
-    int    i, pos, lp_length;\r
-    float  lp[LPC_FILTERORDER + 1], *lsf2, *lsfdeq2;\r
-    \r
-    lsf2 = lsf + length;\r
-    lsfdeq2 = lsfdeq + length;\r
-    lp_length = length + 1; \r
\r
-    if (iLBCenc_inst->mode==30) {\r
-        /* sub-frame 1: Interpolation between old and first \r
-           set of lsf coefficients */\r
-\r
-        LSFinterpolate2a_enc(lp, lsfdeqold, lsfdeq, \r
-            lsf_weightTbl_30ms[0], length);\r
-        memcpy(syntdenum,lp,lp_length*sizeof(float));\r
-        LSFinterpolate2a_enc(lp, lsfold, lsf, \r
-\r
-\r
-            lsf_weightTbl_30ms[0], length);\r
-        bwexpand(weightdenum, lp, LPC_CHIRP_WEIGHTDENUM, lp_length);\r
-\r
-        /* sub-frame 2 to 6: Interpolation between first \r
-           and second set of lsf coefficients */\r
-    \r
-        pos = lp_length;\r
-        for (i = 1; i < iLBCenc_inst->nsub; i++) {\r
-            LSFinterpolate2a_enc(lp, lsfdeq, lsfdeq2, \r
-                lsf_weightTbl_30ms[i], length);\r
-            memcpy(syntdenum + pos,lp,lp_length*sizeof(float));\r
-        \r
-            LSFinterpolate2a_enc(lp, lsf, lsf2, \r
-                lsf_weightTbl_30ms[i], length);\r
-            bwexpand(weightdenum + pos, lp, \r
-                LPC_CHIRP_WEIGHTDENUM, lp_length);\r
-            pos += lp_length;\r
-        }\r
-    }\r
-    else {\r
-        pos = 0;\r
-        for (i = 0; i < iLBCenc_inst->nsub; i++) {\r
-            LSFinterpolate2a_enc(lp, lsfdeqold, lsfdeq, \r
-                lsf_weightTbl_20ms[i], length);\r
-            memcpy(syntdenum+pos,lp,lp_length*sizeof(float));\r
-            LSFinterpolate2a_enc(lp, lsfold, lsf, \r
-                lsf_weightTbl_20ms[i], length);\r
-            bwexpand(weightdenum+pos, lp, \r
-                LPC_CHIRP_WEIGHTDENUM, lp_length);\r
-            pos += lp_length;\r
-        }\r
-    }\r
-    \r
-    /* update memory */\r
-\r
-    if (iLBCenc_inst->mode==30) {\r
-        memcpy(lsfold, lsf2, length*sizeof(float));\r
-        memcpy(lsfdeqold, lsfdeq2, length*sizeof(float));\r
-    }\r
-    else {\r
-        memcpy(lsfold, lsf, length*sizeof(float));\r
-        memcpy(lsfdeqold, lsfdeq, length*sizeof(float));\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  lsf quantizer (subrutine to LPCencode)\r
- *---------------------------------------------------------------*/\r
-\r
-static void SimplelsfQ(\r
-    float *lsfdeq,    /* (o) dequantized lsf coefficients\r
-                           (dimension FILTERORDER) */\r
-    int *index,     /* (o) quantization index */\r
-    float *lsf,      /* (i) the lsf coefficient vector to be \r
-\r
-\r
-                           quantized (dimension FILTERORDER ) */\r
-    int lpc_n     /* (i) number of lsf sets to quantize */\r
-){    \r
-    /* Quantize first LSF with memoryless split VQ */\r
-    SplitVQ(lsfdeq, index, lsf, lsfCbTbl, LSF_NSPLIT, \r
-        dim_lsfCbTbl, size_lsfCbTbl);\r
-\r
-    if (lpc_n==2) {\r
-        /* Quantize second LSF with memoryless split VQ */\r
-        SplitVQ(lsfdeq + LPC_FILTERORDER, index + LSF_NSPLIT, \r
-            lsf + LPC_FILTERORDER, lsfCbTbl, LSF_NSPLIT, \r
-            dim_lsfCbTbl, size_lsfCbTbl);\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  lpc encoder\r
- *---------------------------------------------------------------*/\r
-\r
-void LPCencode( \r
-    float *syntdenum, /* (i/o) synthesis filter coefficients \r
-                               before/after encoding */\r
-    float *weightdenum, /* (i/o) weighting denumerator \r
-                               coefficients before/after \r
-                               encoding */\r
-    int *lsf_index,     /* (o) lsf quantization index */\r
-    float *data,    /* (i) lsf coefficients to quantize */\r
-    iLBC_Enc_Inst_t *iLBCenc_inst \r
-                        /* (i/o) the encoder state structure */\r
-){\r
-    float lsf[LPC_FILTERORDER * LPC_N_MAX];\r
-    float lsfdeq[LPC_FILTERORDER * LPC_N_MAX];\r
-    int change=0;\r
-    \r
-    SimpleAnalysis(lsf, data, iLBCenc_inst);\r
-    SimplelsfQ(lsfdeq, lsf_index, lsf, iLBCenc_inst->lpc_n);\r
-    change=LSF_check(lsfdeq, LPC_FILTERORDER, iLBCenc_inst->lpc_n);\r
-    SimpleInterpolateLSF(syntdenum, weightdenum, \r
-        lsf, lsfdeq, iLBCenc_inst->lsfold, \r
-        iLBCenc_inst->lsfdeqold, LPC_FILTERORDER, iLBCenc_inst);\r
-}\r
-\r
-\r
-\r
diff --git a/libs/codecs/ilbc/LPCencode.h b/libs/codecs/ilbc/LPCencode.h
deleted file mode 100644 (file)
index 464282e..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    LPCencode.h\r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_LPCENCOD_H\r
-#define __iLBC_LPCENCOD_H\r
-\r
-void LPCencode( \r
-    float *syntdenum,   /* (i/o) synthesis filter coefficients \r
-                               before/after encoding */\r
-    float *weightdenum, /* (i/o) weighting denumerator coefficients\r
-                               before/after encoding */\r
-    int *lsf_index,     /* (o) lsf quantization index */\r
-    float *data,    /* (i) lsf coefficients to quantize */\r
-    iLBC_Enc_Inst_t *iLBCenc_inst \r
-                        /* (i/o) the encoder state structure */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/Makefile b/libs/codecs/ilbc/Makefile
deleted file mode 100644 (file)
index 5ef581e..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-ARCH=$(PROC)\r
-CFLAGS+=-Wall -O3 -funroll-loops\r
-ifneq (${OSARCH},CYGWIN)\r
-CFLAGS += -fPIC\r
-endif\r
-LIB=libilbc.a\r
-\r
-OBJS= anaFilter.o iCBSearch.o packing.o \\r
-        constants.o gainquant.o iLBC_decode.o StateConstructW.o \\r
-        createCB.o getCBvec.o iLBC_encode.o StateSearchW.o doCPLC.o \\r
-        helpfun.o syntFilter.o enhancer.o hpInput.o LPCdecode.o \\r
-        filter.o hpOutput.o LPCencode.o FrameClassify.o  iCBConstruct.o lsf.o\r
-\r
-all: $(LIB)\r
-\r
-\r
-$(LIB): $(OBJS)\r
-       ar cr $(LIB) $(OBJS)\r
-       ranlib $(LIB)\r
-\r
-clean:\r
-       rm -f $(LIB) *.o\r
-\r
-install:\r
-\r
diff --git a/libs/codecs/ilbc/StateConstructW.c b/libs/codecs/ilbc/StateConstructW.c
deleted file mode 100644 (file)
index 31d997d..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-\r
-/******************************************************************\r
-\r
-\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    StateConstructW.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <math.h> \r
-#include <string.h>\r
-\r
-#include "iLBC_define.h"\r
-#include "StateConstructW.h"\r
-#include "constants.h"\r
-#include "filter.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  decoding of the start state\r
- *---------------------------------------------------------------*/\r
-\r
-void StateConstructW( \r
-    int idxForMax,      /* (i) 6-bit index for the quantization of \r
-                               max amplitude */\r
-    int *idxVec,    /* (i) vector of quantization indexes */\r
-    float *syntDenum,   /* (i) synthesis filter denumerator */\r
-    float *out,         /* (o) the decoded state vector */\r
-    int len             /* (i) length of a state vector */\r
-){\r
-    float maxVal, tmpbuf[LPC_FILTERORDER+2*STATE_LEN], *tmp, \r
-        numerator[LPC_FILTERORDER+1];\r
-    float foutbuf[LPC_FILTERORDER+2*STATE_LEN], *fout;\r
-    int k,tmpi;\r
-    \r
-    /* decoding of the maximum value */\r
-\r
-    maxVal = state_frgqTbl[idxForMax];\r
-    maxVal = (float)pow(10,maxVal)/(float)4.5;\r
-        \r
-    /* initialization of buffers and coefficients */\r
-    \r
-    memset(tmpbuf, 0, LPC_FILTERORDER*sizeof(float));\r
-    memset(foutbuf, 0, LPC_FILTERORDER*sizeof(float));\r
-    for (k=0; k<LPC_FILTERORDER; k++) {\r
-        numerator[k]=syntDenum[LPC_FILTERORDER-k];\r
-    }\r
-    numerator[LPC_FILTERORDER]=syntDenum[0];\r
-    tmp = &tmpbuf[LPC_FILTERORDER];\r
-    fout = &foutbuf[LPC_FILTERORDER];\r
-\r
-    /* decoding of the sample values */\r
-    \r
-    for (k=0; k<len; k++) {\r
-        tmpi = len-1-k;\r
-        /* maxVal = 1/scal */\r
-\r
-\r
-        tmp[k] = maxVal*state_sq3Tbl[idxVec[tmpi]];\r
-    }\r
-\r
-    /* circular convolution with all-pass filter */\r
-\r
-    memset(tmp+len, 0, len*sizeof(float));\r
-    ZeroPoleFilter(tmp, numerator, syntDenum, 2*len, \r
-        LPC_FILTERORDER, fout);\r
-    for (k=0;k<len;k++) {\r
-        out[k] = fout[len-1-k]+fout[2*len-1-k];\r
-    }\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/StateConstructW.h b/libs/codecs/ilbc/StateConstructW.h
deleted file mode 100644 (file)
index b8727de..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    StateConstructW.h  \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_STATECONSTRUCTW_H\r
-#define __iLBC_STATECONSTRUCTW_H\r
-\r
-void StateConstructW( \r
-    int idxForMax,      /* (i) 6-bit index for the quantization of \r
-                               max amplitude */\r
-    int *idxVec,    /* (i) vector of quantization indexes */\r
-    float *syntDenum,   /* (i) synthesis filter denumerator */\r
-    float *out,         /* (o) the decoded state vector */\r
-    int len             /* (i) length of a state vector */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/StateSearchW.c b/libs/codecs/ilbc/StateSearchW.c
deleted file mode 100644 (file)
index fd63916..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    StateSearchW.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <math.h> \r
-#include <string.h>\r
-\r
-#include "iLBC_define.h"\r
-#include "StateSearchW.h"\r
-#include "constants.h"\r
-#include "filter.h"\r
-#include "helpfun.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  predictive noise shaping encoding of scaled start state \r
- *  (subrutine for StateSearchW) \r
- *---------------------------------------------------------------*/\r
-\r
-void AbsQuantW(\r
-    iLBC_Enc_Inst_t *iLBCenc_inst,  \r
-                        /* (i) Encoder instance */\r
-    float *in,          /* (i) vector to encode */\r
-    float *syntDenum,   /* (i) denominator of synthesis filter */\r
-    float *weightDenum, /* (i) denominator of weighting filter */\r
-    int *out,           /* (o) vector of quantizer indexes */\r
-    int len,        /* (i) length of vector to encode and \r
-                               vector of quantizer indexes */\r
-    int state_first     /* (i) position of start state in the \r
-                               80 vec */\r
-){\r
-    float *syntOut;\r
-    float syntOutBuf[LPC_FILTERORDER+STATE_SHORT_LEN_30MS];\r
-    float toQ, xq;\r
-    int n;\r
-    int index;\r
-\r
-    /* initialization of buffer for filtering */\r
-            \r
-    memset(syntOutBuf, 0, LPC_FILTERORDER*sizeof(float));\r
-\r
-\r
-\r
-    /* initialization of pointer for filtering */\r
-\r
-    syntOut = &syntOutBuf[LPC_FILTERORDER];\r
-    \r
-    /* synthesis and weighting filters on input */\r
-    \r
-    if (state_first) {\r
-        AllPoleFilter (in, weightDenum, SUBL, LPC_FILTERORDER);\r
-    } else {\r
-        AllPoleFilter (in, weightDenum, \r
-            iLBCenc_inst->state_short_len-SUBL, \r
-            LPC_FILTERORDER);\r
-    }\r
-\r
-    /* encoding loop */\r
-\r
-    for (n=0; n<len; n++) {\r
-        \r
-        /* time update of filter coefficients */  \r
-        \r
-        if ((state_first)&&(n==SUBL)){\r
-            syntDenum += (LPC_FILTERORDER+1);\r
-            weightDenum += (LPC_FILTERORDER+1);\r
-\r
-            /* synthesis and weighting filters on input */\r
-            AllPoleFilter (&in[n], weightDenum, len-n, \r
-                LPC_FILTERORDER);\r
-\r
-        } else if ((state_first==0)&&\r
-            (n==(iLBCenc_inst->state_short_len-SUBL))) {\r
-            syntDenum += (LPC_FILTERORDER+1);\r
-            weightDenum += (LPC_FILTERORDER+1);\r
-\r
-            /* synthesis and weighting filters on input */\r
-            AllPoleFilter (&in[n], weightDenum, len-n, \r
-                LPC_FILTERORDER);\r
-            \r
-        }\r
-        \r
-        /* prediction of synthesized and weighted input */\r
-\r
-        syntOut[n] = 0.0;\r
-        AllPoleFilter (&syntOut[n], weightDenum, 1, \r
-            LPC_FILTERORDER);\r
-        \r
-        /* quantization */      \r
-\r
-        toQ = in[n]-syntOut[n];\r
-        sort_sq(&xq, &index, toQ, state_sq3Tbl, 8);\r
-        out[n]=index;\r
-        syntOut[n] = state_sq3Tbl[out[n]];\r
-\r
-        /* update of the prediction filter */\r
-\r
-\r
-\r
-        AllPoleFilter(&syntOut[n], weightDenum, 1, \r
-            LPC_FILTERORDER);\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  encoding of start state                          \r
- *---------------------------------------------------------------*/\r
-\r
-void StateSearchW( \r
-    iLBC_Enc_Inst_t *iLBCenc_inst,  \r
-                        /* (i) Encoder instance */\r
-    float *residual,/* (i) target residual vector */\r
-    float *syntDenum,   /* (i) lpc synthesis filter */\r
-    float *weightDenum, /* (i) weighting filter denuminator */\r
-    int *idxForMax,     /* (o) quantizer index for maximum \r
-                               amplitude */\r
-    int *idxVec,    /* (o) vector of quantization indexes */\r
-    int len,        /* (i) length of all vectors */\r
-    int state_first     /* (i) position of start state in the \r
-                               80 vec */\r
-){  \r
-    float dtmp, maxVal;\r
-    float tmpbuf[LPC_FILTERORDER+2*STATE_SHORT_LEN_30MS];\r
-    float *tmp, numerator[1+LPC_FILTERORDER]; \r
-    float foutbuf[LPC_FILTERORDER+2*STATE_SHORT_LEN_30MS], *fout;\r
-    int k;\r
-    float qmax, scal;\r
-    \r
-    /* initialization of buffers and filter coefficients */\r
-\r
-    memset(tmpbuf, 0, LPC_FILTERORDER*sizeof(float));\r
-    memset(foutbuf, 0, LPC_FILTERORDER*sizeof(float));\r
-    for (k=0; k<LPC_FILTERORDER; k++) {\r
-        numerator[k]=syntDenum[LPC_FILTERORDER-k];\r
-    }\r
-    numerator[LPC_FILTERORDER]=syntDenum[0];\r
-    tmp = &tmpbuf[LPC_FILTERORDER];\r
-    fout = &foutbuf[LPC_FILTERORDER];\r
-\r
-    /* circular convolution with the all-pass filter */\r
-    \r
-    memcpy(tmp, residual, len*sizeof(float));\r
-    memset(tmp+len, 0, len*sizeof(float));\r
-    ZeroPoleFilter(tmp, numerator, syntDenum, 2*len, \r
-        LPC_FILTERORDER, fout);\r
-    for (k=0; k<len; k++) {\r
-        fout[k] += fout[k+len];\r
-    }   \r
-        \r
-    /* identification of the maximum amplitude value */\r
-    \r
-    maxVal = fout[0];\r
-\r
-\r
-    for (k=1; k<len; k++) {\r
-        \r
-        if (fout[k]*fout[k] > maxVal*maxVal){\r
-            maxVal = fout[k];\r
-        }\r
-    }\r
-    maxVal=(float)fabs(maxVal);\r
-        \r
-    /* encoding of the maximum amplitude value */\r
-    \r
-    if (maxVal < 10.0) {\r
-        maxVal = 10.0;\r
-    }\r
-    maxVal = (float)log10(maxVal);\r
-    sort_sq(&dtmp, idxForMax, maxVal, state_frgqTbl, 64);\r
-\r
-    /* decoding of the maximum amplitude representation value,\r
-       and corresponding scaling of start state */\r
-\r
-    maxVal=state_frgqTbl[*idxForMax];\r
-    qmax = (float)pow(10,maxVal);\r
-    scal = (float)(4.5)/qmax;\r
-    for (k=0; k<len; k++){\r
-        fout[k] *= scal;\r
-    }\r
-\r
-    /* predictive noise shaping encoding of scaled start state */\r
-\r
-    AbsQuantW(iLBCenc_inst, fout,syntDenum, \r
-        weightDenum,idxVec, len, state_first);\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/StateSearchW.h b/libs/codecs/ilbc/StateSearchW.h
deleted file mode 100644 (file)
index 3d53077..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    StateSearchW.h     \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_STATESEARCHW_H\r
-#define __iLBC_STATESEARCHW_H\r
-\r
-void AbsQuantW(\r
-    iLBC_Enc_Inst_t *iLBCenc_inst,  \r
-                        /* (i) Encoder instance */\r
-    float *in,          /* (i) vector to encode */\r
-    float *syntDenum,   /* (i) denominator of synthesis filter */\r
-    float *weightDenum, /* (i) denominator of weighting filter */\r
-    int *out,           /* (o) vector of quantizer indexes */\r
-    int len,        /* (i) length of vector to encode and \r
-                               vector of quantizer indexes */\r
-    int state_first     /* (i) position of start state in the \r
-                               80 vec */\r
-);\r
-\r
-void StateSearchW( \r
-    iLBC_Enc_Inst_t *iLBCenc_inst,  \r
-                        /* (i) Encoder instance */\r
-    float *residual,/* (i) target residual vector */\r
-    float *syntDenum,   /* (i) lpc synthesis filter */\r
-    float *weightDenum, /* (i) weighting filter denuminator */\r
-    int *idxForMax,     /* (o) quantizer index for maximum \r
-                               amplitude */\r
-    int *idxVec,    /* (o) vector of quantization indexes */\r
-    int len,        /* (i) length of all vectors */\r
-    int state_first     /* (i) position of start state in the \r
-\r
-\r
-                               80 vec */\r
-);\r
-\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/anaFilter.c b/libs/codecs/ilbc/anaFilter.c
deleted file mode 100644 (file)
index bdaee18..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    anaFilter.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <string.h>\r
-#include "anaFilter.h"\r
-#include "iLBC_define.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  LP analysis filter.\r
-\r
-\r
- *---------------------------------------------------------------*/\r
-    \r
-void anaFilter(\r
-    float *In,  /* (i) Signal to be filtered */\r
-    float *a,   /* (i) LP parameters */\r
-    int len,/* (i) Length of signal */\r
-    float *Out, /* (o) Filtered signal */\r
-    float *mem  /* (i/o) Filter state */\r
-){\r
-    int i, j;\r
-    float *po, *pi, *pm, *pa;\r
-\r
-    po = Out;\r
-\r
-    /* Filter first part using memory from past */\r
-    \r
-    for (i=0; i<LPC_FILTERORDER; i++) {\r
-        pi = &In[i];\r
-        pm = &mem[LPC_FILTERORDER-1];\r
-        pa = a;\r
-        *po=0.0;\r
-        for (j=0; j<=i; j++) {\r
-            *po+=(*pa++)*(*pi--);\r
-        }\r
-        for (j=i+1; j<LPC_FILTERORDER+1; j++) {\r
-\r
-            *po+=(*pa++)*(*pm--);\r
-        }\r
-        po++;\r
-    }\r
-\r
-    /* Filter last part where the state is entierly \r
-       in the input vector */\r
-\r
-    for (i=LPC_FILTERORDER; i<len; i++) {\r
-        pi = &In[i];\r
-        pa = a;\r
-        *po=0.0;\r
-        for (j=0; j<LPC_FILTERORDER+1; j++) {\r
-            *po+=(*pa++)*(*pi--);\r
-        }\r
-        po++;\r
-    }\r
-\r
-    /* Update state vector */\r
-\r
-    memcpy(mem, &In[len-LPC_FILTERORDER], \r
-        LPC_FILTERORDER*sizeof(float));\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/anaFilter.h b/libs/codecs/ilbc/anaFilter.h
deleted file mode 100644 (file)
index e1afd55..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    anaFilter.h\r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_ANAFILTER_H\r
-#define __iLBC_ANAFILTER_H\r
-\r
-void anaFilter(\r
-    float *In,  /* (i) Signal to be filtered */\r
-    float *a,   /* (i) LP parameters */\r
-    int len,/* (i) Length of signal */\r
-    float *Out, /* (o) Filtered signal */\r
-    float *mem  /* (i/o) Filter state */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/constants.c b/libs/codecs/ilbc/constants.c
deleted file mode 100644 (file)
index ee8cb0e..0000000
+++ /dev/null
@@ -1,729 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    constants.c\r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include "iLBC_define.h"\r
-\r
-/* ULP bit allocation */\r
-\r
-    /* 20 ms frame */\r
-\r
-const iLBC_ULP_Inst_t ULP_20msTbl = {\r
-    /* LSF */\r
-    {   {6,0,0,0,0}, {7,0,0,0,0}, {7,0,0,0,0}, \r
-        {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}},\r
-    /* Start state location, gain and samples */\r
-    {2,0,0,0,0},\r
-    {1,0,0,0,0},\r
-    {6,0,0,0,0},\r
-    {0,1,2,0,0},\r
-    /* extra CB index and extra CB gain */\r
-    {{6,0,1,0,0}, {0,0,7,0,0}, {0,0,7,0,0}},\r
-    {{2,0,3,0,0}, {1,1,2,0,0}, {0,0,3,0,0}},\r
-    /* CB index and CB gain */\r
-    {   {{7,0,1,0,0}, {0,0,7,0,0}, {0,0,7,0,0}},\r
-        {{0,0,8,0,0}, {0,0,8,0,0}, {0,0,8,0,0}},\r
-        {{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}},\r
-        {{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}}},\r
-    {   {{1,2,2,0,0}, {1,1,2,0,0}, {0,0,3,0,0}},\r
-        {{1,1,3,0,0}, {0,2,2,0,0}, {0,0,3,0,0}},\r
-        {{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}},\r
-        {{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}}}\r
-};\r
-\r
-    /* 30 ms frame */\r
-\r
-const iLBC_ULP_Inst_t ULP_30msTbl = {\r
-    /* LSF */\r
-    {   {6,0,0,0,0}, {7,0,0,0,0}, {7,0,0,0,0}, \r
-\r
-\r
-        {6,0,0,0,0}, {7,0,0,0,0}, {7,0,0,0,0}},\r
-    /* Start state location, gain and samples */\r
-    {3,0,0,0,0},\r
-    {1,0,0,0,0},\r
-    {6,0,0,0,0},\r
-    {0,1,2,0,0},\r
-    /* extra CB index and extra CB gain */\r
-    {{4,2,1,0,0}, {0,0,7,0,0}, {0,0,7,0,0}},\r
-    {{1,1,3,0,0}, {1,1,2,0,0}, {0,0,3,0,0}},\r
-    /* CB index and CB gain */\r
-    {   {{6,1,1,0,0}, {0,0,7,0,0}, {0,0,7,0,0}},\r
-        {{0,7,1,0,0}, {0,0,8,0,0}, {0,0,8,0,0}},\r
-        {{0,7,1,0,0}, {0,0,8,0,0}, {0,0,8,0,0}},\r
-        {{0,7,1,0,0}, {0,0,8,0,0}, {0,0,8,0,0}}},\r
-    {   {{1,2,2,0,0}, {1,2,1,0,0}, {0,0,3,0,0}},\r
-        {{0,2,3,0,0}, {0,2,2,0,0}, {0,0,3,0,0}},\r
-        {{0,1,4,0,0}, {0,1,3,0,0}, {0,0,3,0,0}},\r
-        {{0,1,4,0,0}, {0,1,3,0,0}, {0,0,3,0,0}}}\r
-};\r
-\r
-/* HP Filters */\r
-\r
-float hpi_zero_coefsTbl[3] = {\r
-    (float)0.92727436, (float)-1.8544941, (float)0.92727436\r
-};\r
-float hpi_pole_coefsTbl[3] = {\r
-    (float)1.0, (float)-1.9059465, (float)0.9114024\r
-};\r
-float hpo_zero_coefsTbl[3] = {\r
-    (float)0.93980581, (float)-1.8795834, (float)0.93980581\r
-};\r
-float hpo_pole_coefsTbl[3] = {\r
-    (float)1.0, (float)-1.9330735, (float)0.93589199\r
-};\r
-\r
-/* LP Filter */\r
-\r
-float lpFilt_coefsTbl[FILTERORDER_DS]={\r
-    (float)-0.066650, (float)0.125000, (float)0.316650, \r
-    (float)0.414063, (float)0.316650, \r
-    (float)0.125000, (float)-0.066650\r
-};\r
-\r
-/* State quantization tables */\r
-\r
-float state_sq3Tbl[8] = {\r
-    (float)-3.719849, (float)-2.177490, (float)-1.130005, \r
-    (float)-0.309692, (float)0.444214, (float)1.329712, \r
-    (float)2.436279, (float)3.983887\r
-};\r
-\r
-float state_frgqTbl[64] = {\r
-    (float)1.000085, (float)1.071695, (float)1.140395, \r
-    (float)1.206868, (float)1.277188, (float)1.351503, \r
-\r
-\r
-    (float)1.429380, (float)1.500727, (float)1.569049, \r
-    (float)1.639599, (float)1.707071, (float)1.781531, \r
-    (float)1.840799, (float)1.901550, (float)1.956695, \r
-    (float)2.006750, (float)2.055474, (float)2.102787, \r
-    (float)2.142819, (float)2.183592, (float)2.217962, \r
-    (float)2.257177, (float)2.295739, (float)2.332967, \r
-    (float)2.369248, (float)2.402792, (float)2.435080, \r
-    (float)2.468598, (float)2.503394, (float)2.539284, \r
-    (float)2.572944, (float)2.605036, (float)2.636331, \r
-    (float)2.668939, (float)2.698780, (float)2.729101, \r
-    (float)2.759786, (float)2.789834, (float)2.818679, \r
-    (float)2.848074, (float)2.877470, (float)2.906899, \r
-    (float)2.936655, (float)2.967804, (float)3.000115, \r
-    (float)3.033367, (float)3.066355, (float)3.104231, \r
-    (float)3.141499, (float)3.183012, (float)3.222952, \r
-    (float)3.265433, (float)3.308441, (float)3.350823, \r
-    (float)3.395275, (float)3.442793, (float)3.490801, \r
-    (float)3.542514, (float)3.604064, (float)3.666050, \r
-    (float)3.740994, (float)3.830749, (float)3.938770, \r
-    (float)4.101764\r
-};\r
-\r
-/* CB tables */\r
-\r
-int search_rangeTbl[5][CB_NSTAGES]={{58,58,58}, {108,44,44}, \r
-            {108,108,108}, {108,108,108}, {108,108,108}};\r
-int stMemLTbl=85;\r
-int memLfTbl[NASUB_MAX]={147,147,147,147};\r
-\r
-/* expansion filter(s) */\r
-\r
-float cbfiltersTbl[CB_FILTERLEN]={\r
-    (float)-0.034180, (float)0.108887, (float)-0.184326,\r
-    (float)0.806152,  (float)0.713379, (float)-0.144043,\r
-    (float)0.083740,  (float)-0.033691\r
-};\r
-\r
-/* Gain Quantization */\r
-\r
-float gain_sq3Tbl[8]={\r
-    (float)-1.000000,  (float)-0.659973,  (float)-0.330017,\r
-    (float)0.000000, (float)0.250000, (float)0.500000, \r
-    (float)0.750000, (float)1.00000};\r
-\r
-float gain_sq4Tbl[16]={\r
-    (float)-1.049988, (float)-0.900024, (float)-0.750000, \r
-    (float)-0.599976, (float)-0.450012, (float)-0.299988, \r
-    (float)-0.150024, (float)0.000000, (float)0.150024, \r
-    (float)0.299988, (float)0.450012, (float)0.599976, \r
-    (float)0.750000, (float)0.900024, (float)1.049988, \r
-    (float)1.200012};\r
-\r
-float gain_sq5Tbl[32]={\r
-    (float)0.037476, (float)0.075012, (float)0.112488, \r
-\r
-\r
-    (float)0.150024, (float)0.187500, (float)0.224976, \r
-    (float)0.262512, (float)0.299988, (float)0.337524, \r
-    (float)0.375000, (float)0.412476, (float)0.450012, \r
-    (float)0.487488, (float)0.525024, (float)0.562500, \r
-    (float)0.599976, (float)0.637512, (float)0.674988, \r
-    (float)0.712524, (float)0.750000, (float)0.787476, \r
-    (float)0.825012, (float)0.862488, (float)0.900024, \r
-    (float)0.937500, (float)0.974976, (float)1.012512, \r
-    (float)1.049988, (float)1.087524, (float)1.125000, \r
-    (float)1.162476, (float)1.200012};\r
-\r
-/* Enhancer - Upsamling a factor 4 (ENH_UPS0 = 4) */\r
-float polyphaserTbl[ENH_UPS0*(2*ENH_FL0+1)]={ \r
-    (float)0.000000, (float)0.000000, (float)0.000000,\r
-(float)1.000000, \r
-        (float)0.000000, (float)0.000000, (float)0.000000, \r
-    (float)0.015625, (float)-0.076904, (float)0.288330,\r
-(float)0.862061, \r
-        (float)-0.106445, (float)0.018799, (float)-0.015625, \r
-    (float)0.023682, (float)-0.124268, (float)0.601563,\r
-(float)0.601563, \r
-        (float)-0.124268, (float)0.023682, (float)-0.023682, \r
-    (float)0.018799, (float)-0.106445, (float)0.862061,\r
-(float)0.288330, \r
-        (float)-0.076904, (float)0.015625, (float)-0.018799};\r
-\r
-float enh_plocsTbl[ENH_NBLOCKS_TOT] = {(float)40.0, (float)120.0, \r
-            (float)200.0, (float)280.0, (float)360.0, \r
-            (float)440.0, (float)520.0, (float)600.0};\r
-\r
-/* LPC analysis and quantization */ \r
-\r
-int dim_lsfCbTbl[LSF_NSPLIT] = {3, 3, 4};\r
-int size_lsfCbTbl[LSF_NSPLIT] = {64,128,128};\r
-\r
-\r
-float lsfmeanTbl[LPC_FILTERORDER] = { \r
-    (float)0.281738, (float)0.445801, (float)0.663330, \r
-    (float)0.962524, (float)1.251831, (float)1.533081, \r
-    (float)1.850586, (float)2.137817, (float)2.481445, \r
-    (float)2.777344};\r
-\r
-float lsf_weightTbl_30ms[6] = {(float)(1.0/2.0), (float)1.0,\r
-(float)(2.0/3.0), \r
-    (float)(1.0/3.0), (float)0.0, (float)0.0};\r
-\r
-float lsf_weightTbl_20ms[4] = {(float)(3.0/4.0), (float)(2.0/4.0), \r
-    (float)(1.0/4.0), (float)(0.0)};\r
-\r
-/* Hanning LPC window */\r
-float lpc_winTbl[BLOCKL_MAX]={\r
-    (float)0.000183, (float)0.000671, (float)0.001526,\r
-    (float)0.002716, (float)0.004242, (float)0.006104,\r
-    (float)0.008301, (float)0.010834, (float)0.013702,\r
-\r
-\r
-    (float)0.016907, (float)0.020416, (float)0.024261,\r
-    (float)0.028442, (float)0.032928, (float)0.037750,\r
-    (float)0.042877, (float)0.048309, (float)0.054047,\r
-    (float)0.060089, (float)0.066437, (float)0.073090,\r
-    (float)0.080017, (float)0.087219, (float)0.094727,\r
-    (float)0.102509, (float)0.110535, (float)0.118835,\r
-    (float)0.127411, (float)0.136230, (float)0.145294,\r
-    (float)0.154602, (float)0.164154, (float)0.173920,\r
-    (float)0.183899, (float)0.194122, (float)0.204529,\r
-    (float)0.215149, (float)0.225952, (float)0.236938,\r
-    (float)0.248108, (float)0.259460, (float)0.270966,\r
-    (float)0.282654, (float)0.294464, (float)0.306396,\r
-    (float)0.318481, (float)0.330688, (float)0.343018,\r
-    (float)0.355438, (float)0.367981, (float)0.380585,\r
-    (float)0.393280, (float)0.406067, (float)0.418884,\r
-    (float)0.431763, (float)0.444702, (float)0.457672,\r
-    (float)0.470673, (float)0.483704, (float)0.496735,\r
-    (float)0.509766, (float)0.522797, (float)0.535828,\r
-    (float)0.548798, (float)0.561768, (float)0.574677,\r
-    (float)0.587524, (float)0.600342, (float)0.613068,\r
-    (float)0.625732, (float)0.638306, (float)0.650787,\r
-    (float)0.663147, (float)0.675415, (float)0.687561,\r
-    (float)0.699585, (float)0.711487, (float)0.723206,\r
-    (float)0.734802, (float)0.746216, (float)0.757477,\r
-    (float)0.768585, (float)0.779480, (float)0.790192,\r
-    (float)0.800720, (float)0.811005, (float)0.821106,\r
-    (float)0.830994, (float)0.840668, (float)0.850067,\r
-    (float)0.859253, (float)0.868225, (float)0.876892,\r
-    (float)0.885345, (float)0.893524, (float)0.901428,\r
-    (float)0.909058, (float)0.916412, (float)0.923492,\r
-    (float)0.930267, (float)0.936768, (float)0.942963,\r
-    (float)0.948853, (float)0.954437, (float)0.959717,\r
-    (float)0.964691, (float)0.969360, (float)0.973694,\r
-    (float)0.977692, (float)0.981384, (float)0.984741,\r
-    (float)0.987762, (float)0.990479, (float)0.992828,\r
-    (float)0.994873, (float)0.996552, (float)0.997925,\r
-    (float)0.998932, (float)0.999603, (float)0.999969,\r
-    (float)0.999969, (float)0.999603, (float)0.998932,\r
-    (float)0.997925, (float)0.996552, (float)0.994873,\r
-    (float)0.992828, (float)0.990479, (float)0.987762,\r
-    (float)0.984741, (float)0.981384, (float)0.977692,\r
-    (float)0.973694, (float)0.969360, (float)0.964691,\r
-    (float)0.959717, (float)0.954437, (float)0.948853,\r
-    (float)0.942963, (float)0.936768, (float)0.930267,\r
-    (float)0.923492, (float)0.916412, (float)0.909058,\r
-    (float)0.901428, (float)0.893524, (float)0.885345,\r
-    (float)0.876892, (float)0.868225, (float)0.859253,\r
-    (float)0.850067, (float)0.840668, (float)0.830994,\r
-    (float)0.821106, (float)0.811005, (float)0.800720,\r
-    (float)0.790192, (float)0.779480, (float)0.768585,\r
-    (float)0.757477, (float)0.746216, (float)0.734802,\r
-    (float)0.723206, (float)0.711487, (float)0.699585,\r
-    (float)0.687561, (float)0.675415, (float)0.663147,\r
-    (float)0.650787, (float)0.638306, (float)0.625732,\r
-\r
-\r
-    (float)0.613068, (float)0.600342, (float)0.587524,\r
-    (float)0.574677, (float)0.561768, (float)0.548798,\r
-    (float)0.535828, (float)0.522797, (float)0.509766,\r
-    (float)0.496735, (float)0.483704, (float)0.470673,\r
-    (float)0.457672, (float)0.444702, (float)0.431763,\r
-    (float)0.418884, (float)0.406067, (float)0.393280,\r
-    (float)0.380585, (float)0.367981, (float)0.355438,\r
-    (float)0.343018, (float)0.330688, (float)0.318481,\r
-    (float)0.306396, (float)0.294464, (float)0.282654,\r
-    (float)0.270966, (float)0.259460, (float)0.248108,\r
-    (float)0.236938, (float)0.225952, (float)0.215149,\r
-    (float)0.204529, (float)0.194122, (float)0.183899,\r
-    (float)0.173920, (float)0.164154, (float)0.154602,\r
-    (float)0.145294, (float)0.136230, (float)0.127411,\r
-    (float)0.118835, (float)0.110535, (float)0.102509,\r
-    (float)0.094727, (float)0.087219, (float)0.080017,\r
-    (float)0.073090, (float)0.066437, (float)0.060089,\r
-    (float)0.054047, (float)0.048309, (float)0.042877,\r
-    (float)0.037750, (float)0.032928, (float)0.028442,\r
-    (float)0.024261, (float)0.020416, (float)0.016907,\r
-    (float)0.013702, (float)0.010834, (float)0.008301,\r
-    (float)0.006104, (float)0.004242, (float)0.002716,\r
-    (float)0.001526, (float)0.000671, (float)0.000183\r
-};\r
-\r
-/* Asymmetric LPC window */\r
-float lpc_asymwinTbl[BLOCKL_MAX]={\r
-    (float)0.000061, (float)0.000214, (float)0.000458,\r
-    (float)0.000824, (float)0.001282, (float)0.001831,\r
-    (float)0.002472, (float)0.003235, (float)0.004120,\r
-    (float)0.005066, (float)0.006134, (float)0.007294,\r
-    (float)0.008545, (float)0.009918, (float)0.011383,\r
-    (float)0.012939, (float)0.014587, (float)0.016357,\r
-    (float)0.018219, (float)0.020172, (float)0.022217,\r
-    (float)0.024353, (float)0.026611, (float)0.028961,\r
-    (float)0.031372, (float)0.033905, (float)0.036530,\r
-    (float)0.039276, (float)0.042084, (float)0.044983,\r
-    (float)0.047974, (float)0.051086, (float)0.054260,\r
-    (float)0.057526, (float)0.060883, (float)0.064331,\r
-    (float)0.067871, (float)0.071503, (float)0.075226,\r
-    (float)0.079010, (float)0.082916, (float)0.086884,\r
-    (float)0.090942, (float)0.095062, (float)0.099304,\r
-    (float)0.103607, (float)0.107971, (float)0.112427,\r
-    (float)0.116974, (float)0.121582, (float)0.126282,\r
-    (float)0.131073, (float)0.135895, (float)0.140839,\r
-    (float)0.145813, (float)0.150879, (float)0.156006,\r
-    (float)0.161224, (float)0.166504, (float)0.171844,\r
-    (float)0.177246, (float)0.182709, (float)0.188263,\r
-    (float)0.193848, (float)0.199524, (float)0.205231,\r
-    (float)0.211029, (float)0.216858, (float)0.222778,\r
-    (float)0.228729, (float)0.234741, (float)0.240814,\r
-    (float)0.246918, (float)0.253082, (float)0.259308,\r
-    (float)0.265564, (float)0.271881, (float)0.278259,\r
-    (float)0.284668, (float)0.291107, (float)0.297607,\r
-\r
-\r
-    (float)0.304138, (float)0.310730, (float)0.317322,\r
-    (float)0.323975, (float)0.330658, (float)0.337372,\r
-    (float)0.344147, (float)0.350922, (float)0.357727,\r
-    (float)0.364594, (float)0.371460, (float)0.378357,\r
-    (float)0.385284, (float)0.392212, (float)0.399170,\r
-    (float)0.406158, (float)0.413177, (float)0.420197,\r
-    (float)0.427246, (float)0.434296, (float)0.441376,\r
-    (float)0.448456, (float)0.455536, (float)0.462646,\r
-    (float)0.469757, (float)0.476868, (float)0.483978,\r
-    (float)0.491089, (float)0.498230, (float)0.505341,\r
-    (float)0.512451, (float)0.519592, (float)0.526703,\r
-    (float)0.533813, (float)0.540924, (float)0.548004,\r
-    (float)0.555084, (float)0.562164, (float)0.569244,\r
-    (float)0.576294, (float)0.583313, (float)0.590332,\r
-    (float)0.597321, (float)0.604309, (float)0.611267,\r
-    (float)0.618195, (float)0.625092, (float)0.631989,\r
-    (float)0.638855, (float)0.645660, (float)0.652466,\r
-    (float)0.659241, (float)0.665985, (float)0.672668,\r
-    (float)0.679352, (float)0.685974, (float)0.692566,\r
-    (float)0.699127, (float)0.705658, (float)0.712128,\r
-    (float)0.718536, (float)0.724945, (float)0.731262,\r
-    (float)0.737549, (float)0.743805, (float)0.750000,\r
-    (float)0.756134, (float)0.762238, (float)0.768280,\r
-    (float)0.774261, (float)0.780182, (float)0.786072,\r
-    (float)0.791870, (float)0.797638, (float)0.803314,\r
-    (float)0.808960, (float)0.814514, (float)0.820038,\r
-    (float)0.825470, (float)0.830841, (float)0.836151,\r
-    (float)0.841400, (float)0.846558, (float)0.851654,\r
-    (float)0.856689, (float)0.861633, (float)0.866516,\r
-    (float)0.871338, (float)0.876068, (float)0.880737,\r
-    (float)0.885315, (float)0.889801, (float)0.894226,\r
-    (float)0.898560, (float)0.902832, (float)0.907013,\r
-    (float)0.911102, (float)0.915100, (float)0.919037,\r
-    (float)0.922882, (float)0.926636, (float)0.930328,\r
-    (float)0.933899, (float)0.937408, (float)0.940796,\r
-    (float)0.944122, (float)0.947357, (float)0.950470,\r
-    (float)0.953522, (float)0.956482, (float)0.959351,\r
-    (float)0.962097, (float)0.964783, (float)0.967377,\r
-    (float)0.969849, (float)0.972229, (float)0.974518,\r
-    (float)0.976715, (float)0.978821, (float)0.980835,\r
-    (float)0.982727, (float)0.984528, (float)0.986237,\r
-    (float)0.987854, (float)0.989380, (float)0.990784,\r
-    (float)0.992096, (float)0.993317, (float)0.994415,\r
-    (float)0.995422, (float)0.996338, (float)0.997162,\r
-    (float)0.997864, (float)0.998474, (float)0.998962,\r
-    (float)0.999390, (float)0.999695, (float)0.999878,\r
-    (float)0.999969, (float)0.999969, (float)0.996918,\r
-    (float)0.987701, (float)0.972382, (float)0.951050,\r
-    (float)0.923889, (float)0.891022, (float)0.852631,\r
-    (float)0.809021, (float)0.760406, (float)0.707092,\r
-    (float)0.649445, (float)0.587799, (float)0.522491,\r
-    (float)0.453979, (float)0.382690, (float)0.309021,\r
-    (float)0.233459, (float)0.156433, (float)0.078461\r
-};\r
-\r
-\r
-\r
-/* Lag window for LPC */\r
-float lpc_lagwinTbl[LPC_FILTERORDER + 1]={\r
-    (float)1.000100, (float)0.998890, (float)0.995569,\r
-        (float)0.990057, (float)0.982392,\r
-    (float)0.972623, (float)0.960816, (float)0.947047,\r
-        (float)0.931405, (float)0.913989, (float)0.894909};\r
-\r
-/* LSF quantization*/\r
-float lsfCbTbl[64 * 3 + 128 * 3 + 128 * 4] = {\r
-(float)0.155396, (float)0.273193, (float)0.451172,\r
-(float)0.390503, (float)0.648071, (float)1.002075,\r
-(float)0.440186, (float)0.692261, (float)0.955688,\r
-(float)0.343628, (float)0.642334, (float)1.071533,\r
-(float)0.318359, (float)0.491577, (float)0.670532,\r
-(float)0.193115, (float)0.375488, (float)0.725708,\r
-(float)0.364136, (float)0.510376, (float)0.658691,\r
-(float)0.297485, (float)0.527588, (float)0.842529,\r
-(float)0.227173, (float)0.365967, (float)0.563110,\r
-(float)0.244995, (float)0.396729, (float)0.636475,\r
-(float)0.169434, (float)0.300171, (float)0.520264,\r
-(float)0.312866, (float)0.464478, (float)0.643188,\r
-(float)0.248535, (float)0.429932, (float)0.626099,\r
-(float)0.236206, (float)0.491333, (float)0.817139,\r
-(float)0.334961, (float)0.625122, (float)0.895752,\r
-(float)0.343018, (float)0.518555, (float)0.698608,\r
-(float)0.372803, (float)0.659790, (float)0.945435,\r
-(float)0.176880, (float)0.316528, (float)0.581421,\r
-(float)0.416382, (float)0.625977, (float)0.805176,\r
-(float)0.303223, (float)0.568726, (float)0.915039,\r
-(float)0.203613, (float)0.351440, (float)0.588135,\r
-(float)0.221191, (float)0.375000, (float)0.614746,\r
-(float)0.199951, (float)0.323364, (float)0.476074,\r
-(float)0.300781, (float)0.433350, (float)0.566895,\r
-(float)0.226196, (float)0.354004, (float)0.507568,\r
-(float)0.300049, (float)0.508179, (float)0.711670,\r
-(float)0.312012, (float)0.492676, (float)0.763428,\r
-(float)0.329956, (float)0.541016, (float)0.795776,\r
-(float)0.373779, (float)0.604614, (float)0.928833,\r
-(float)0.210571, (float)0.452026, (float)0.755249,\r
-(float)0.271118, (float)0.473267, (float)0.662476,\r
-(float)0.285522, (float)0.436890, (float)0.634399,\r
-(float)0.246704, (float)0.565552, (float)0.859009,\r
-(float)0.270508, (float)0.406250, (float)0.553589,\r
-(float)0.361450, (float)0.578491, (float)0.813843,\r
-(float)0.342651, (float)0.482788, (float)0.622437,\r
-(float)0.340332, (float)0.549438, (float)0.743164,\r
-(float)0.200439, (float)0.336304, (float)0.540894,\r
-(float)0.407837, (float)0.644775, (float)0.895142,\r
-(float)0.294678, (float)0.454834, (float)0.699097,\r
-(float)0.193115, (float)0.344482, (float)0.643188,\r
-(float)0.275757, (float)0.420776, (float)0.598755,\r
-(float)0.380493, (float)0.608643, (float)0.861084,\r
-(float)0.222778, (float)0.426147, (float)0.676514,\r
-\r
-\r
-(float)0.407471, (float)0.700195, (float)1.053101,\r
-(float)0.218384, (float)0.377197, (float)0.669922,\r
-(float)0.313232, (float)0.454102, (float)0.600952,\r
-(float)0.347412, (float)0.571533, (float)0.874146,\r
-(float)0.238037, (float)0.405396, (float)0.729492,\r
-(float)0.223877, (float)0.412964, (float)0.822021,\r
-(float)0.395264, (float)0.582153, (float)0.743896,\r
-(float)0.247925, (float)0.485596, (float)0.720581,\r
-(float)0.229126, (float)0.496582, (float)0.907715,\r
-(float)0.260132, (float)0.566895, (float)1.012695,\r
-(float)0.337402, (float)0.611572, (float)0.978149,\r
-(float)0.267822, (float)0.447632, (float)0.769287,\r
-(float)0.250610, (float)0.381714, (float)0.530029,\r
-(float)0.430054, (float)0.805054, (float)1.221924,\r
-(float)0.382568, (float)0.544067, (float)0.701660,\r
-(float)0.383545, (float)0.710327, (float)1.149170,\r
-(float)0.271362, (float)0.529053, (float)0.775513,\r
-(float)0.246826, (float)0.393555, (float)0.588623,\r
-(float)0.266846, (float)0.422119, (float)0.676758,\r
-(float)0.311523, (float)0.580688, (float)0.838623,\r
-(float)1.331177, (float)1.576782, (float)1.779541,\r
-(float)1.160034, (float)1.401978, (float)1.768188,\r
-(float)1.161865, (float)1.525146, (float)1.715332,\r
-(float)0.759521, (float)0.913940, (float)1.119873,\r
-(float)0.947144, (float)1.121338, (float)1.282471,\r
-(float)1.015015, (float)1.557007, (float)1.804932,\r
-(float)1.172974, (float)1.402100, (float)1.692627,\r
-(float)1.087524, (float)1.474243, (float)1.665405,\r
-(float)0.899536, (float)1.105225, (float)1.406250,\r
-(float)1.148438, (float)1.484741, (float)1.796265,\r
-(float)0.785645, (float)1.209839, (float)1.567749,\r
-(float)0.867798, (float)1.166504, (float)1.450684,\r
-(float)0.922485, (float)1.229858, (float)1.420898,\r
-(float)0.791260, (float)1.123291, (float)1.409546,\r
-(float)0.788940, (float)0.966064, (float)1.340332,\r
-(float)1.051147, (float)1.272827, (float)1.556641,\r
-(float)0.866821, (float)1.181152, (float)1.538818,\r
-(float)0.906738, (float)1.373535, (float)1.607910,\r
-(float)1.244751, (float)1.581421, (float)1.933838,\r
-(float)0.913940, (float)1.337280, (float)1.539673,\r
-(float)0.680542, (float)0.959229, (float)1.662720,\r
-(float)0.887207, (float)1.430542, (float)1.800781,\r
-(float)0.912598, (float)1.433594, (float)1.683960,\r
-(float)0.860474, (float)1.060303, (float)1.455322,\r
-(float)1.005127, (float)1.381104, (float)1.706909,\r
-(float)0.800781, (float)1.363892, (float)1.829102,\r
-(float)0.781860, (float)1.124390, (float)1.505981,\r
-(float)1.003662, (float)1.471436, (float)1.684692,\r
-(float)0.981323, (float)1.309570, (float)1.618042,\r
-(float)1.228760, (float)1.554321, (float)1.756470,\r
-(float)0.734375, (float)0.895752, (float)1.225586,\r
-(float)0.841797, (float)1.055664, (float)1.249268,\r
-(float)0.920166, (float)1.119385, (float)1.486206,\r
-(float)0.894409, (float)1.539063, (float)1.828979,\r
-\r
-\r
-(float)1.283691, (float)1.543335, (float)1.858276,\r
-(float)0.676025, (float)0.933105, (float)1.490845,\r
-(float)0.821289, (float)1.491821, (float)1.739868,\r
-(float)0.923218, (float)1.144653, (float)1.580566,\r
-(float)1.057251, (float)1.345581, (float)1.635864,\r
-(float)0.888672, (float)1.074951, (float)1.353149,\r
-(float)0.942749, (float)1.195435, (float)1.505493,\r
-(float)1.492310, (float)1.788086, (float)2.039673,\r
-(float)1.070313, (float)1.634399, (float)1.860962,\r
-(float)1.253296, (float)1.488892, (float)1.686035,\r
-(float)0.647095, (float)0.864014, (float)1.401855,\r
-(float)0.866699, (float)1.254883, (float)1.453369,\r
-(float)1.063965, (float)1.532593, (float)1.731323,\r
-(float)1.167847, (float)1.521484, (float)1.884033,\r
-(float)0.956055, (float)1.502075, (float)1.745605,\r
-(float)0.928711, (float)1.288574, (float)1.479614,\r
-(float)1.088013, (float)1.380737, (float)1.570801,\r
-(float)0.905029, (float)1.186768, (float)1.371948,\r
-(float)1.057861, (float)1.421021, (float)1.617432,\r
-(float)1.108276, (float)1.312500, (float)1.501465,\r
-(float)0.979492, (float)1.416992, (float)1.624268,\r
-(float)1.276001, (float)1.661011, (float)2.007935,\r
-(float)0.993042, (float)1.168579, (float)1.331665,\r
-(float)0.778198, (float)0.944946, (float)1.235962,\r
-(float)1.223755, (float)1.491333, (float)1.815674,\r
-(float)0.852661, (float)1.350464, (float)1.722290,\r
-(float)1.134766, (float)1.593140, (float)1.787354,\r
-(float)1.051392, (float)1.339722, (float)1.531006,\r
-(float)0.803589, (float)1.271240, (float)1.652100,\r
-(float)0.755737, (float)1.143555, (float)1.639404,\r
-(float)0.700928, (float)0.837280, (float)1.130371,\r
-(float)0.942749, (float)1.197876, (float)1.669800,\r
-(float)0.993286, (float)1.378296, (float)1.566528,\r
-(float)0.801025, (float)1.095337, (float)1.298950,\r
-(float)0.739990, (float)1.032959, (float)1.383667,\r
-(float)0.845703, (float)1.072266, (float)1.543823,\r
-(float)0.915649, (float)1.072266, (float)1.224487,\r
-(float)1.021973, (float)1.226196, (float)1.481323,\r
-(float)0.999878, (float)1.204102, (float)1.555908,\r
-(float)0.722290, (float)0.913940, (float)1.340210,\r
-(float)0.673340, (float)0.835938, (float)1.259521,\r
-(float)0.832397, (float)1.208374, (float)1.394165,\r
-(float)0.962158, (float)1.576172, (float)1.912842,\r
-(float)1.166748, (float)1.370850, (float)1.556763,\r
-(float)0.946289, (float)1.138550, (float)1.400391,\r
-(float)1.035034, (float)1.218262, (float)1.386475,\r
-(float)1.393799, (float)1.717773, (float)2.000244,\r
-(float)0.972656, (float)1.260986, (float)1.760620,\r
-(float)1.028198, (float)1.288452, (float)1.484619,\r
-(float)0.773560, (float)1.258057, (float)1.756714,\r
-(float)1.080322, (float)1.328003, (float)1.742676,\r
-(float)0.823975, (float)1.450806, (float)1.917725,\r
-(float)0.859009, (float)1.016602, (float)1.191895,\r
-(float)0.843994, (float)1.131104, (float)1.645020,\r
-\r
-\r
-(float)1.189697, (float)1.702759, (float)1.894409,\r
-(float)1.346680, (float)1.763184, (float)2.066040,\r
-(float)0.980469, (float)1.253784, (float)1.441650,\r
-(float)1.338135, (float)1.641968, (float)1.932739,\r
-(float)1.223267, (float)1.424194, (float)1.626465,\r
-(float)0.765747, (float)1.004150, (float)1.579102,\r
-(float)1.042847, (float)1.269165, (float)1.647461,\r
-(float)0.968750, (float)1.257568, (float)1.555786,\r
-(float)0.826294, (float)0.993408, (float)1.275146,\r
-(float)0.742310, (float)0.950439, (float)1.430542,\r
-(float)1.054321, (float)1.439819, (float)1.828003,\r
-(float)1.072998, (float)1.261719, (float)1.441895,\r
-(float)0.859375, (float)1.036377, (float)1.314819,\r
-(float)0.895752, (float)1.267212, (float)1.605591,\r
-(float)0.805420, (float)0.962891, (float)1.142334,\r
-(float)0.795654, (float)1.005493, (float)1.468506,\r
-(float)1.105347, (float)1.313843, (float)1.584839,\r
-(float)0.792236, (float)1.221802, (float)1.465698,\r
-(float)1.170532, (float)1.467651, (float)1.664063,\r
-(float)0.838257, (float)1.153198, (float)1.342163,\r
-(float)0.968018, (float)1.198242, (float)1.391235,\r
-(float)1.250122, (float)1.623535, (float)1.823608,\r
-(float)0.711670, (float)1.058350, (float)1.512085,\r
-(float)1.204834, (float)1.454468, (float)1.739136,\r
-(float)1.137451, (float)1.421753, (float)1.620117,\r
-(float)0.820435, (float)1.322754, (float)1.578247,\r
-(float)0.798706, (float)1.005005, (float)1.213867,\r
-(float)0.980713, (float)1.324951, (float)1.512939,\r
-(float)1.112305, (float)1.438843, (float)1.735596,\r
-(float)1.135498, (float)1.356689, (float)1.635742,\r
-(float)1.101318, (float)1.387451, (float)1.686523,\r
-(float)0.849854, (float)1.276978, (float)1.523438,\r
-(float)1.377930, (float)1.627563, (float)1.858154,\r
-(float)0.884888, (float)1.095459, (float)1.287476,\r
-(float)1.289795, (float)1.505859, (float)1.756592,\r
-(float)0.817505, (float)1.384155, (float)1.650513,\r
-(float)1.446655, (float)1.702148, (float)1.931885,\r
-(float)0.835815, (float)1.023071, (float)1.385376,\r
-(float)0.916626, (float)1.139038, (float)1.335327,\r
-(float)0.980103, (float)1.174072, (float)1.453735,\r
-(float)1.705688, (float)2.153809, (float)2.398315, (float)2.743408,\r
-(float)1.797119, (float)2.016846, (float)2.445679, (float)2.701904,\r
-(float)1.990356, (float)2.219116, (float)2.576416, (float)2.813477,\r
-(float)1.849365, (float)2.190918, (float)2.611572, (float)2.835083,\r
-(float)1.657959, (float)1.854370, (float)2.159058, (float)2.726196,\r
-(float)1.437744, (float)1.897705, (float)2.253174, (float)2.655396,\r
-(float)2.028687, (float)2.247314, (float)2.542358, (float)2.875854,\r
-(float)1.736938, (float)1.922119, (float)2.185913, (float)2.743408,\r
-(float)1.521606, (float)1.870972, (float)2.526855, (float)2.786987,\r
-(float)1.841431, (float)2.050659, (float)2.463623, (float)2.857666,\r
-(float)1.590088, (float)2.067261, (float)2.427979, (float)2.794434,\r
-(float)1.746826, (float)2.057373, (float)2.320190, (float)2.800781,\r
-(float)1.734619, (float)1.940552, (float)2.306030, (float)2.826416,\r
-(float)1.786255, (float)2.204468, (float)2.457520, (float)2.795288,\r
-\r
-\r
-(float)1.861084, (float)2.170532, (float)2.414551, (float)2.763672,\r
-(float)2.001465, (float)2.307617, (float)2.552734, (float)2.811890,\r
-(float)1.784424, (float)2.124146, (float)2.381592, (float)2.645508,\r
-(float)1.888794, (float)2.135864, (float)2.418579, (float)2.861206,\r
-(float)2.301147, (float)2.531250, (float)2.724976, (float)2.913086,\r
-(float)1.837769, (float)2.051270, (float)2.261963, (float)2.553223,\r
-(float)2.012939, (float)2.221191, (float)2.440186, (float)2.678101,\r
-(float)1.429565, (float)1.858276, (float)2.582275, (float)2.845703,\r
-(float)1.622803, (float)1.897705, (float)2.367310, (float)2.621094,\r
-(float)1.581543, (float)1.960449, (float)2.515869, (float)2.736450,\r
-(float)1.419434, (float)1.933960, (float)2.394653, (float)2.746704,\r
-(float)1.721924, (float)2.059570, (float)2.421753, (float)2.769653,\r
-(float)1.911011, (float)2.220703, (float)2.461060, (float)2.740723,\r
-(float)1.581177, (float)1.860840, (float)2.516968, (float)2.874634,\r
-(float)1.870361, (float)2.098755, (float)2.432373, (float)2.656494,\r
-(float)2.059692, (float)2.279785, (float)2.495605, (float)2.729370,\r
-(float)1.815674, (float)2.181519, (float)2.451538, (float)2.680542,\r
-(float)1.407959, (float)1.768311, (float)2.343018, (float)2.668091,\r
-(float)2.168701, (float)2.394653, (float)2.604736, (float)2.829346,\r
-(float)1.636230, (float)1.865723, (float)2.329102, (float)2.824219,\r
-(float)1.878906, (float)2.139526, (float)2.376709, (float)2.679810,\r
-(float)1.765381, (float)1.971802, (float)2.195435, (float)2.586914,\r
-(float)2.164795, (float)2.410889, (float)2.673706, (float)2.903198,\r
-(float)2.071899, (float)2.331055, (float)2.645874, (float)2.907104,\r
-(float)2.026001, (float)2.311523, (float)2.594849, (float)2.863892,\r
-(float)1.948975, (float)2.180786, (float)2.514893, (float)2.797852,\r
-(float)1.881836, (float)2.130859, (float)2.478149, (float)2.804199,\r
-(float)2.238159, (float)2.452759, (float)2.652832, (float)2.868286,\r
-(float)1.897949, (float)2.101685, (float)2.524292, (float)2.880127,\r
-(float)1.856445, (float)2.074585, (float)2.541016, (float)2.791748,\r
-(float)1.695557, (float)2.199097, (float)2.506226, (float)2.742676,\r
-(float)1.612671, (float)1.877075, (float)2.435425, (float)2.732910,\r
-(float)1.568848, (float)1.786499, (float)2.194580, (float)2.768555,\r
-(float)1.953369, (float)2.164551, (float)2.486938, (float)2.874023,\r
-(float)1.388306, (float)1.725342, (float)2.384521, (float)2.771851,\r
-(float)2.115356, (float)2.337769, (float)2.592896, (float)2.864014,\r
-(float)1.905762, (float)2.111328, (float)2.363525, (float)2.789307,\r
-(float)1.882568, (float)2.332031, (float)2.598267, (float)2.827637,\r
-(float)1.683594, (float)2.088745, (float)2.361938, (float)2.608643,\r
-(float)1.874023, (float)2.182129, (float)2.536133, (float)2.766968,\r
-(float)1.861938, (float)2.070435, (float)2.309692, (float)2.700562,\r
-(float)1.722168, (float)2.107422, (float)2.477295, (float)2.837646,\r
-(float)1.926880, (float)2.184692, (float)2.442627, (float)2.663818,\r
-(float)2.123901, (float)2.337280, (float)2.553101, (float)2.777466,\r
-(float)1.588135, (float)1.911499, (float)2.212769, (float)2.543945,\r
-(float)2.053955, (float)2.370850, (float)2.712158, (float)2.939941,\r
-(float)2.210449, (float)2.519653, (float)2.770386, (float)2.958618,\r
-(float)2.199463, (float)2.474731, (float)2.718262, (float)2.919922,\r
-(float)1.960083, (float)2.175415, (float)2.608032, (float)2.888794,\r
-(float)1.953735, (float)2.185181, (float)2.428223, (float)2.809570,\r
-(float)1.615234, (float)2.036499, (float)2.576538, (float)2.834595,\r
-(float)1.621094, (float)2.028198, (float)2.431030, (float)2.664673,\r
-(float)1.824951, (float)2.267456, (float)2.514526, (float)2.747925,\r
-(float)1.994263, (float)2.229126, (float)2.475220, (float)2.833984,\r
-\r
-\r
-(float)1.746338, (float)2.011353, (float)2.588257, (float)2.826904,\r
-(float)1.562866, (float)2.135986, (float)2.471680, (float)2.687256,\r
-(float)1.748901, (float)2.083496, (float)2.460938, (float)2.686279,\r
-(float)1.758057, (float)2.131470, (float)2.636597, (float)2.891602,\r
-(float)2.071289, (float)2.299072, (float)2.550781, (float)2.814331,\r
-(float)1.839600, (float)2.094360, (float)2.496460, (float)2.723999,\r
-(float)1.882202, (float)2.088257, (float)2.636841, (float)2.923096,\r
-(float)1.957886, (float)2.153198, (float)2.384399, (float)2.615234,\r
-(float)1.992920, (float)2.351196, (float)2.654419, (float)2.889771,\r
-(float)2.012817, (float)2.262451, (float)2.643799, (float)2.903076,\r
-(float)2.025635, (float)2.254761, (float)2.508423, (float)2.784058,\r
-(float)2.316040, (float)2.589355, (float)2.794189, (float)2.963623,\r
-(float)1.741211, (float)2.279541, (float)2.578491, (float)2.816284,\r
-(float)1.845337, (float)2.055786, (float)2.348511, (float)2.822021,\r
-(float)1.679932, (float)1.926514, (float)2.499756, (float)2.835693,\r
-(float)1.722534, (float)1.946899, (float)2.448486, (float)2.728760,\r
-(float)1.829834, (float)2.043213, (float)2.580444, (float)2.867676,\r
-(float)1.676636, (float)2.071655, (float)2.322510, (float)2.704834,\r
-(float)1.791504, (float)2.113525, (float)2.469727, (float)2.784058,\r
-(float)1.977051, (float)2.215088, (float)2.497437, (float)2.726929,\r
-(float)1.800171, (float)2.106689, (float)2.357788, (float)2.738892,\r
-(float)1.827759, (float)2.170166, (float)2.525879, (float)2.852417,\r
-(float)1.918335, (float)2.132813, (float)2.488403, (float)2.728149,\r
-(float)1.916748, (float)2.225098, (float)2.542603, (float)2.857666,\r
-(float)1.761230, (float)1.976074, (float)2.507446, (float)2.884521,\r
-(float)2.053711, (float)2.367432, (float)2.608032, (float)2.837646,\r
-(float)1.595337, (float)2.000977, (float)2.307129, (float)2.578247,\r
-(float)1.470581, (float)2.031250, (float)2.375854, (float)2.647583,\r
-(float)1.801392, (float)2.128052, (float)2.399780, (float)2.822876,\r
-(float)1.853638, (float)2.066650, (float)2.429199, (float)2.751465,\r
-(float)1.956299, (float)2.163696, (float)2.394775, (float)2.734253,\r
-(float)1.963623, (float)2.275757, (float)2.585327, (float)2.865234,\r
-(float)1.887451, (float)2.105469, (float)2.331787, (float)2.587402,\r
-(float)2.120117, (float)2.443359, (float)2.733887, (float)2.941406,\r
-(float)1.506348, (float)1.766968, (float)2.400513, (float)2.851807,\r
-(float)1.664551, (float)1.981079, (float)2.375732, (float)2.774414,\r
-(float)1.720703, (float)1.978882, (float)2.391479, (float)2.640991,\r
-(float)1.483398, (float)1.814819, (float)2.434448, (float)2.722290,\r
-(float)1.769043, (float)2.136597, (float)2.563721, (float)2.774414,\r
-(float)1.810791, (float)2.049316, (float)2.373901, (float)2.613647,\r
-(float)1.788330, (float)2.005981, (float)2.359131, (float)2.723145,\r
-(float)1.785156, (float)1.993164, (float)2.399780, (float)2.832520,\r
-(float)1.695313, (float)2.022949, (float)2.522583, (float)2.745117,\r
-(float)1.584106, (float)1.965576, (float)2.299927, (float)2.715576,\r
-(float)1.894897, (float)2.249878, (float)2.655884, (float)2.897705,\r
-(float)1.720581, (float)1.995728, (float)2.299438, (float)2.557007,\r
-(float)1.619385, (float)2.173950, (float)2.574219, (float)2.787964,\r
-(float)1.883179, (float)2.220459, (float)2.474365, (float)2.825073,\r
-(float)1.447632, (float)2.045044, (float)2.555542, (float)2.744873,\r
-(float)1.502686, (float)2.156616, (float)2.653320, (float)2.846558,\r
-(float)1.711548, (float)1.944092, (float)2.282959, (float)2.685791,\r
-(float)1.499756, (float)1.867554, (float)2.341064, (float)2.578857,\r
-(float)1.916870, (float)2.135132, (float)2.568237, (float)2.826050,\r
-(float)1.498047, (float)1.711182, (float)2.223267, (float)2.755127,\r
-\r
-\r
-(float)1.808716, (float)1.997559, (float)2.256470, (float)2.758545,\r
-(float)2.088501, (float)2.402710, (float)2.667358, (float)2.890259,\r
-(float)1.545044, (float)1.819214, (float)2.324097, (float)2.692993,\r
-(float)1.796021, (float)2.012573, (float)2.505737, (float)2.784912,\r
-(float)1.786499, (float)2.041748, (float)2.290405, (float)2.650757,\r
-(float)1.938232, (float)2.264404, (float)2.529053, (float)2.796143\r
-};\r
-\r
-\r
diff --git a/libs/codecs/ilbc/constants.h b/libs/codecs/ilbc/constants.h
deleted file mode 100644 (file)
index 155ee97..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    constants.h\r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_CONSTANTS_H\r
-#define __iLBC_CONSTANTS_H\r
-\r
-#include "iLBC_define.h"\r
-\r
-\r
-/* ULP bit allocation */\r
-\r
-extern const iLBC_ULP_Inst_t ULP_20msTbl;\r
-extern const iLBC_ULP_Inst_t ULP_30msTbl;\r
-\r
-/* high pass filters */\r
-\r
-extern float hpi_zero_coefsTbl[];\r
-extern float hpi_pole_coefsTbl[];\r
-extern float hpo_zero_coefsTbl[];\r
-extern float hpo_pole_coefsTbl[];  \r
-\r
-/* low pass filters */\r
-extern float lpFilt_coefsTbl[];\r
-\r
-/* LPC analysis and quantization */\r
-\r
-extern float lpc_winTbl[];\r
-extern float lpc_asymwinTbl[];\r
-extern float lpc_lagwinTbl[];\r
-extern float lsfCbTbl[];\r
-extern float lsfmeanTbl[];\r
-extern int   dim_lsfCbTbl[];\r
-extern int   size_lsfCbTbl[];\r
-extern float lsf_weightTbl_30ms[]; \r
-extern float lsf_weightTbl_20ms[];\r
-\r
-/* state quantization tables */\r
-\r
-extern float state_sq3Tbl[];\r
-extern float state_frgqTbl[];\r
-\r
-/* gain quantization tables */\r
-\r
-extern float gain_sq3Tbl[];\r
-extern float gain_sq4Tbl[];\r
-extern float gain_sq5Tbl[];\r
-\r
-/* adaptive codebook definitions */\r
-\r
-extern int search_rangeTbl[5][CB_NSTAGES];\r
-extern int memLfTbl[];\r
-extern int stMemLTbl;\r
-extern float cbfiltersTbl[CB_FILTERLEN];\r
-\r
-\r
-\r
-/* enhancer definitions */\r
-\r
-extern float polyphaserTbl[];\r
-extern float enh_plocsTbl[];\r
-\r
-#endif\r
-\r
diff --git a/libs/codecs/ilbc/createCB.c b/libs/codecs/ilbc/createCB.c
deleted file mode 100644 (file)
index cd79fa2..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-\r
-\r
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    createCB.c\r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include "iLBC_define.h"\r
-#include "createCB.h"\r
-#include "constants.h"\r
-#include <string.h>\r
-#include <math.h>\r
-\r
-/*----------------------------------------------------------------*\r
- *  Construct an additional codebook vector by filtering the\r
- *  initial codebook buffer. This vector is then used to expand\r
- *  the codebook with an additional section.\r
- *---------------------------------------------------------------*/\r
-\r
-void filteredCBvecs(\r
-    float *cbvectors,   /* (o) Codebook vectors for the \r
-                               higher section */\r
-    float *mem,         /* (i) Buffer to create codebook \r
-                               vector from */\r
-    int lMem        /* (i) Length of buffer */\r
-){\r
-    int j, k;\r
-    float *pp, *pp1;\r
-    float tempbuff2[CB_MEML+CB_FILTERLEN];\r
-    float *pos;\r
-\r
-    memset(tempbuff2, 0, (CB_HALFFILTERLEN-1)*sizeof(float));\r
-    memcpy(&tempbuff2[CB_HALFFILTERLEN-1], mem, lMem*sizeof(float));\r
-    memset(&tempbuff2[lMem+CB_HALFFILTERLEN-1], 0, \r
-        (CB_HALFFILTERLEN+1)*sizeof(float));\r
-\r
-    /* Create codebook vector for higher section by filtering */\r
-\r
-    /* do filtering */\r
-    pos=cbvectors;\r
-    memset(pos, 0, lMem*sizeof(float));\r
-    for (k=0; k<lMem; k++) {\r
-        pp=&tempbuff2[k];\r
-        pp1=&cbfiltersTbl[CB_FILTERLEN-1];\r
-        for (j=0;j<CB_FILTERLEN;j++) {\r
-            (*pos)+=(*pp++)*(*pp1--);\r
-        }\r
-        pos++;\r
-    }\r
-}\r
-\r
-\r
-\r
-/*----------------------------------------------------------------*\r
- *  Search the augmented part of the codebook to find the best\r
- *  measure.\r
- *----------------------------------------------------------------*/\r
-\r
-void searchAugmentedCB(\r
-    int low,        /* (i) Start index for the search */\r
-    int high,           /* (i) End index for the search */\r
-    int stage,          /* (i) Current stage */\r
-    int startIndex,     /* (i) Codebook index for the first \r
-                               aug vector */\r
-    float *target,      /* (i) Target vector for encoding */\r
-    float *buffer,      /* (i) Pointer to the end of the buffer for\r
-                               augmented codebook construction */\r
-    float *max_measure, /* (i/o) Currently maximum measure */\r
-    int *best_index,/* (o) Currently the best index */\r
-    float *gain,    /* (o) Currently the best gain */\r
-    float *energy,      /* (o) Energy of augmented codebook \r
-                               vectors */\r
-    float *invenergy/* (o) Inv energy of augmented codebook \r
-                               vectors */\r
-) {\r
-    int icount, ilow, j, tmpIndex;\r
-    float *pp, *ppo, *ppi, *ppe, crossDot, alfa; \r
-    float weighted, measure, nrjRecursive;\r
-    float ftmp;\r
-\r
-    /* Compute the energy for the first (low-5) \r
-       noninterpolated samples */\r
-    nrjRecursive = (float) 0.0;\r
-    pp = buffer - low + 1;\r
-    for (j=0; j<(low-5); j++) {\r
-        nrjRecursive += ( (*pp)*(*pp) );\r
-        pp++;\r
-    }\r
-    ppe = buffer - low;\r
-\r
-\r
-    for (icount=low; icount<=high; icount++) {\r
-\r
-        /* Index of the codebook vector used for retrieving \r
-           energy values */\r
-        tmpIndex = startIndex+icount-20;\r
-\r
-        ilow = icount-4;\r
-            \r
-        /* Update the energy recursively to save complexity */\r
-        nrjRecursive = nrjRecursive + (*ppe)*(*ppe);\r
-        ppe--;\r
-        energy[tmpIndex] = nrjRecursive;\r
-\r
-        /* Compute cross dot product for the first (low-5) \r
-           samples */\r
-        crossDot = (float) 0.0;\r
-\r
-\r
-        pp = buffer-icount;\r
-        for (j=0; j<ilow; j++) {\r
-            crossDot += target[j]*(*pp++);\r
-        }\r
-\r
-        /* interpolation */\r
-        alfa = (float) 0.2;\r
-        ppo = buffer-4;\r
-        ppi = buffer-icount-4;\r
-        for (j=ilow; j<icount; j++) {\r
-            weighted = ((float)1.0-alfa)*(*ppo)+alfa*(*ppi);\r
-            ppo++;\r
-            ppi++;\r
-            energy[tmpIndex] += weighted*weighted;\r
-            crossDot += target[j]*weighted;\r
-            alfa += (float)0.2;\r
-        }\r
-\r
-        /* Compute energy and cross dot product for the \r
-           remaining samples */\r
-        pp = buffer - icount;\r
-        for (j=icount; j<SUBL; j++) {\r
-            energy[tmpIndex] += (*pp)*(*pp);\r
-            crossDot += target[j]*(*pp++);\r
-        }\r
-        \r
-        if (energy[tmpIndex]>0.0) {\r
-            invenergy[tmpIndex]=(float)1.0/(energy[tmpIndex]+EPS);\r
-        } else {\r
-            invenergy[tmpIndex] = (float) 0.0;\r
-        }\r
-        \r
-        if (stage==0) {\r
-            measure = (float)-10000000.0;\r
-            \r
-            if (crossDot > 0.0) {\r
-                measure = crossDot*crossDot*invenergy[tmpIndex];\r
-            }\r
-        }\r
-        else {\r
-            measure = crossDot*crossDot*invenergy[tmpIndex];\r
-        }\r
-    \r
-        /* check if measure is better */\r
-        ftmp = crossDot*invenergy[tmpIndex];\r
-        \r
-        if ((measure>*max_measure) && (fabs(ftmp)<CB_MAXGAIN)) {\r
-            *best_index = tmpIndex;\r
-            *max_measure = measure;\r
-            *gain = ftmp;\r
-        }\r
-    }\r
-}\r
-\r
-\r
-\r
-\r
-/*----------------------------------------------------------------*\r
- *  Recreate a specific codebook vector from the augmented part.\r
- *\r
- *----------------------------------------------------------------*/\r
-\r
-void createAugmentedVec(\r
-    int index,      /* (i) Index for the augmented vector \r
-                           to be created */\r
-    float *buffer,  /* (i) Pointer to the end of the buffer for\r
-                           augmented codebook construction */\r
-    float *cbVec/* (o) The construced codebook vector */\r
-) {\r
-    int ilow, j;\r
-    float *pp, *ppo, *ppi, alfa, alfa1, weighted;\r
-\r
-    ilow = index-5;\r
-            \r
-    /* copy the first noninterpolated part */\r
-\r
-    pp = buffer-index;\r
-    memcpy(cbVec,pp,sizeof(float)*index);\r
-\r
-    /* interpolation */\r
-\r
-    alfa1 = (float)0.2;\r
-    alfa = 0.0;\r
-    ppo = buffer-5;\r
-    ppi = buffer-index-5;\r
-    for (j=ilow; j<index; j++) {\r
-        weighted = ((float)1.0-alfa)*(*ppo)+alfa*(*ppi);\r
-        ppo++;\r
-        ppi++;\r
-        cbVec[j] = weighted;\r
-        alfa += alfa1;\r
-    }\r
-\r
-    /* copy the second noninterpolated part */\r
-\r
-    pp = buffer - index;\r
-    memcpy(cbVec+index,pp,sizeof(float)*(SUBL-index));\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/createCB.h b/libs/codecs/ilbc/createCB.h
deleted file mode 100644 (file)
index b099a83..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-\r
-/******************************************************************\r
-\r
-\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    createCB.h\r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_CREATECB_H\r
-#define __iLBC_CREATECB_H\r
-\r
-void filteredCBvecs(\r
-    float *cbvectors,   /* (o) Codebook vector for the \r
-                               higher section */\r
-    float *mem,         /* (i) Buffer to create codebook \r
-                               vectors from */\r
-    int lMem        /* (i) Length of buffer */\r
-);\r
-\r
-void searchAugmentedCB(\r
-    int low,        /* (i) Start index for the search */\r
-    int high,           /* (i) End index for the search */\r
-    int stage,          /* (i) Current stage */\r
-    int startIndex,     /* (i) CB index for the first \r
-                               augmented vector */\r
-    float *target,      /* (i) Target vector for encoding */\r
-    float *buffer,      /* (i) Pointer to the end of the \r
-                               buffer for augmented codebook \r
-                               construction */\r
-    float *max_measure, /* (i/o) Currently maximum measure */\r
-    int *best_index,/* (o) Currently the best index */\r
-    float *gain,    /* (o) Currently the best gain */\r
-    float *energy,      /* (o) Energy of augmented \r
-                               codebook vectors */\r
-    float *invenergy/* (o) Inv energy of aug codebook \r
-                               vectors */\r
-);\r
-\r
-void createAugmentedVec(\r
-    int index,          /* (i) Index for the aug vector \r
-                               to be created */\r
-    float *buffer,      /* (i) Pointer to the end of the \r
-                               buffer for augmented codebook \r
-                               construction */\r
-    float *cbVec    /* (o) The construced codebook vector */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/doCPLC.c b/libs/codecs/ilbc/doCPLC.c
deleted file mode 100644 (file)
index b7d3b4e..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    doCPLC.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <math.h>\r
-#include <string.h>\r
-#include <stdio.h>\r
-\r
-#include "iLBC_define.h"\r
-#include "doCPLC.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  Compute cross correlation and pitch gain for pitch prediction\r
- *  of last subframe at given lag.\r
- *---------------------------------------------------------------*/\r
-\r
-static void compCorr(\r
-    float *cc,      /* (o) cross correlation coefficient */\r
-    float *gc,      /* (o) gain */\r
-    float *pm,\r
-    float *buffer,  /* (i) signal buffer */\r
-    int lag,    /* (i) pitch lag */\r
-    int bLen,       /* (i) length of buffer */\r
-    int sRange      /* (i) correlation search length */\r
-){\r
-\r
-\r
-    int i;\r
-    float ftmp1, ftmp2, ftmp3;\r
-\r
-    /* Guard against getting outside buffer */\r
-    if ((bLen-sRange-lag)<0) {\r
-        sRange=bLen-lag;\r
-    }\r
-\r
-    ftmp1 = 0.0;\r
-    ftmp2 = 0.0;\r
-    ftmp3 = 0.0;\r
-    for (i=0; i<sRange; i++) {\r
-        ftmp1 += buffer[bLen-sRange+i] *\r
-            buffer[bLen-sRange+i-lag];\r
-        ftmp2 += buffer[bLen-sRange+i-lag] * \r
-                buffer[bLen-sRange+i-lag];\r
-        ftmp3 += buffer[bLen-sRange+i] * \r
-                buffer[bLen-sRange+i];\r
-    }\r
-\r
-    if (ftmp2 > 0.0) {\r
-        *cc = ftmp1*ftmp1/ftmp2;\r
-        *gc = (float)fabs(ftmp1/ftmp2);\r
-        *pm=(float)fabs(ftmp1)/\r
-            ((float)sqrt(ftmp2)*(float)sqrt(ftmp3));\r
-    }\r
-    else {\r
-        *cc = 0.0;\r
-        *gc = 0.0;\r
-        *pm=0.0;\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  Packet loss concealment routine. Conceals a residual signal\r
- *  and LP parameters. If no packet loss, update state.\r
- *---------------------------------------------------------------*/\r
-\r
-void doThePLC(\r
-    float *PLCresidual, /* (o) concealed residual */ \r
-    float *PLClpc,      /* (o) concealed LP parameters */  \r
-    int PLI,        /* (i) packet loss indicator \r
-                               0 - no PL, 1 = PL */ \r
-    float *decresidual, /* (i) decoded residual */\r
-    float *lpc,         /* (i) decoded LPC (only used for no PL) */\r
-    int inlag,          /* (i) pitch lag */\r
-    iLBC_Dec_Inst_t *iLBCdec_inst \r
-                        /* (i/o) decoder instance */\r
-){\r
-    int lag=20, randlag;\r
-    float gain, maxcc;\r
-    float use_gain;\r
-    float gain_comp, maxcc_comp, per, max_per;\r
-    int i, pick, use_lag;\r
-\r
-\r
-    float ftmp, randvec[BLOCKL_MAX], pitchfact, energy;\r
-            \r
-    /* Packet Loss */\r
-\r
-    if (PLI == 1) {\r
-        \r
-        iLBCdec_inst->consPLICount += 1;\r
-        \r
-        /* if previous frame not lost, \r
-           determine pitch pred. gain */\r
-        \r
-        if (iLBCdec_inst->prevPLI != 1) {\r
-\r
-            /* Search around the previous lag to find the \r
-               best pitch period */\r
-            \r
-            lag=inlag-3;\r
-            compCorr(&maxcc, &gain, &max_per, \r
-                iLBCdec_inst->prevResidual,\r
-                lag, iLBCdec_inst->blockl, 60);\r
-            for (i=inlag-2;i<=inlag+3;i++) {\r
-                compCorr(&maxcc_comp, &gain_comp, &per,\r
-                    iLBCdec_inst->prevResidual,\r
-                    i, iLBCdec_inst->blockl, 60);\r
-                \r
-                if (maxcc_comp>maxcc) {\r
-                    maxcc=maxcc_comp;\r
-                    gain=gain_comp;\r
-                    lag=i;\r
-                    max_per=per;\r
-                }\r
-            }\r
-            \r
-        }\r
-\r
-        /* previous frame lost, use recorded lag and periodicity */\r
-\r
-        else {\r
-            lag=iLBCdec_inst->prevLag;\r
-            max_per=iLBCdec_inst->per;\r
-        }\r
-        \r
-        /* downscaling */\r
-\r
-        use_gain=1.0;\r
-        if (iLBCdec_inst->consPLICount*iLBCdec_inst->blockl>320)\r
-            use_gain=(float)0.9;\r
-        else if (iLBCdec_inst->consPLICount*\r
-                        iLBCdec_inst->blockl>2*320)\r
-            use_gain=(float)0.7;\r
-        else if (iLBCdec_inst->consPLICount*\r
-                        iLBCdec_inst->blockl>3*320)\r
-            use_gain=(float)0.5;\r
-        else if (iLBCdec_inst->consPLICount*\r
-\r
-\r
-                        iLBCdec_inst->blockl>4*320)\r
-            use_gain=(float)0.0;\r
-\r
-        /* mix noise and pitch repeatition */\r
-        ftmp=(float)sqrt(max_per);\r
-        if (ftmp>(float)0.7)\r
-            pitchfact=(float)1.0;\r
-        else if (ftmp>(float)0.4)\r
-            pitchfact=(ftmp-(float)0.4)/((float)0.7-(float)0.4);\r
-        else\r
-            pitchfact=0.0;\r
-\r
-\r
-        /* avoid repetition of same pitch cycle */\r
-        use_lag=lag;\r
-        if (lag<80) {\r
-            use_lag=2*lag;\r
-        }\r
-\r
-        /* compute concealed residual */\r
-\r
-        energy = 0.0;\r
-        for (i=0; i<iLBCdec_inst->blockl; i++) {\r
-\r
-            /* noise component */\r
-\r
-            iLBCdec_inst->seed=(iLBCdec_inst->seed*69069L+1) & \r
-                (0x80000000L-1);\r
-            randlag = 50 + ((signed long) iLBCdec_inst->seed)%70;\r
-            pick = i - randlag;\r
-            \r
-            if (pick < 0) {\r
-                randvec[i] = \r
-                    iLBCdec_inst->prevResidual[\r
-                                iLBCdec_inst->blockl+pick];\r
-            } else {\r
-                randvec[i] =  randvec[pick];\r
-            }\r
-\r
-            /* pitch repeatition component */\r
-            pick = i - use_lag;\r
-            \r
-            if (pick < 0) {\r
-                PLCresidual[i] =  \r
-                    iLBCdec_inst->prevResidual[\r
-                                iLBCdec_inst->blockl+pick];\r
-            } else {\r
-                PLCresidual[i] = PLCresidual[pick];\r
-            }\r
-\r
-            /* mix random and periodicity component */\r
-\r
-            if (i<80)\r
-                PLCresidual[i] = use_gain*(pitchfact * \r
-\r
-\r
-                            PLCresidual[i] +\r
-                            ((float)1.0 - pitchfact) * randvec[i]);\r
-            else if (i<160)\r
-                PLCresidual[i] = (float)0.95*use_gain*(pitchfact * \r
-                            PLCresidual[i] +\r
-                            ((float)1.0 - pitchfact) * randvec[i]);\r
-            else\r
-                PLCresidual[i] = (float)0.9*use_gain*(pitchfact * \r
-                            PLCresidual[i] +\r
-                            ((float)1.0 - pitchfact) * randvec[i]);\r
-\r
-            energy += PLCresidual[i] * PLCresidual[i];\r
-        }\r
-        \r
-        /* less than 30 dB, use only noise */\r
-        \r
-        if (sqrt(energy/(float)iLBCdec_inst->blockl) < 30.0) { \r
-            gain=0.0;\r
-            for (i=0; i<iLBCdec_inst->blockl; i++) {\r
-                PLCresidual[i] = randvec[i];\r
-            }\r
-        }\r
-\r
-        /* use old LPC */\r
-\r
-        memcpy(PLClpc,iLBCdec_inst->prevLpc,\r
-            (LPC_FILTERORDER+1)*sizeof(float));\r
-        \r
-    }\r
-\r
-    /* no packet loss, copy input */\r
-\r
-    else {\r
-        memcpy(PLCresidual, decresidual, \r
-            iLBCdec_inst->blockl*sizeof(float));\r
-        memcpy(PLClpc, lpc, (LPC_FILTERORDER+1)*sizeof(float));\r
-        iLBCdec_inst->consPLICount = 0;\r
-    }\r
-    \r
-    /* update state */\r
-\r
-    if (PLI) {\r
-        iLBCdec_inst->prevLag = lag;\r
-        iLBCdec_inst->per=max_per;\r
-    }\r
-\r
-    iLBCdec_inst->prevPLI = PLI;\r
-    memcpy(iLBCdec_inst->prevLpc, PLClpc, \r
-        (LPC_FILTERORDER+1)*sizeof(float));\r
-    memcpy(iLBCdec_inst->prevResidual, PLCresidual,\r
-        iLBCdec_inst->blockl*sizeof(float));\r
-}\r
-\r
-\r
-\r
-\r
diff --git a/libs/codecs/ilbc/doCPLC.h b/libs/codecs/ilbc/doCPLC.h
deleted file mode 100644 (file)
index 7783674..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    doCPLC.h\r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_DOLPC_H\r
-#define __iLBC_DOLPC_H\r
-\r
-void doThePLC(\r
-    float *PLCresidual, /* (o) concealed residual */ \r
-    float *PLClpc,      /* (o) concealed LP parameters */  \r
-    int PLI,        /* (i) packet loss indicator \r
-                               0 - no PL, 1 = PL */ \r
-    float *decresidual, /* (i) decoded residual */\r
-    float *lpc,         /* (i) decoded LPC (only used for no PL) */\r
-    int inlag,          /* (i) pitch lag */\r
-    iLBC_Dec_Inst_t *iLBCdec_inst \r
-                        /* (i/o) decoder instance */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/enhancer.c b/libs/codecs/ilbc/enhancer.c
deleted file mode 100644 (file)
index 4358113..0000000
+++ /dev/null
@@ -1,665 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    enhancer.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <math.h>\r
-#include <string.h>\r
-#include "iLBC_define.h"\r
-#include "enhancer.h"\r
-#include "constants.h"\r
-#include "filter.h"\r
-\r
-/*----------------------------------------------------------------*\r
-\r
-\r
- * Find index in array such that the array element with said\r
- * index is the element of said array closest to "value" \r
- * according to the squared-error criterion\r
- *---------------------------------------------------------------*/\r
-\r
-static void NearestNeighbor(\r
-    int   *index,   /* (o) index of array element closest \r
-                           to value */\r
-    float *array,   /* (i) data array */\r
-    float value,/* (i) value */\r
-    int arlength/* (i) dimension of data array */\r
-){\r
-    int i;\r
-    float bestcrit,crit;\r
-\r
-    crit=array[0]-value;\r
-    bestcrit=crit*crit;\r
-    *index=0;\r
-    for (i=1; i<arlength; i++) {\r
-        crit=array[i]-value;\r
-        crit=crit*crit;\r
-        \r
-        if (crit<bestcrit) {\r
-            bestcrit=crit;\r
-            *index=i;\r
-        }\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- * compute cross correlation between sequences\r
- *---------------------------------------------------------------*/\r
-\r
-static void mycorr1( \r
-    float* corr,    /* (o) correlation of seq1 and seq2 */\r
-    float* seq1,    /* (i) first sequence */\r
-    int dim1,           /* (i) dimension first seq1 */\r
-    const float *seq2,  /* (i) second sequence */\r
-    int dim2        /* (i) dimension seq2 */\r
-){\r
-    int i,j;\r
-\r
-    for (i=0; i<=dim1-dim2; i++) {\r
-        corr[i]=0.0;\r
-        for (j=0; j<dim2; j++) {\r
-            corr[i] += seq1[i+j] * seq2[j];\r
-        }\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- * upsample finite array assuming zeros outside bounds\r
- *---------------------------------------------------------------*/\r
-\r
-\r
-\r
-static void enh_upsample( \r
-    float* useq1,   /* (o) upsampled output sequence */\r
-    float* seq1,/* (i) unupsampled sequence */\r
-    int dim1,       /* (i) dimension seq1 */\r
-    int hfl         /* (i) polyphase filter length=2*hfl+1 */\r
-){\r
-    float *pu,*ps;\r
-    int i,j,k,q,filterlength,hfl2;\r
-    const float *polyp[ENH_UPS0]; /* pointers to \r
-                                     polyphase columns */\r
-    const float *pp;\r
-\r
-    /* define pointers for filter */\r
-\r
-    filterlength=2*hfl+1;\r
-    \r
-    if ( filterlength > dim1 ) {\r
-        hfl2=(int) (dim1/2);\r
-        for (j=0; j<ENH_UPS0; j++) {\r
-            polyp[j]=polyphaserTbl+j*filterlength+hfl-hfl2;\r
-        }\r
-        hfl=hfl2;\r
-        filterlength=2*hfl+1;\r
-    }\r
-    else {\r
-        for (j=0; j<ENH_UPS0; j++) {\r
-            polyp[j]=polyphaserTbl+j*filterlength;\r
-        }\r
-    }\r
-\r
-    /* filtering: filter overhangs left side of sequence */\r
-\r
-    pu=useq1;\r
-    for (i=hfl; i<filterlength; i++) { \r
-        for (j=0; j<ENH_UPS0; j++) {\r
-            *pu=0.0;\r
-            pp = polyp[j];\r
-            ps = seq1+i;\r
-            for (k=0; k<=i; k++) {\r
-                *pu += *ps-- * *pp++;\r
-            }\r
-            pu++;\r
-        }\r
-    }\r
-\r
-    /* filtering: simple convolution=inner products */\r
-\r
-    for (i=filterlength; i<dim1; i++) {\r
-        for (j=0;j<ENH_UPS0; j++){\r
-            *pu=0.0;\r
-            pp = polyp[j];\r
-            ps = seq1+i;\r
-            for (k=0; k<filterlength; k++) {\r
-                *pu += *ps-- * *pp++;\r
-\r
-\r
-            }\r
-            pu++;\r
-        }\r
-    }\r
-\r
-    /* filtering: filter overhangs right side of sequence */\r
-\r
-    for (q=1; q<=hfl; q++) { \r
-        for (j=0; j<ENH_UPS0; j++) {\r
-            *pu=0.0;\r
-            pp = polyp[j]+q;\r
-            ps = seq1+dim1-1;\r
-            for (k=0; k<filterlength-q; k++) {\r
-                *pu += *ps-- * *pp++;\r
-            }\r
-            pu++;\r
-        }\r
-    }\r
-}\r
-\r
-\r
-/*----------------------------------------------------------------*\r
- * find segment starting near idata+estSegPos that has highest \r
- * correlation with idata+centerStartPos through \r
- * idata+centerStartPos+ENH_BLOCKL-1 segment is found at a \r
- * resolution of ENH_UPSO times the original of the original \r
- * sampling rate\r
- *---------------------------------------------------------------*/\r
-\r
-static void refiner(\r
-    float *seg,         /* (o) segment array */\r
-    float *updStartPos, /* (o) updated start point */\r
-    float* idata,       /* (i) original data buffer */\r
-    int idatal,         /* (i) dimension of idata */\r
-    int centerStartPos, /* (i) beginning center segment */\r
-    float estSegPos,/* (i) estimated beginning other segment */\r
-    float period    /* (i) estimated pitch period */\r
-){\r
-    int estSegPosRounded,searchSegStartPos,searchSegEndPos,corrdim;\r
-    int tloc,tloc2,i,st,en,fraction;\r
-    float vect[ENH_VECTL],corrVec[ENH_CORRDIM],maxv;\r
-    float corrVecUps[ENH_CORRDIM*ENH_UPS0];\r
-\r
-    /* defining array bounds */\r
-    \r
-    estSegPosRounded=(int)(estSegPos - 0.5);\r
-\r
-    searchSegStartPos=estSegPosRounded-ENH_SLOP;\r
-    \r
-    if (searchSegStartPos<0) { \r
-        searchSegStartPos=0;\r
-    }\r
-    searchSegEndPos=estSegPosRounded+ENH_SLOP;\r
-    \r
-\r
-\r
-    if (searchSegEndPos+ENH_BLOCKL >= idatal) { \r
-        searchSegEndPos=idatal-ENH_BLOCKL-1;\r
-    }\r
-    corrdim=searchSegEndPos-searchSegStartPos+1;\r
-    \r
-    /* compute upsampled correlation (corr33) and find \r
-       location of max */\r
-\r
-    mycorr1(corrVec,idata+searchSegStartPos,\r
-        corrdim+ENH_BLOCKL-1,idata+centerStartPos,ENH_BLOCKL);\r
-    enh_upsample(corrVecUps,corrVec,corrdim,ENH_FL0);\r
-    tloc=0; maxv=corrVecUps[0];\r
-    for (i=1; i<ENH_UPS0*corrdim; i++) {\r
-        \r
-        if (corrVecUps[i]>maxv) {\r
-            tloc=i;\r
-            maxv=corrVecUps[i];\r
-        }\r
-    }\r
-    \r
-    /* make vector can be upsampled without ever running outside \r
-       bounds */\r
-    \r
-    *updStartPos= (float)searchSegStartPos + \r
-        (float)tloc/(float)ENH_UPS0+(float)1.0;\r
-    tloc2=(int)(tloc/ENH_UPS0);\r
-    \r
-    if (tloc>tloc2*ENH_UPS0) {\r
-        tloc2++;\r
-    }\r
-    st=searchSegStartPos+tloc2-ENH_FL0;\r
-    \r
-    if (st<0) {\r
-        memset(vect,0,-st*sizeof(float));\r
-        memcpy(&vect[-st],idata, (ENH_VECTL+st)*sizeof(float));\r
-    }\r
-    else {\r
-        en=st+ENH_VECTL;\r
-        \r
-        if (en>idatal) {\r
-            memcpy(vect, &idata[st], \r
-                (ENH_VECTL-(en-idatal))*sizeof(float));\r
-            memset(&vect[ENH_VECTL-(en-idatal)], 0, \r
-                (en-idatal)*sizeof(float));\r
-        }\r
-        else {\r
-            memcpy(vect, &idata[st], ENH_VECTL*sizeof(float));\r
-        }\r
-    }\r
-    fraction=tloc2*ENH_UPS0-tloc;\r
-    \r
-    /* compute the segment (this is actually a convolution) */\r
-\r
-    mycorr1(seg,vect,ENH_VECTL,polyphaserTbl+(2*ENH_FL0+1)*fraction,\r
-\r
-\r
-        2*ENH_FL0+1);\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- * find the smoothed output data\r
- *---------------------------------------------------------------*/\r
-\r
-static void smath(\r
-    float *odata,   /* (o) smoothed output */\r
-    float *sseq,/* (i) said second sequence of waveforms */\r
-    int hl,         /* (i) 2*hl+1 is sseq dimension */\r
-    float alpha0/* (i) max smoothing energy fraction */\r
-){\r
-    int i,k;\r
-    float w00,w10,w11,A,B,C,*psseq,err,errs;\r
-    float surround[BLOCKL_MAX]; /* shape contributed by other than \r
-                                   current */\r
-    float wt[2*ENH_HL+1];       /* waveform weighting to get \r
-                                   surround shape */\r
-    float denom;\r
-    \r
-    /* create shape of contribution from all waveforms except the\r
-       current one */\r
-\r
-    for (i=1; i<=2*hl+1; i++) {\r
-        wt[i-1] = (float)0.5*(1 - (float)cos(2*PI*i/(2*hl+2))); \r
-    }\r
-    wt[hl]=0.0; /* for clarity, not used */\r
-    for (i=0; i<ENH_BLOCKL; i++) {\r
-        surround[i]=sseq[i]*wt[0];\r
-    }\r
-    for (k=1; k<hl; k++) {\r
-        psseq=sseq+k*ENH_BLOCKL;\r
-        for(i=0;i<ENH_BLOCKL; i++) {\r
-            surround[i]+=psseq[i]*wt[k];\r
-        }\r
-    }\r
-    for (k=hl+1; k<=2*hl; k++) {\r
-        psseq=sseq+k*ENH_BLOCKL;\r
-        for(i=0;i<ENH_BLOCKL; i++) {\r
-            surround[i]+=psseq[i]*wt[k];\r
-        }\r
-    }\r
-    \r
-    /* compute some inner products */\r
-\r
-    w00 = w10 = w11 = 0.0;\r
-    psseq=sseq+hl*ENH_BLOCKL; /* current block  */\r
-    for (i=0; i<ENH_BLOCKL;i++) {\r
-        w00+=psseq[i]*psseq[i];\r
-        w11+=surround[i]*surround[i];\r
-        w10+=surround[i]*psseq[i];\r
-    }\r
-    \r
-\r
-\r
-    if (fabs(w11) < 1.0) {\r
-        w11=1.0;\r
-    }\r
-    C = (float)sqrt( w00/w11);\r
-    \r
-    /* first try enhancement without power-constraint */\r
-\r
-    errs=0.0;\r
-    psseq=sseq+hl*ENH_BLOCKL;\r
-    for (i=0; i<ENH_BLOCKL; i++) {\r
-        odata[i]=C*surround[i];\r
-        err=psseq[i]-odata[i];\r
-        errs+=err*err;\r
-    }\r
-    \r
-    /* if constraint violated by first try, add constraint */ \r
-    \r
-    if (errs > alpha0 * w00) {\r
-        if ( w00 < 1) {\r
-            w00=1;\r
-        }\r
-        denom = (w11*w00-w10*w10)/(w00*w00);\r
-        \r
-        if (denom > 0.0001) { /* eliminates numerical problems \r
-                                 for if smooth */\r
-            A = (float)sqrt( (alpha0- alpha0*alpha0/4)/denom);\r
-            B = -alpha0/2 - A * w10/w00;\r
-            B = B+1;\r
-        }\r
-        else { /* essentially no difference between cycles; \r
-                  smoothing not needed */\r
-            A= 0.0;\r
-            B= 1.0;\r
-        }\r
-        \r
-        /* create smoothed sequence */\r
-\r
-        psseq=sseq+hl*ENH_BLOCKL;\r
-        for (i=0; i<ENH_BLOCKL; i++) {\r
-            odata[i]=A*surround[i]+B*psseq[i];\r
-        }\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- * get the pitch-synchronous sample sequence\r
- *---------------------------------------------------------------*/\r
-\r
-static void getsseq(\r
-    float *sseq,    /* (o) the pitch-synchronous sequence */\r
-    float *idata,       /* (i) original data */\r
-    int idatal,         /* (i) dimension of data */\r
-    int centerStartPos, /* (i) where current block starts */\r
-    float *period,      /* (i) rough-pitch-period array */\r
-\r
-\r
-    float *plocs,       /* (i) where periods of period array \r
-                               are taken */\r
-    int periodl,    /* (i) dimension period array */\r
-    int hl              /* (i) 2*hl+1 is the number of sequences */\r
-){\r
-    int i,centerEndPos,q;\r
-    float blockStartPos[2*ENH_HL+1];\r
-    int lagBlock[2*ENH_HL+1];\r
-    float plocs2[ENH_PLOCSL]; \r
-    float *psseq;\r
-\r
-    centerEndPos=centerStartPos+ENH_BLOCKL-1;\r
-    \r
-    /* present */\r
-\r
-    NearestNeighbor(lagBlock+hl,plocs,\r
-        (float)0.5*(centerStartPos+centerEndPos),periodl);\r
-    \r
-    blockStartPos[hl]=(float)centerStartPos;\r
-    psseq=sseq+ENH_BLOCKL*hl;\r
-    memcpy(psseq, idata+centerStartPos, ENH_BLOCKL*sizeof(float));\r
-    \r
-    /* past */\r
-\r
-    for (q=hl-1; q>=0; q--) {\r
-        blockStartPos[q]=blockStartPos[q+1]-period[lagBlock[q+1]];\r
-        NearestNeighbor(lagBlock+q,plocs,\r
-            blockStartPos[q]+\r
-            ENH_BLOCKL_HALF-period[lagBlock[q+1]], periodl);\r
-                            \r
-        \r
-        if (blockStartPos[q]-ENH_OVERHANG>=0) {\r
-            refiner(sseq+q*ENH_BLOCKL, blockStartPos+q, idata,\r
-                idatal, centerStartPos, blockStartPos[q],\r
-                period[lagBlock[q+1]]);\r
-        } else {\r
-            psseq=sseq+q*ENH_BLOCKL;\r
-            memset(psseq, 0, ENH_BLOCKL*sizeof(float));\r
-        }\r
-    }\r
-    \r
-    /* future */\r
-\r
-    for (i=0; i<periodl; i++) {\r
-        plocs2[i]=plocs[i]-period[i];\r
-    }\r
-    for (q=hl+1; q<=2*hl; q++) { \r
-        NearestNeighbor(lagBlock+q,plocs2,\r
-            blockStartPos[q-1]+ENH_BLOCKL_HALF,periodl);\r
-\r
-        blockStartPos[q]=blockStartPos[q-1]+period[lagBlock[q]];\r
-        if (blockStartPos[q]+ENH_BLOCKL+ENH_OVERHANG<idatal) {\r
-            refiner(sseq+ENH_BLOCKL*q, blockStartPos+q, idata,\r
-                idatal, centerStartPos, blockStartPos[q],\r
-\r
-\r
-                period[lagBlock[q]]);\r
-        }\r
-        else {\r
-            psseq=sseq+q*ENH_BLOCKL;\r
-            memset(psseq, 0, ENH_BLOCKL*sizeof(float));\r
-        }\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- * perform enhancement on idata+centerStartPos through \r
- * idata+centerStartPos+ENH_BLOCKL-1\r
- *---------------------------------------------------------------*/\r
-\r
-static void enhancer(\r
-    float *odata,       /* (o) smoothed block, dimension blockl */\r
-    float *idata,       /* (i) data buffer used for enhancing */\r
-    int idatal,         /* (i) dimension idata */\r
-    int centerStartPos, /* (i) first sample current block \r
-                               within idata */\r
-    float alpha0,       /* (i) max correction-energy-fraction \r
-                              (in [0,1]) */\r
-    float *period,      /* (i) pitch period array */\r
-    float *plocs,       /* (i) locations where period array \r
-                               values valid */\r
-    int periodl         /* (i) dimension of period and plocs */\r
-){\r
-    float sseq[(2*ENH_HL+1)*ENH_BLOCKL];\r
-\r
-    /* get said second sequence of segments */\r
-\r
-    getsseq(sseq,idata,idatal,centerStartPos,period,\r
-        plocs,periodl,ENH_HL);\r
-\r
-    /* compute the smoothed output from said second sequence */\r
-\r
-    smath(odata,sseq,ENH_HL,alpha0);\r
-\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- * cross correlation\r
- *---------------------------------------------------------------*/\r
-\r
-float xCorrCoef( \r
-    float *target,      /* (i) first array */\r
-    float *regressor,   /* (i) second array */\r
-    int subl        /* (i) dimension arrays */\r
-){\r
-    int i;\r
-    float ftmp1, ftmp2;\r
-        \r
-    ftmp1 = 0.0;\r
-    ftmp2 = 0.0;\r
-\r
-\r
-    for (i=0; i<subl; i++) {\r
-        ftmp1 += target[i]*regressor[i];\r
-        ftmp2 += regressor[i]*regressor[i]; \r
-    }\r
-    \r
-    if (ftmp1 > 0.0) {\r
-        return (float)(ftmp1*ftmp1/ftmp2);\r
-    }\r
-    else {\r
-        return (float)0.0;\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- * interface for enhancer\r
- *---------------------------------------------------------------*/\r
-\r
-int enhancerInterface(\r
-    float *out,                     /* (o) enhanced signal */\r
-    float *in,                      /* (i) unenhanced signal */\r
-    iLBC_Dec_Inst_t *iLBCdec_inst   /* (i) buffers etc */\r
-){\r
-    float *enh_buf, *enh_period;\r
-    int iblock, isample;\r
-    int lag=0, ilag, i, ioffset;\r
-    float cc, maxcc;\r
-    float ftmp1, ftmp2;\r
-    float *inPtr, *enh_bufPtr1, *enh_bufPtr2;\r
-    float plc_pred[ENH_BLOCKL];\r
-\r
-    float lpState[6], downsampled[(ENH_NBLOCKS*ENH_BLOCKL+120)/2];\r
-    int inLen=ENH_NBLOCKS*ENH_BLOCKL+120;\r
-    int start, plc_blockl, inlag;\r
-\r
-    enh_buf=iLBCdec_inst->enh_buf;\r
-    enh_period=iLBCdec_inst->enh_period;\r
-    \r
-    memmove(enh_buf, &enh_buf[iLBCdec_inst->blockl], \r
-        (ENH_BUFL-iLBCdec_inst->blockl)*sizeof(float));\r
-                                                            \r
-    memcpy(&enh_buf[ENH_BUFL-iLBCdec_inst->blockl], in, \r
-        iLBCdec_inst->blockl*sizeof(float));\r
-\r
-    if (iLBCdec_inst->mode==30)\r
-        plc_blockl=ENH_BLOCKL;\r
-    else\r
-        plc_blockl=40;\r
-\r
-    /* when 20 ms frame, move processing one block */\r
-    ioffset=0;\r
-    if (iLBCdec_inst->mode==20) ioffset=1;\r
-\r
-    i=3-ioffset;\r
-    memmove(enh_period, &enh_period[i], \r
-\r
-\r
-        (ENH_NBLOCKS_TOT-i)*sizeof(float));\r
-\r
-    /* Set state information to the 6 samples right before \r
-       the samples to be downsampled. */\r
-\r
-    memcpy(lpState, \r
-        enh_buf+(ENH_NBLOCKS_EXTRA+ioffset)*ENH_BLOCKL-126, \r
-        6*sizeof(float));\r
-\r
-    /* Down sample a factor 2 to save computations */\r
-\r
-    DownSample(enh_buf+(ENH_NBLOCKS_EXTRA+ioffset)*ENH_BLOCKL-120,\r
-                lpFilt_coefsTbl, inLen-ioffset*ENH_BLOCKL,\r
-                lpState, downsampled);\r
-\r
-    /* Estimate the pitch in the down sampled domain. */\r
-    for (iblock = 0; iblock<ENH_NBLOCKS-ioffset; iblock++) {\r
-        \r
-        lag = 10;\r
-        maxcc = xCorrCoef(downsampled+60+iblock*\r
-            ENH_BLOCKL_HALF, downsampled+60+iblock*\r
-            ENH_BLOCKL_HALF-lag, ENH_BLOCKL_HALF);\r
-        for (ilag=11; ilag<60; ilag++) {\r
-            cc = xCorrCoef(downsampled+60+iblock*\r
-                ENH_BLOCKL_HALF, downsampled+60+iblock*\r
-                ENH_BLOCKL_HALF-ilag, ENH_BLOCKL_HALF);\r
-            \r
-            if (cc > maxcc) {\r
-                maxcc = cc;\r
-                lag = ilag;\r
-            }\r
-        }\r
-\r
-        /* Store the estimated lag in the non-downsampled domain */\r
-        enh_period[iblock+ENH_NBLOCKS_EXTRA+ioffset] = (float)lag*2;\r
-\r
-\r
-    }   \r
-\r
-\r
-    /* PLC was performed on the previous packet */\r
-    if (iLBCdec_inst->prev_enh_pl==1) {\r
-\r
-        inlag=(int)enh_period[ENH_NBLOCKS_EXTRA+ioffset];\r
-\r
-        lag = inlag-1;\r
-        maxcc = xCorrCoef(in, in+lag, plc_blockl);\r
-        for (ilag=inlag; ilag<=inlag+1; ilag++) {\r
-            cc = xCorrCoef(in, in+ilag, plc_blockl);\r
-            \r
-            if (cc > maxcc) {\r
-                maxcc = cc;\r
-                lag = ilag;\r
-            }\r
-        }\r
-\r
-\r
-\r
-        enh_period[ENH_NBLOCKS_EXTRA+ioffset-1]=(float)lag;\r
-\r
-        /* compute new concealed residual for the old lookahead,\r
-           mix the forward PLC with a backward PLC from \r
-           the new frame */\r
-        \r
-        inPtr=&in[lag-1];\r
-        \r
-        enh_bufPtr1=&plc_pred[plc_blockl-1];\r
-        \r
-        if (lag>plc_blockl) {\r
-            start=plc_blockl;\r
-        } else {\r
-            start=lag;\r
-        }\r
-\r
-        for (isample = start; isample>0; isample--) {\r
-            *enh_bufPtr1-- = *inPtr--;\r
-        }\r
-        \r
-        enh_bufPtr2=&enh_buf[ENH_BUFL-1-iLBCdec_inst->blockl];\r
-        for (isample = (plc_blockl-1-lag); isample>=0; isample--) \r
-{\r
-            *enh_bufPtr1-- = *enh_bufPtr2--;\r
-        }\r
-\r
-        /* limit energy change */\r
-        ftmp2=0.0;\r
-        ftmp1=0.0;\r
-        for (i=0;i<plc_blockl;i++) {\r
-            ftmp2+=enh_buf[ENH_BUFL-1-iLBCdec_inst->blockl-i]*\r
-                enh_buf[ENH_BUFL-1-iLBCdec_inst->blockl-i];\r
-            ftmp1+=plc_pred[i]*plc_pred[i];\r
-        }\r
-        ftmp1=(float)sqrt(ftmp1/(float)plc_blockl);\r
-        ftmp2=(float)sqrt(ftmp2/(float)plc_blockl);\r
-        if (ftmp1>(float)2.0*ftmp2 && ftmp1>0.0) {\r
-            for (i=0;i<plc_blockl-10;i++) {\r
-                plc_pred[i]*=(float)2.0*ftmp2/ftmp1;\r
-            }\r
-            for (i=plc_blockl-10;i<plc_blockl;i++) {\r
-                plc_pred[i]*=(float)(i-plc_blockl+10)*\r
-                    ((float)1.0-(float)2.0*ftmp2/ftmp1)/(float)(10)+\r
-                    (float)2.0*ftmp2/ftmp1;\r
-            }\r
-        }\r
-    \r
-        enh_bufPtr1=&enh_buf[ENH_BUFL-1-iLBCdec_inst->blockl];\r
-        for (i=0; i<plc_blockl; i++) {\r
-            ftmp1 = (float) (i+1) / (float) (plc_blockl+1);\r
-            *enh_bufPtr1 *= ftmp1;\r
-            *enh_bufPtr1 += ((float)1.0-ftmp1)*\r
-                                plc_pred[plc_blockl-1-i];\r
-            enh_bufPtr1--;\r
-        }\r
-\r
-\r
-    }\r
-\r
-    if (iLBCdec_inst->mode==20) {\r
-        /* Enhancer with 40 samples delay */\r
-        for (iblock = 0; iblock<2; iblock++) {\r
-            enhancer(out+iblock*ENH_BLOCKL, enh_buf, \r
-                ENH_BUFL, (5+iblock)*ENH_BLOCKL+40,\r
-                ENH_ALPHA0, enh_period, enh_plocsTbl, \r
-                    ENH_NBLOCKS_TOT);\r
-        }\r
-    } else if (iLBCdec_inst->mode==30) {\r
-        /* Enhancer with 80 samples delay */\r
-        for (iblock = 0; iblock<3; iblock++) {\r
-            enhancer(out+iblock*ENH_BLOCKL, enh_buf, \r
-                ENH_BUFL, (4+iblock)*ENH_BLOCKL,\r
-                ENH_ALPHA0, enh_period, enh_plocsTbl, \r
-                    ENH_NBLOCKS_TOT);\r
-        }\r
-    }\r
-\r
-    return (lag*2);\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/enhancer.h b/libs/codecs/ilbc/enhancer.h
deleted file mode 100644 (file)
index dab29ec..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    enhancer.h\r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __ENHANCER_H\r
-#define __ENHANCER_H\r
-\r
-#include "iLBC_define.h"\r
-\r
-float xCorrCoef( \r
-    float *target,      /* (i) first array */\r
-    float *regressor,   /* (i) second array */\r
-    int subl        /* (i) dimension arrays */\r
-);\r
-\r
-int enhancerInterface(\r
-    float *out,         /* (o) the enhanced recidual signal */\r
-    float *in,          /* (i) the recidual signal to enhance */\r
-    iLBC_Dec_Inst_t *iLBCdec_inst \r
-                        /* (i/o) the decoder state structure */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/filter.c b/libs/codecs/ilbc/filter.c
deleted file mode 100644 (file)
index 1215e31..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    filter.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-\r
-\r
-#include "iLBC_define.h"\r
-#include "filter.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  all-pole filter\r
- *---------------------------------------------------------------*/\r
-\r
-void AllPoleFilter(\r
-    float *InOut,   /* (i/o) on entrance InOut[-orderCoef] to \r
-                           InOut[-1] contain the state of the \r
-                           filter (delayed samples). InOut[0] to \r
-                           InOut[lengthInOut-1] contain the filter\r
-                           input, on en exit InOut[-orderCoef] to\r
-                           InOut[-1] is unchanged and InOut[0] to\r
-                           InOut[lengthInOut-1] contain filtered \r
-                           samples */\r
-    float *Coef,/* (i) filter coefficients, Coef[0] is assumed \r
-                           to be 1.0 */\r
-    int lengthInOut,/* (i) number of input/output samples */\r
-    int orderCoef   /* (i) number of filter coefficients */\r
-){  \r
-    int n,k;\r
-    \r
-    for(n=0;n<lengthInOut;n++){\r
-        for(k=1;k<=orderCoef;k++){\r
-            *InOut -= Coef[k]*InOut[-k];\r
-        }\r
-        InOut++;\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  all-zero filter                         \r
- *---------------------------------------------------------------*/\r
-\r
-void AllZeroFilter(\r
-    float *In,      /* (i) In[0] to In[lengthInOut-1] contain \r
-                           filter input samples */\r
-    float *Coef,/* (i) filter coefficients (Coef[0] is assumed \r
-                           to be 1.0) */\r
-    int lengthInOut,/* (i) number of input/output samples */\r
-    int orderCoef,  /* (i) number of filter coefficients */\r
-    float *Out      /* (i/o) on entrance Out[-orderCoef] to Out[-1]\r
-                           contain the filter state, on exit Out[0]\r
-                           to Out[lengthInOut-1] contain filtered\r
-                           samples */\r
-){  \r
-    int n,k;\r
-    \r
-    for(n=0;n<lengthInOut;n++){\r
-        *Out = Coef[0]*In[0];\r
-        for(k=1;k<=orderCoef;k++){\r
-            *Out += Coef[k]*In[-k];\r
-        }\r
-\r
-\r
-        Out++;\r
-        In++;\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  pole-zero filter\r
- *---------------------------------------------------------------*/\r
-\r
-void ZeroPoleFilter(\r
-    float *In,      /* (i) In[0] to In[lengthInOut-1] contain \r
-                           filter input samples In[-orderCoef] to \r
-                           In[-1] contain state of all-zero \r
-                           section */\r
-    float *ZeroCoef,/* (i) filter coefficients for all-zero \r
-                           section (ZeroCoef[0] is assumed to \r
-                           be 1.0) */\r
-    float *PoleCoef,/* (i) filter coefficients for all-pole section\r
-                           (ZeroCoef[0] is assumed to be 1.0) */\r
-    int lengthInOut,/* (i) number of input/output samples */\r
-    int orderCoef,  /* (i) number of filter coefficients */\r
-    float *Out      /* (i/o) on entrance Out[-orderCoef] to Out[-1]\r
-                           contain state of all-pole section. On \r
-                           exit Out[0] to Out[lengthInOut-1] \r
-                           contain filtered samples */\r
-){\r
-    AllZeroFilter(In,ZeroCoef,lengthInOut,orderCoef,Out);\r
-    AllPoleFilter(Out,PoleCoef,lengthInOut,orderCoef);\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- * downsample (LP filter and decimation)\r
- *---------------------------------------------------------------*/\r
-\r
-void DownSample (\r
-    float  *In,     /* (i) input samples */\r
-    float  *Coef,   /* (i) filter coefficients */\r
-    int lengthIn,   /* (i) number of input samples */ \r
-    float  *state,  /* (i) filter state */\r
-    float  *Out     /* (o) downsampled output */\r
-){\r
-    float   o;\r
-    float *Out_ptr = Out;\r
-    float *Coef_ptr, *In_ptr;\r
-    float *state_ptr;\r
-    int i, j, stop;\r
-\r
-    /* LP filter and decimate at the same time */\r
-\r
-    for (i = DELAY_DS; i < lengthIn; i+=FACTOR_DS)\r
-    {\r
-        Coef_ptr = &Coef[0];\r
-        In_ptr = &In[i];\r
-        state_ptr = &state[FILTERORDER_DS-2];\r
-\r
-\r
-\r
-        o = (float)0.0;\r
-        \r
-        stop = (i < FILTERORDER_DS) ? i + 1 : FILTERORDER_DS;\r
-\r
-        for (j = 0; j < stop; j++) \r
-        {\r
-            o += *Coef_ptr++ * (*In_ptr--);\r
-        }\r
-        for (j = i + 1; j < FILTERORDER_DS; j++) \r
-        {\r
-            o += *Coef_ptr++ * (*state_ptr--);\r
-        }\r
-\r
-        *Out_ptr++ = o;\r
-    }\r
-\r
-    /* Get the last part (use zeros as input for the future) */\r
-\r
-    for (i=(lengthIn+FACTOR_DS); i<(lengthIn+DELAY_DS); \r
-            i+=FACTOR_DS) {\r
-\r
-        o=(float)0.0;\r
-        \r
-        if (i<lengthIn) {\r
-            Coef_ptr = &Coef[0];\r
-            In_ptr = &In[i];\r
-            for (j=0; j<FILTERORDER_DS; j++) {\r
-                    o += *Coef_ptr++ * (*Out_ptr--);\r
-            }\r
-        } else {\r
-            Coef_ptr = &Coef[i-lengthIn];\r
-            In_ptr = &In[lengthIn-1];\r
-            for (j=0; j<FILTERORDER_DS-(i-lengthIn); j++) {\r
-                    o += *Coef_ptr++ * (*In_ptr--);\r
-            }\r
-        }\r
-        *Out_ptr++ = o;\r
-    }\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/filter.h b/libs/codecs/ilbc/filter.h
deleted file mode 100644 (file)
index bdfdff2..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    filter.h\r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_FILTER_H\r
-#define __iLBC_FILTER_H\r
-\r
-void AllPoleFilter(\r
-    float *InOut,   /* (i/o) on entrance InOut[-orderCoef] to \r
-                           InOut[-1] contain the state of the \r
-                           filter (delayed samples). InOut[0] to \r
-                           InOut[lengthInOut-1] contain the filter \r
-                           input, on en exit InOut[-orderCoef] to \r
-                           InOut[-1] is unchanged and InOut[0] to \r
-                           InOut[lengthInOut-1] contain filtered \r
-                           samples */\r
-    float *Coef,/* (i) filter coefficients, Coef[0] is assumed \r
-                           to be 1.0 */\r
-    int lengthInOut,/* (i) number of input/output samples */\r
-    int orderCoef   /* (i) number of filter coefficients */\r
-);\r
-\r
-\r
-\r
-void AllZeroFilter(\r
-    float *In,      /* (i) In[0] to In[lengthInOut-1] contain \r
-                           filter input samples */\r
-    float *Coef,/* (i) filter coefficients (Coef[0] is assumed \r
-                           to be 1.0) */\r
-    int lengthInOut,/* (i) number of input/output samples */\r
-    int orderCoef,  /* (i) number of filter coefficients */\r
-    float *Out      /* (i/o) on entrance Out[-orderCoef] to Out[-1]\r
-                           contain the filter state, on exit Out[0] \r
-                           to Out[lengthInOut-1] contain filtered \r
-                           samples */\r
-);\r
-\r
-void ZeroPoleFilter(\r
-    float *In,      /* (i) In[0] to In[lengthInOut-1] contain filter\r
-                           input samples In[-orderCoef] to In[-1] \r
-                           contain state of all-zero section */\r
-    float *ZeroCoef,/* (i) filter coefficients for all-zero \r
-                           section (ZeroCoef[0] is assumed to \r
-                           be 1.0) */\r
-    float *PoleCoef,/* (i) filter coefficients for all-pole section\r
-                           (ZeroCoef[0] is assumed to be 1.0) */\r
-    int lengthInOut,/* (i) number of input/output samples */\r
-    int orderCoef,  /* (i) number of filter coefficients */\r
-    float *Out      /* (i/o) on entrance Out[-orderCoef] to Out[-1]\r
-                           contain state of all-pole section. On\r
-                           exit Out[0] to Out[lengthInOut-1] \r
-                           contain filtered samples */\r
-);\r
-\r
-void DownSample (\r
-    float  *In,     /* (i) input samples */\r
-    float  *Coef,   /* (i) filter coefficients */\r
-    int lengthIn,   /* (i) number of input samples */ \r
-    float  *state,  /* (i) filter state */\r
-    float  *Out     /* (o) downsampled output */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/gainquant.c b/libs/codecs/ilbc/gainquant.c
deleted file mode 100644 (file)
index 9115a80..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    gainquant.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-\r
-\r
-******************************************************************/\r
-\r
-#include <string.h>\r
-#include <math.h>\r
-#include "constants.h"\r
-#include "gainquant.h"\r
-#include "filter.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  quantizer for the gain in the gain-shape coding of residual\r
- *---------------------------------------------------------------*/\r
-\r
-float gainquant(/* (o) quantized gain value */\r
-    float in,       /* (i) gain value */\r
-    float maxIn,/* (i) maximum of gain value */\r
-    int cblen,      /* (i) number of quantization indices */\r
-    int *index      /* (o) quantization index */\r
-){\r
-    int i, tindex;\r
-    float minmeasure,measure, *cb, scale;\r
-\r
-    /* ensure a lower bound on the scaling factor */\r
-\r
-    scale=maxIn;\r
-    \r
-    if (scale<0.1) {\r
-        scale=(float)0.1;\r
-    }\r
-\r
-    /* select the quantization table */\r
-    \r
-    if (cblen == 8) {\r
-        cb = gain_sq3Tbl;\r
-    } else if (cblen == 16) {\r
-        cb = gain_sq4Tbl;\r
-    } else  {\r
-        cb = gain_sq5Tbl;\r
-    }\r
-\r
-    /* select the best index in the quantization table */\r
-    \r
-    minmeasure=10000000.0;\r
-    tindex=0;\r
-    for (i=0; i<cblen; i++) {\r
-        measure=(in-scale*cb[i])*(in-scale*cb[i]);\r
-        \r
-        if (measure<minmeasure) {\r
-            tindex=i;\r
-            minmeasure=measure;\r
-        }\r
-    }\r
-    *index=tindex;\r
-       \r
-    /* return the quantized value */\r
-    \r
-\r
-\r
-    return scale*cb[tindex];\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  decoder for quantized gains in the gain-shape coding of \r
- *  residual                          \r
- *---------------------------------------------------------------*/\r
-\r
-float gaindequant(  /* (o) quantized gain value */\r
-    int index,      /* (i) quantization index */\r
-    float maxIn,/* (i) maximum of unquantized gain */\r
-    int cblen       /* (i) number of quantization indices */\r
-){\r
-    float scale;\r
-\r
-    /* obtain correct scale factor */\r
-\r
-    scale=(float)fabs(maxIn);\r
-    \r
-    if (scale<0.1) {\r
-        scale=(float)0.1;\r
-    }\r
-\r
-    /* select the quantization table and return the decoded value */\r
-\r
-    if (cblen==8) {\r
-        return scale*gain_sq3Tbl[index];\r
-    } else if (cblen==16) {\r
-        return scale*gain_sq4Tbl[index];\r
-    }\r
-    else if (cblen==32) {\r
-        return scale*gain_sq5Tbl[index];\r
-    }\r
-\r
-    return 0.0;\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/gainquant.h b/libs/codecs/ilbc/gainquant.h
deleted file mode 100644 (file)
index be81799..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    gainquant.h                                         \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_GAINQUANT_H\r
-#define __iLBC_GAINQUANT_H\r
-\r
-float gainquant(/* (o) quantized gain value */\r
-    float in,       /* (i) gain value */\r
-    float maxIn,/* (i) maximum of gain value */\r
-    int cblen,      /* (i) number of quantization indices */\r
-    int *index      /* (o) quantization index */\r
-);\r
-\r
-float gaindequant(  /* (o) quantized gain value */\r
-    int index,      /* (i) quantization index */\r
-    float maxIn,/* (i) maximum of unquantized gain */\r
-    int cblen       /* (i) number of quantization indices */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/getCBvec.c b/libs/codecs/ilbc/getCBvec.c
deleted file mode 100644 (file)
index 311568c..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    getCBvec.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include "iLBC_define.h"\r
-#include "getCBvec.h"\r
-#include "constants.h"\r
-#include <string.h>\r
-\r
-/*----------------------------------------------------------------*\r
- *  Construct codebook vector for given index.\r
- *---------------------------------------------------------------*/\r
-\r
-void getCBvec(\r
-    float *cbvec,   /* (o) Constructed codebook vector */\r
-    float *mem,     /* (i) Codebook buffer */\r
-    int index,      /* (i) Codebook index */\r
-    int lMem,       /* (i) Length of codebook buffer */\r
-    int cbveclen/* (i) Codebook vector length */\r
-){\r
-    int j, k, n, memInd, sFilt;\r
-    float tmpbuf[CB_MEML];\r
-    int base_size;\r
-    int ilow, ihigh;\r
-    float alfa, alfa1;\r
-\r
-    /* Determine size of codebook sections */\r
-\r
-    base_size=lMem-cbveclen+1;\r
-    \r
-    if (cbveclen==SUBL) {\r
-        base_size+=cbveclen/2;\r
-    }\r
-\r
-    /* No filter -> First codebook section */\r
-\r
-\r
-    \r
-    if (index<lMem-cbveclen+1) {\r
-\r
-        /* first non-interpolated vectors */\r
-\r
-        k=index+cbveclen;\r
-        /* get vector */\r
-        memcpy(cbvec, mem+lMem-k, cbveclen*sizeof(float));\r
-\r
-    } else if (index < base_size) {\r
-\r
-        k=2*(index-(lMem-cbveclen+1))+cbveclen;\r
-    \r
-        ihigh=k/2;\r
-        ilow=ihigh-5;\r
-\r
-        /* Copy first noninterpolated part */\r
-\r
-        memcpy(cbvec, mem+lMem-k/2, ilow*sizeof(float));\r
-\r
-        /* interpolation */\r
-\r
-        alfa1=(float)0.2;\r
-        alfa=0.0;\r
-        for (j=ilow; j<ihigh; j++) {\r
-            cbvec[j]=((float)1.0-alfa)*mem[lMem-k/2+j]+\r
-                alfa*mem[lMem-k+j];\r
-            alfa+=alfa1;\r
-        }\r
-\r
-        /* Copy second noninterpolated part */\r
-\r
-        memcpy(cbvec+ihigh, mem+lMem-k+ihigh, \r
-            (cbveclen-ihigh)*sizeof(float));\r
-\r
-    }\r
-\r
-    /* Higher codebbok section based on filtering */\r
-\r
-    else {\r
-\r
-        /* first non-interpolated vectors */\r
-\r
-        if (index-base_size<lMem-cbveclen+1) {\r
-            float tempbuff2[CB_MEML+CB_FILTERLEN+1];\r
-            float *pos;\r
-            float *pp, *pp1;\r
-\r
-            memset(tempbuff2, 0,\r
-                CB_HALFFILTERLEN*sizeof(float));\r
-            memcpy(&tempbuff2[CB_HALFFILTERLEN], mem,\r
-                lMem*sizeof(float));\r
-            memset(&tempbuff2[lMem+CB_HALFFILTERLEN], 0,\r
-                (CB_HALFFILTERLEN+1)*sizeof(float));\r
-\r
-\r
-\r
-            k=index-base_size+cbveclen;\r
-            sFilt=lMem-k;\r
-            memInd=sFilt+1-CB_HALFFILTERLEN;\r
-\r
-            /* do filtering */\r
-            pos=cbvec;\r
-            memset(pos, 0, cbveclen*sizeof(float));\r
-            for (n=0; n<cbveclen; n++) {\r
-                pp=&tempbuff2[memInd+n+CB_HALFFILTERLEN];\r
-                pp1=&cbfiltersTbl[CB_FILTERLEN-1];\r
-                for (j=0; j<CB_FILTERLEN; j++) {\r
-                    (*pos)+=(*pp++)*(*pp1--);\r
-                }\r
-                pos++;\r
-            }\r
-        }\r
-\r
-        /* interpolated vectors */\r
-\r
-        else {\r
-            float tempbuff2[CB_MEML+CB_FILTERLEN+1];\r
-\r
-            float *pos;\r
-            float *pp, *pp1;\r
-            int i;\r
-\r
-            memset(tempbuff2, 0,\r
-                CB_HALFFILTERLEN*sizeof(float));\r
-            memcpy(&tempbuff2[CB_HALFFILTERLEN], mem,\r
-                lMem*sizeof(float));\r
-            memset(&tempbuff2[lMem+CB_HALFFILTERLEN], 0,\r
-                (CB_HALFFILTERLEN+1)*sizeof(float));\r
-\r
-            k=2*(index-base_size-\r
-                (lMem-cbveclen+1))+cbveclen;\r
-            sFilt=lMem-k;\r
-            memInd=sFilt+1-CB_HALFFILTERLEN;\r
-\r
-            /* do filtering */\r
-            pos=&tmpbuf[sFilt];\r
-            memset(pos, 0, k*sizeof(float));\r
-            for (i=0; i<k; i++) {\r
-                pp=&tempbuff2[memInd+i+CB_HALFFILTERLEN];\r
-                pp1=&cbfiltersTbl[CB_FILTERLEN-1];\r
-                for (j=0; j<CB_FILTERLEN; j++) {\r
-                    (*pos)+=(*pp++)*(*pp1--);\r
-                }\r
-                pos++;\r
-            }\r
-\r
-            ihigh=k/2;\r
-            ilow=ihigh-5;\r
-\r
-\r
-\r
-            /* Copy first noninterpolated part */\r
-\r
-            memcpy(cbvec, tmpbuf+lMem-k/2, \r
-                ilow*sizeof(float));\r
-\r
-            /* interpolation */\r
-\r
-            alfa1=(float)0.2;\r
-            alfa=0.0;\r
-            for (j=ilow; j<ihigh; j++) {\r
-                cbvec[j]=((float)1.0-alfa)*\r
-                    tmpbuf[lMem-k/2+j]+alfa*tmpbuf[lMem-k+j];\r
-                alfa+=alfa1;\r
-            }\r
-\r
-            /* Copy second noninterpolated part */\r
-\r
-            memcpy(cbvec+ihigh, tmpbuf+lMem-k+ihigh, \r
-                (cbveclen-ihigh)*sizeof(float));\r
-        }\r
-    }\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/getCBvec.h b/libs/codecs/ilbc/getCBvec.h
deleted file mode 100644 (file)
index d4e9311..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    getCBvec.h                 \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_GETCBVEC_H\r
-#define __iLBC_GETCBVEC_H\r
-\r
-\r
-\r
-void getCBvec(\r
-    float *cbvec,   /* (o) Constructed codebook vector */\r
-    float *mem,     /* (i) Codebook buffer */\r
-    int index,      /* (i) Codebook index */\r
-    int lMem,       /* (i) Length of codebook buffer */\r
-    int cbveclen/* (i) Codebook vector length */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/helpfun.c b/libs/codecs/ilbc/helpfun.c
deleted file mode 100644 (file)
index 899291d..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    helpfun.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <math.h>\r
-\r
-#include "iLBC_define.h"\r
-#include "helpfun.h"\r
-#include "constants.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  calculation of auto correlation \r
- *---------------------------------------------------------------*/\r
-\r
-void autocorr( \r
-    float *r,       /* (o) autocorrelation vector */\r
-    const float *x, /* (i) data vector */\r
-    int N,          /* (i) length of data vector */\r
-    int order       /* largest lag for calculated \r
-                       autocorrelations */\r
-){\r
-    int     lag, n;\r
-    float   sum;\r
-    \r
-    for (lag = 0; lag <= order; lag++) {\r
-        sum = 0;\r
-        for (n = 0; n < N - lag; n++) {\r
-            sum += x[n] * x[n+lag];\r
-        }\r
-        r[lag] = sum;\r
-    }\r
-}\r
-\r
-\r
-\r
-/*----------------------------------------------------------------*\r
- *  window multiplication  \r
- *---------------------------------------------------------------*/\r
-\r
-void window( \r
-    float *z,       /* (o) the windowed data */\r
-    const float *x, /* (i) the original data vector */\r
-    const float *y, /* (i) the window */\r
-    int N           /* (i) length of all vectors */\r
-){\r
-    int     i;\r
-    \r
-    for (i = 0; i < N; i++) {\r
-        z[i] = x[i] * y[i];\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  levinson-durbin solution for lpc coefficients\r
- *---------------------------------------------------------------*/\r
-\r
-void levdurb( \r
-    float *a,       /* (o) lpc coefficient vector starting \r
-                           with 1.0 */\r
-    float *k,       /* (o) reflection coefficients */\r
-    float *r,       /* (i) autocorrelation vector */\r
-    int order       /* (i) order of lpc filter */\r
-){\r
-    float  sum, alpha;\r
-    int     m, m_h, i;\r
-\r
-    a[0] = 1.0;\r
-    \r
-    if (r[0] < EPS) { /* if r[0] <= 0, set LPC coeff. to zero */\r
-        for (i = 0; i < order; i++) {\r
-            k[i] = 0;\r
-            a[i+1] = 0;\r
-        }   \r
-    } else {\r
-        a[1] = k[0] = -r[1]/r[0];\r
-        alpha = r[0] + r[1] * k[0];\r
-        for (m = 1; m < order; m++){\r
-            sum = r[m + 1];\r
-            for (i = 0; i < m; i++){\r
-                sum += a[i+1] * r[m - i];\r
-            }\r
-            k[m] = -sum / alpha;\r
-            alpha += k[m] * sum;\r
-            m_h = (m + 1) >> 1;\r
-            for (i = 0; i < m_h; i++){\r
-                sum = a[i+1] + k[m] * a[m - i];\r
-                a[m - i] += k[m] * a[i+1];\r
-                a[i+1] = sum;\r
-\r
-\r
-            }\r
-            a[m+1] = k[m];\r
-        }\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  interpolation between vectors \r
- *---------------------------------------------------------------*/\r
-\r
-void interpolate( \r
-    float *out,      /* (o) the interpolated vector */\r
-    float *in1,     /* (i) the first vector for the \r
-                           interpolation */\r
-    float *in2,     /* (i) the second vector for the \r
-                           interpolation */\r
-    float coef,      /* (i) interpolation weights */\r
-    int length      /* (i) length of all vectors */\r
-){\r
-    int i;\r
-    float invcoef;\r
-\r
-    invcoef = (float)1.0 - coef;\r
-    for (i = 0; i < length; i++) {\r
-        out[i] = coef * in1[i] + invcoef * in2[i];\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  lpc bandwidth expansion                   \r
- *---------------------------------------------------------------*/\r
-\r
-void bwexpand( \r
-    float *out,      /* (o) the bandwidth expanded lpc \r
-                           coefficients */\r
-    float *in,      /* (i) the lpc coefficients before bandwidth \r
-                           expansion */\r
-    float coef,     /* (i) the bandwidth expansion factor */\r
-    int length      /* (i) the length of lpc coefficient vectors */\r
-){\r
-    int i;\r
-    float  chirp;\r
-    \r
-    chirp = coef;\r
-    \r
-    out[0] = in[0];\r
-    for (i = 1; i < length; i++) {\r
-        out[i] = chirp * in[i];\r
-        chirp *= coef;\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  vector quantization \r
-\r
-\r
- *---------------------------------------------------------------*/\r
-\r
-void vq( \r
-    float *Xq,      /* (o) the quantized vector */\r
-    int *index,     /* (o) the quantization index */\r
-    const float *CB,/* (i) the vector quantization codebook */\r
-    float *X,       /* (i) the vector to quantize */\r
-    int n_cb,       /* (i) the number of vectors in the codebook */\r
-    int dim         /* (i) the dimension of all vectors */\r
-){\r
-    int     i, j;\r
-    int     pos, minindex;\r
-    float   dist, tmp, mindist;\r
-\r
-    pos = 0;\r
-    mindist = FLOAT_MAX;\r
-    minindex = 0;\r
-    for (j = 0; j < n_cb; j++) {\r
-        dist = X[0] - CB[pos];\r
-        dist *= dist;\r
-        for (i = 1; i < dim; i++) {\r
-            tmp = X[i] - CB[pos + i];\r
-            dist += tmp*tmp;\r
-        }\r
-        \r
-        if (dist < mindist) {\r
-            mindist = dist;\r
-            minindex = j;\r
-        }\r
-        pos += dim;\r
-    }\r
-    for (i = 0; i < dim; i++) {\r
-        Xq[i] = CB[minindex*dim + i];\r
-    }\r
-    *index = minindex;\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  split vector quantization \r
- *---------------------------------------------------------------*/\r
-\r
-void SplitVQ( \r
-    float *qX,      /* (o) the quantized vector */\r
-    int *index,     /* (o) a vector of indexes for all vector\r
-                           codebooks in the split */\r
-    float *X,       /* (i) the vector to quantize */\r
-    const float *CB,/* (i) the quantizer codebook */\r
-    int nsplit,     /* the number of vector splits */\r
-    const int *dim, /* the dimension of X and qX */\r
-    const int *cbsize /* the number of vectors in the codebook */\r
-){\r
-    int    cb_pos, X_pos, i;\r
-    \r
-    cb_pos = 0;\r
-\r
-\r
-    X_pos= 0;\r
-    for (i = 0; i < nsplit; i++) {\r
-        vq(qX + X_pos, index + i, CB + cb_pos, X + X_pos, \r
-            cbsize[i], dim[i]);\r
-        X_pos += dim[i];\r
-        cb_pos += dim[i] * cbsize[i];\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  scalar quantization \r
- *---------------------------------------------------------------*/\r
-\r
-void sort_sq( \r
-    float *xq,      /* (o) the quantized value */\r
-    int *index,     /* (o) the quantization index */\r
-    float x,    /* (i) the value to quantize */\r
-    const float *cb,/* (i) the quantization codebook */\r
-    int cb_size      /* (i) the size of the quantization codebook */\r
-){\r
-    int i;\r
-    \r
-    if (x <= cb[0]) {\r
-        *index = 0;\r
-        *xq = cb[0];\r
-    } else {\r
-        i = 0;\r
-        while ((x > cb[i]) && i < cb_size - 1) {\r
-            i++;\r
-        }\r
-        \r
-        if (x > ((cb[i] + cb[i - 1])/2)) {\r
-            *index = i;\r
-            *xq = cb[i];\r
-        } else {\r
-            *index = i - 1;\r
-            *xq = cb[i - 1];\r
-        }\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  check for stability of lsf coefficients\r
- *---------------------------------------------------------------*/\r
-\r
-int LSF_check(    /* (o) 1 for stable lsf vectors and 0 for\r
-                           nonstable ones */\r
-    float *lsf,     /* (i) a table of lsf vectors */\r
-    int dim,    /* (i) the dimension of each lsf vector */\r
-    int NoAn    /* (i) the number of lsf vectors in the \r
-                           table */\r
-){\r
-    int k,n,m, Nit=2, change=0,pos;\r
-    float tmp;\r
-\r
-\r
-    static float eps=(float)0.039; /* 50 Hz */\r
-    static float eps2=(float)0.0195;\r
-    static float maxlsf=(float)3.14; /* 4000 Hz */\r
-    static float minlsf=(float)0.01; /* 0 Hz */\r
-    \r
-    /* LSF separation check*/\r
-\r
-    for (n=0; n<Nit; n++) { /* Run through a couple of times */\r
-        for (m=0; m<NoAn; m++) { /* Number of analyses per frame */\r
-            for (k=0; k<(dim-1); k++) {\r
-                pos=m*dim+k;\r
-                \r
-                if ((lsf[pos+1]-lsf[pos])<eps) {\r
-                    \r
-                    if (lsf[pos+1]<lsf[pos]) {\r
-                        tmp=lsf[pos+1];\r
-                        lsf[pos+1]= lsf[pos]+eps2;\r
-                        lsf[pos]= lsf[pos+1]-eps2;\r
-                    } else {\r
-                        lsf[pos]-=eps2;\r
-                        lsf[pos+1]+=eps2;\r
-                    }\r
-                    change=1;\r
-                }\r
-                \r
-                if (lsf[pos]<minlsf) { \r
-                    lsf[pos]=minlsf;\r
-                    change=1;\r
-                }\r
-                \r
-                if (lsf[pos]>maxlsf) { \r
-                    lsf[pos]=maxlsf;\r
-                    change=1;\r
-                }               \r
-            }\r
-        }\r
-    }\r
-    \r
-    return change;  \r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/helpfun.h b/libs/codecs/ilbc/helpfun.h
deleted file mode 100644 (file)
index e2bc4b1..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    helpfun.h         \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_HELPFUN_H\r
-#define __iLBC_HELPFUN_H\r
-\r
-void autocorr( \r
-    float *r,       /* (o) autocorrelation vector */\r
-    const float *x, /* (i) data vector */\r
-    int N,          /* (i) length of data vector */\r
-    int order       /* largest lag for calculated \r
-                       autocorrelations */\r
-);\r
-\r
-void window( \r
-    float *z,       /* (o) the windowed data */\r
-    const float *x, /* (i) the original data vector */\r
-    const float *y, /* (i) the window */\r
-    int N           /* (i) length of all vectors */\r
-);\r
-\r
-\r
-\r
-void levdurb( \r
-    float *a,       /* (o) lpc coefficient vector starting \r
-                           with 1.0 */\r
-    float *k,       /* (o) reflection coefficients */\r
-    float *r,       /* (i) autocorrelation vector */\r
-    int order       /* (i) order of lpc filter */\r
-);\r
-\r
-void interpolate( \r
-    float *out,     /* (o) the interpolated vector */\r
-    float *in1,     /* (i) the first vector for the \r
-                           interpolation */\r
-    float *in2,     /* (i) the second vector for the \r
-                           interpolation */\r
-    float coef,     /* (i) interpolation weights */\r
-    int length      /* (i) length of all vectors */\r
-);\r
-           \r
-void bwexpand( \r
-    float *out,     /* (o) the bandwidth expanded lpc \r
-                           coefficients */\r
-    float *in,      /* (i) the lpc coefficients before bandwidth\r
-                           expansion */\r
-    float coef,     /* (i) the bandwidth expansion factor */\r
-    int length      /* (i) the length of lpc coefficient vectors */\r
-);\r
-\r
-void vq( \r
-    float *Xq,      /* (o) the quantized vector */\r
-    int *index,     /* (o) the quantization index */\r
-    const float *CB,/* (i) the vector quantization codebook */\r
-    float *X,       /* (i) the vector to quantize */\r
-    int n_cb,       /* (i) the number of vectors in the codebook */\r
-    int dim         /* (i) the dimension of all vectors */\r
-);  \r
-\r
-void SplitVQ( \r
-    float *qX,      /* (o) the quantized vector */\r
-    int *index,     /* (o) a vector of indexes for all vector\r
-                           codebooks in the split */\r
-    float *X,       /* (i) the vector to quantize */\r
-    const float *CB,/* (i) the quantizer codebook */\r
-    int nsplit,     /* the number of vector splits */\r
-    const int *dim, /* the dimension of X and qX */\r
-    const int *cbsize /* the number of vectors in the codebook */\r
-);\r
-\r
-\r
-void sort_sq( \r
-    float *xq,      /* (o) the quantized value */\r
-    int *index,     /* (o) the quantization index */\r
-    float x,    /* (i) the value to quantize */\r
-    const float *cb,/* (i) the quantization codebook */\r
-\r
-\r
-    int cb_size     /* (i) the size of the quantization codebook */\r
-);\r
-\r
-int LSF_check(      /* (o) 1 for stable lsf vectors and 0 for \r
-                           nonstable ones */\r
-    float *lsf,     /* (i) a table of lsf vectors */\r
-    int dim,    /* (i) the dimension of each lsf vector */\r
-    int NoAn    /* (i) the number of lsf vectors in the \r
-                           table */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/hpInput.c b/libs/codecs/ilbc/hpInput.c
deleted file mode 100644 (file)
index 54d997e..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    hpInput.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include "constants.h"\r
-#include "hpInput.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  Input high-pass filter                          \r
- *---------------------------------------------------------------*/\r
-\r
-void hpInput( \r
-    float *In,  /* (i) vector to filter */\r
-    int len,    /* (i) length of vector to filter */\r
-    float *Out, /* (o) the resulting filtered vector */\r
-    float *mem  /* (i/o) the filter state */\r
-){\r
-    int i;\r
-    float *pi, *po;\r
-\r
-    /* all-zero section*/\r
-\r
-    pi = &In[0];\r
-    po = &Out[0];\r
-    for (i=0; i<len; i++) {\r
-        *po = hpi_zero_coefsTbl[0] * (*pi);\r
-        *po += hpi_zero_coefsTbl[1] * mem[0];\r
-        *po += hpi_zero_coefsTbl[2] * mem[1];\r
-\r
-        mem[1] = mem[0];\r
-        mem[0] = *pi;\r
-        po++;\r
-\r
-\r
-        pi++;\r
-\r
-    }\r
-\r
-    /* all-pole section*/\r
-\r
-    po = &Out[0];\r
-    for (i=0; i<len; i++) {\r
-        *po -= hpi_pole_coefsTbl[1] * mem[2];\r
-        *po -= hpi_pole_coefsTbl[2] * mem[3];\r
-\r
-        mem[3] = mem[2];\r
-        mem[2] = *po;\r
-        po++;\r
-    }\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/hpInput.h b/libs/codecs/ilbc/hpInput.h
deleted file mode 100644 (file)
index bd04762..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    hpInput.h        \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-\r
-\r
-#ifndef __iLBC_HPINPUT_H\r
-#define __iLBC_HPINPUT_H\r
-\r
-void hpInput( \r
-    float *In,  /* (i) vector to filter */\r
-    int len,    /* (i) length of vector to filter */\r
-    float *Out, /* (o) the resulting filtered vector */\r
-    float *mem  /* (i/o) the filter state */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/hpOutput.c b/libs/codecs/ilbc/hpOutput.c
deleted file mode 100644 (file)
index d85444d..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    hpOutput.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-\r
-\r
-******************************************************************/\r
-\r
-#include "constants.h"\r
-#include "hpOutput.h"\r
-/*----------------------------------------------------------------*\r
- *  Output high-pass filter                          \r
- *---------------------------------------------------------------*/\r
-\r
-void hpOutput(\r
-    float *In,  /* (i) vector to filter */\r
-    int len,/* (i) length of vector to filter */\r
-    float *Out, /* (o) the resulting filtered vector */\r
-    float *mem  /* (i/o) the filter state */\r
-){\r
-    int i;\r
-    float *pi, *po;\r
-\r
-    /* all-zero section*/\r
-\r
-    pi = &In[0];\r
-    po = &Out[0];\r
-    for (i=0; i<len; i++) {\r
-        *po = hpo_zero_coefsTbl[0] * (*pi);\r
-        *po += hpo_zero_coefsTbl[1] * mem[0];\r
-        *po += hpo_zero_coefsTbl[2] * mem[1];\r
-\r
-        mem[1] = mem[0];\r
-        mem[0] = *pi;\r
-        po++;\r
-        pi++;\r
-\r
-    }\r
-\r
-    /* all-pole section*/\r
-\r
-    po = &Out[0];\r
-    for (i=0; i<len; i++) {\r
-        *po -= hpo_pole_coefsTbl[1] * mem[2];\r
-        *po -= hpo_pole_coefsTbl[2] * mem[3];\r
-\r
-        mem[3] = mem[2];\r
-        mem[2] = *po;\r
-        po++;\r
-    }\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/hpOutput.h b/libs/codecs/ilbc/hpOutput.h
deleted file mode 100644 (file)
index 50c4914..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    hpOutput.h       \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_HPOUTPUT_H\r
-#define __iLBC_HPOUTPUT_H\r
-\r
-void hpOutput(\r
-    float *In,  /* (i) vector to filter */\r
-    int len,/* (i) length of vector to filter */\r
-    float *Out, /* (o) the resulting filtered vector */\r
-    float *mem  /* (i/o) the filter state */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/iCBConstruct.c b/libs/codecs/ilbc/iCBConstruct.c
deleted file mode 100644 (file)
index 2d934b0..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    iCBConstruct.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <math.h>\r
-\r
-#include "iLBC_define.h"\r
-#include "iCBConstruct.h"\r
-#include "gainquant.h"\r
-#include "getCBvec.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  Convert the codebook indexes to make the search easier\r
- *---------------------------------------------------------------*/\r
-\r
-\r
-\r
-void index_conv_enc(\r
-    int *index          /* (i/o) Codebook indexes */\r
-){\r
-    int k;\r
-\r
-    for (k=1; k<CB_NSTAGES; k++) {\r
-        \r
-        if ((index[k]>=108)&&(index[k]<172)) {\r
-            index[k]-=64;\r
-        } else if (index[k]>=236) {\r
-            index[k]-=128;\r
-        } else {\r
-            /* ERROR */\r
-        }\r
-    }\r
-}\r
-\r
-void index_conv_dec(\r
-    int *index          /* (i/o) Codebook indexes */\r
-){\r
-    int k;\r
-\r
-    for (k=1; k<CB_NSTAGES; k++) {\r
-        \r
-        if ((index[k]>=44)&&(index[k]<108)) {\r
-            index[k]+=64;\r
-        } else if ((index[k]>=108)&&(index[k]<128)) {\r
-            index[k]+=128;\r
-        } else {\r
-            /* ERROR */\r
-        }\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  Construct decoded vector from codebook and gains.\r
- *---------------------------------------------------------------*/\r
-\r
-void iCBConstruct(\r
-    float *decvector,   /* (o) Decoded vector */\r
-    int *index,         /* (i) Codebook indices */\r
-    int *gain_index,/* (i) Gain quantization indices */\r
-    float *mem,         /* (i) Buffer for codevector construction */\r
-    int lMem,           /* (i) Length of buffer */\r
-    int veclen,         /* (i) Length of vector */\r
-    int nStages         /* (i) Number of codebook stages */\r
-){\r
-    int j,k;\r
-    float gain[CB_NSTAGES];\r
-    float cbvec[SUBL];\r
-\r
-    /* gain de-quantization */\r
-\r
-    gain[0] = gaindequant(gain_index[0], 1.0, 32);\r
-\r
-\r
-    if (nStages > 1) {\r
-        gain[1] = gaindequant(gain_index[1], \r
-            (float)fabs(gain[0]), 16);  \r
-    }\r
-    if (nStages > 2) {\r
-        gain[2] = gaindequant(gain_index[2], \r
-            (float)fabs(gain[1]), 8);\r
-    }\r
-\r
-    /* codebook vector construction and construction of \r
-    total vector */\r
-\r
-    getCBvec(cbvec, mem, index[0], lMem, veclen);\r
-    for (j=0;j<veclen;j++){\r
-        decvector[j] = gain[0]*cbvec[j];\r
-    }\r
-    if (nStages > 1) {\r
-        for (k=1; k<nStages; k++) {\r
-            getCBvec(cbvec, mem, index[k], lMem, veclen);\r
-            for (j=0;j<veclen;j++) {\r
-                decvector[j] += gain[k]*cbvec[j];\r
-            }\r
-        }\r
-    }\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/iCBConstruct.h b/libs/codecs/ilbc/iCBConstruct.h
deleted file mode 100644 (file)
index d8c69d9..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-\r
-\r
-    iCBConstruct.h   \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_ICBCONSTRUCT_H\r
-#define __iLBC_ICBCONSTRUCT_H\r
-\r
-void index_conv_enc(\r
-    int *index          /* (i/o) Codebook indexes */\r
-);\r
-\r
-void index_conv_dec(\r
-    int *index          /* (i/o) Codebook indexes */\r
-);\r
-\r
-void iCBConstruct(\r
-    float *decvector,   /* (o) Decoded vector */\r
-    int *index,         /* (i) Codebook indices */\r
-    int *gain_index,/* (i) Gain quantization indices */\r
-    float *mem,         /* (i) Buffer for codevector construction */\r
-    int lMem,           /* (i) Length of buffer */\r
-    int veclen,         /* (i) Length of vector */\r
-    int nStages         /* (i) Number of codebook stages */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/iCBSearch.c b/libs/codecs/ilbc/iCBSearch.c
deleted file mode 100644 (file)
index 80c6f2d..0000000
+++ /dev/null
@@ -1,480 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    iCBSearch.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <math.h>\r
-#include <string.h>\r
-\r
-#include "iLBC_define.h"\r
-#include "iCBSearch.h"\r
-#include "gainquant.h"\r
-#include "createCB.h"\r
-#include "filter.h"\r
-#include "constants.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  Search routine for codebook encoding and gain quantization.\r
- *---------------------------------------------------------------*/\r
-\r
-void iCBSearch(\r
-    iLBC_Enc_Inst_t *iLBCenc_inst, \r
-                        /* (i) the encoder state structure */\r
-    int *index,         /* (o) Codebook indices */\r
-    int *gain_index,/* (o) Gain quantization indices */\r
-    float *intarget,/* (i) Target vector for encoding */    \r
-    float *mem,         /* (i) Buffer for codebook construction */\r
-    int lMem,           /* (i) Length of buffer */\r
-    int lTarget,    /* (i) Length of vector */\r
-    int nStages,    /* (i) Number of codebook stages */\r
-    float *weightDenum, /* (i) weighting filter coefficients */\r
-    float *weightState, /* (i) weighting filter state */\r
-    int block           /* (i) the sub-block number */\r
-){\r
-    int i, j, icount, stage, best_index, range, counter;\r
-    float max_measure, gain, measure, crossDot, ftmp;\r
-    float gains[CB_NSTAGES];\r
-    float target[SUBL];\r
-    int base_index, sInd, eInd, base_size;\r
-    int sIndAug=0, eIndAug=0;\r
-    float buf[CB_MEML+SUBL+2*LPC_FILTERORDER];\r
-\r
-\r
-    float invenergy[CB_EXPAND*128], energy[CB_EXPAND*128];\r
-    float *pp, *ppi=0, *ppo=0, *ppe=0;\r
-    float cbvectors[CB_MEML];\r
-    float tene, cene, cvec[SUBL];\r
-    float aug_vec[SUBL];\r
-\r
-    memset(cvec,0,SUBL*sizeof(float));  \r
-\r
-    /* Determine size of codebook sections */\r
-\r
-    base_size=lMem-lTarget+1;\r
-    \r
-    if (lTarget==SUBL) {\r
-        base_size=lMem-lTarget+1+lTarget/2;\r
-    }\r
-\r
-    /* setup buffer for weighting */\r
-\r
-    memcpy(buf,weightState,sizeof(float)*LPC_FILTERORDER);\r
-    memcpy(buf+LPC_FILTERORDER,mem,lMem*sizeof(float));\r
-    memcpy(buf+LPC_FILTERORDER+lMem,intarget,lTarget*sizeof(float));\r
-\r
-    /* weighting */\r
-\r
-    AllPoleFilter(buf+LPC_FILTERORDER, weightDenum, \r
-        lMem+lTarget, LPC_FILTERORDER);\r
-    \r
-    /* Construct the codebook and target needed */\r
-\r
-    memcpy(target, buf+LPC_FILTERORDER+lMem, lTarget*sizeof(float));\r
-\r
-    tene=0.0;\r
-    for (i=0; i<lTarget; i++) {\r
-        tene+=target[i]*target[i];\r
-    }\r
-\r
-    /* Prepare search over one more codebook section. This section \r
-       is created by filtering the original buffer with a filter. */\r
-        \r
-    filteredCBvecs(cbvectors, buf+LPC_FILTERORDER, lMem);\r
-\r
-    /* The Main Loop over stages */\r
-\r
-    for (stage=0; stage<nStages; stage++) {\r
-\r
-        range = search_rangeTbl[block][stage];\r
-\r
-        /* initialize search measure */\r
-\r
-        max_measure = (float)-10000000.0;\r
-        gain = (float)0.0;\r
-        best_index = 0;\r
-\r
-        /* Compute cross dot product between the target \r
-\r
-\r
-           and the CB memory */\r
-\r
-        crossDot=0.0;\r
-        pp=buf+LPC_FILTERORDER+lMem-lTarget;\r
-        for (j=0; j<lTarget; j++) {\r
-            crossDot += target[j]*(*pp++);\r
-        }       \r
-        \r
-        if (stage==0) {\r
-\r
-            /* Calculate energy in the first block of \r
-              'lTarget' sampels. */\r
-            ppe = energy;\r
-            ppi = buf+LPC_FILTERORDER+lMem-lTarget-1;\r
-            ppo = buf+LPC_FILTERORDER+lMem-1;\r
-\r
-            *ppe=0.0;\r
-            pp=buf+LPC_FILTERORDER+lMem-lTarget;\r
-            for (j=0; j<lTarget; j++) {\r
-                *ppe+=(*pp)*(*pp);\r
-                               pp++;\r
-            }\r
-            \r
-            if (*ppe>0.0) {\r
-                invenergy[0] = (float) 1.0 / (*ppe + EPS);\r
-            } else {\r
-                invenergy[0] = (float) 0.0; \r
-            }\r
-            ppe++;\r
-\r
-            measure=(float)-10000000.0; \r
-            \r
-            if (crossDot > 0.0) {\r
-                   measure = crossDot*crossDot*invenergy[0];\r
-            }\r
-        }\r
-        else {\r
-            measure = crossDot*crossDot*invenergy[0];\r
-        }\r
-\r
-        /* check if measure is better */\r
-        ftmp = crossDot*invenergy[0];\r
-        \r
-        if ((measure>max_measure) && (fabs(ftmp)<CB_MAXGAIN)) {\r
-            best_index = 0;\r
-            max_measure = measure;\r
-            gain = ftmp;\r
-        }\r
-\r
-        /* loop over the main first codebook section, \r
-           full search */\r
-\r
-        for (icount=1; icount<range; icount++) {\r
-\r
-            /* calculate measure */\r
-\r
-\r
-\r
-            crossDot=0.0;\r
-            pp = buf+LPC_FILTERORDER+lMem-lTarget-icount;\r
-\r
-            for (j=0; j<lTarget; j++) {\r
-                crossDot += target[j]*(*pp++);\r
-            }\r
-            \r
-            if (stage==0) {\r
-                *ppe++ = energy[icount-1] + (*ppi)*(*ppi) - \r
-                    (*ppo)*(*ppo);\r
-                ppo--;\r
-                ppi--;\r
-                \r
-                if (energy[icount]>0.0) {\r
-                    invenergy[icount] = \r
-                        (float)1.0/(energy[icount]+EPS);\r
-                } else {\r
-                    invenergy[icount] = (float) 0.0;\r
-                }\r
-\r
-                measure=(float)-10000000.0;\r
-                \r
-                if (crossDot > 0.0) {\r
-                    measure = crossDot*crossDot*invenergy[icount];\r
-                }\r
-            }\r
-            else {\r
-                measure = crossDot*crossDot*invenergy[icount];\r
-            }\r
-\r
-            /* check if measure is better */\r
-            ftmp = crossDot*invenergy[icount];\r
-\r
-            if ((measure>max_measure) && (fabs(ftmp)<CB_MAXGAIN)) {\r
-                best_index = icount;\r
-                max_measure = measure;\r
-                gain = ftmp;\r
-            }\r
-        }\r
-\r
-        /* Loop over augmented part in the first codebook \r
-         * section, full search.\r
-         * The vectors are interpolated.\r
-         */\r
-        \r
-        if (lTarget==SUBL) {        \r
-            \r
-            /* Search for best possible cb vector and \r
-               compute the CB-vectors' energy. */\r
-            searchAugmentedCB(20, 39, stage, base_size-lTarget/2, \r
-                target, buf+LPC_FILTERORDER+lMem,\r
-                &max_measure, &best_index, &gain, energy, \r
-                invenergy);\r
-\r
-\r
-        }\r
-\r
-        /* set search range for following codebook sections */\r
-\r
-        base_index=best_index;\r
-\r
-        /* unrestricted search */\r
-\r
-        if (CB_RESRANGE == -1) {\r
-            sInd=0;\r
-            eInd=range-1;\r
-            sIndAug=20;\r
-            eIndAug=39;\r
-        }\r
-\r
-        /* restriced search around best index from first \r
-        codebook section */\r
-\r
-        else {\r
-            /* Initialize search indices */\r
-            sIndAug=0;\r
-            eIndAug=0;\r
-            sInd=base_index-CB_RESRANGE/2;\r
-            eInd=sInd+CB_RESRANGE;\r
-            \r
-            if (lTarget==SUBL) {\r
-\r
-                if (sInd<0) {\r
-                    \r
-                    sIndAug = 40 + sInd;\r
-                    eIndAug = 39;\r
-                    sInd=0;\r
-\r
-                } else if ( base_index < (base_size-20) ) {\r
-                    \r
-                    if (eInd > range) {\r
-                        sInd -= (eInd-range);\r
-                        eInd = range;\r
-                    }\r
-                } else { /* base_index >= (base_size-20) */\r
-                    \r
-                    if (sInd < (base_size-20)) {\r
-                        sIndAug = 20;\r
-                        sInd = 0;\r
-                        eInd = 0;\r
-                        eIndAug = 19 + CB_RESRANGE;\r
-                        \r
-                        if(eIndAug > 39) {\r
-                            eInd = eIndAug-39;\r
-                            eIndAug = 39;\r
-                        }\r
-                    } else {\r
-                        sIndAug = 20 + sInd - (base_size-20);\r
-                        eIndAug = 39;\r
-\r
-\r
-                        sInd = 0;\r
-                        eInd = CB_RESRANGE - (eIndAug-sIndAug+1);\r
-                    }\r
-                }\r
-\r
-            } else { /* lTarget = 22 or 23 */\r
-                \r
-                if (sInd < 0) {\r
-                    eInd -= sInd;\r
-                    sInd = 0;\r
-                }\r
-                \r
-                if(eInd > range) {\r
-                    sInd -= (eInd - range);\r
-                    eInd = range;\r
-                }\r
-            }\r
-        }\r
-\r
-        /* search of higher codebook section */\r
-\r
-        /* index search range */\r
-        counter = sInd;\r
-        sInd += base_size;\r
-        eInd += base_size;\r
-        \r
-        \r
-        if (stage==0) {\r
-            ppe = energy+base_size;\r
-            *ppe=0.0;\r
-\r
-            pp=cbvectors+lMem-lTarget;\r
-            for (j=0; j<lTarget; j++) {\r
-                *ppe+=(*pp)*(*pp);\r
-                               pp++;\r
-            }\r
-\r
-            ppi = cbvectors + lMem - 1 - lTarget;\r
-            ppo = cbvectors + lMem - 1;\r
-            \r
-            for (j=0; j<(range-1); j++) {\r
-                *(ppe+1) = *ppe + (*ppi)*(*ppi) - (*ppo)*(*ppo);\r
-                ppo--;\r
-                ppi--;\r
-                ppe++;\r
-            }\r
-        }\r
-\r
-        /* loop over search range */\r
-\r
-        for (icount=sInd; icount<eInd; icount++) {\r
-\r
-            /* calculate measure */\r
-\r
-            crossDot=0.0;\r
-\r
-\r
-            pp=cbvectors + lMem - (counter++) - lTarget;\r
-\r
-            for (j=0;j<lTarget;j++) {\r
-                crossDot += target[j]*(*pp++);\r
-            }\r
-            \r
-            if (energy[icount]>0.0) {\r
-                invenergy[icount] =(float)1.0/(energy[icount]+EPS);\r
-            } else {\r
-                invenergy[icount] =(float)0.0;\r
-            }\r
-            \r
-            if (stage==0) {\r
-\r
-                measure=(float)-10000000.0;\r
-                \r
-                if (crossDot > 0.0) {\r
-                    measure = crossDot*crossDot*\r
-                        invenergy[icount];\r
-                }\r
-            }\r
-            else {\r
-                measure = crossDot*crossDot*invenergy[icount];\r
-            }\r
-\r
-            /* check if measure is better */\r
-            ftmp = crossDot*invenergy[icount];\r
-\r
-            if ((measure>max_measure) && (fabs(ftmp)<CB_MAXGAIN)) {\r
-                best_index = icount;\r
-                max_measure = measure;\r
-                gain = ftmp;\r
-            }\r
-        }\r
-\r
-        /* Search the augmented CB inside the limited range. */\r
-        \r
-        if ((lTarget==SUBL)&&(sIndAug!=0)) {\r
-            searchAugmentedCB(sIndAug, eIndAug, stage, \r
-                2*base_size-20, target, cbvectors+lMem,\r
-                &max_measure, &best_index, &gain, energy, \r
-                invenergy);\r
-        }\r
-\r
-        /* record best index */\r
-\r
-        index[stage] = best_index;\r
-\r
-        /* gain quantization */\r
-\r
-        if (stage==0){\r
-            \r
-            if (gain<0.0){\r
-                gain = 0.0;\r
-\r
-\r
-            }\r
-            \r
-            if (gain>CB_MAXGAIN) {\r
-                gain = (float)CB_MAXGAIN;\r
-            }\r
-            gain = gainquant(gain, 1.0, 32, &gain_index[stage]);\r
-        }\r
-        else {\r
-            if (stage==1) {\r
-                gain = gainquant(gain, (float)fabs(gains[stage-1]),\r
-                    16, &gain_index[stage]);\r
-            } else {\r
-                gain = gainquant(gain, (float)fabs(gains[stage-1]),\r
-                    8, &gain_index[stage]);\r
-            }\r
-        }\r
-\r
-        /* Extract the best (according to measure) \r
-           codebook vector */\r
-        \r
-        if (lTarget==(STATE_LEN-iLBCenc_inst->state_short_len)) {\r
-            \r
-            if (index[stage]<base_size) {\r
-                pp=buf+LPC_FILTERORDER+lMem-lTarget-index[stage];\r
-            } else {\r
-                pp=cbvectors+lMem-lTarget-\r
-                    index[stage]+base_size;\r
-            }\r
-        } else {\r
-            \r
-            if (index[stage]<base_size) {\r
-                if (index[stage]<(base_size-20)) {\r
-                    pp=buf+LPC_FILTERORDER+lMem-\r
-                        lTarget-index[stage];\r
-                } else {\r
-                    createAugmentedVec(index[stage]-base_size+40,\r
-                            buf+LPC_FILTERORDER+lMem,aug_vec);\r
-                    pp=aug_vec;\r
-                }\r
-            } else {\r
-                int filterno, position;\r
-\r
-                filterno=index[stage]/base_size;\r
-                position=index[stage]-filterno*base_size;\r
-\r
-                \r
-                if (position<(base_size-20)) {\r
-                    pp=cbvectors+filterno*lMem-lTarget-\r
-                        index[stage]+filterno*base_size;\r
-                } else {\r
-                    createAugmentedVec(\r
-                        index[stage]-(filterno+1)*base_size+40,\r
-                        cbvectors+filterno*lMem,aug_vec);\r
-                    pp=aug_vec;\r
-\r
-\r
-                }\r
-            }\r
-        }\r
-\r
-        /* Subtract the best codebook vector, according \r
-           to measure, from the target vector */\r
-\r
-        for (j=0;j<lTarget;j++) {\r
-            cvec[j] += gain*(*pp);\r
-            target[j] -= gain*(*pp++);\r
-        }\r
-\r
-        /* record quantized gain */\r
-\r
-        gains[stage]=gain;\r
-\r
-    }/* end of Main Loop. for (stage=0;... */\r
-\r
-    /* Gain adjustment for energy matching */\r
-    cene=0.0;\r
-    for (i=0; i<lTarget; i++) {\r
-        cene+=cvec[i]*cvec[i];\r
-    }\r
-    j=gain_index[0];\r
-\r
-    for (i=gain_index[0]; i<32; i++) {\r
-        ftmp=cene*gain_sq5Tbl[i]*gain_sq5Tbl[i];\r
-        \r
-        if ((ftmp<(tene*gains[0]*gains[0])) && \r
-            (gain_sq5Tbl[j]<(2.0*gains[0]))) {\r
-            j=i;\r
-        }\r
-    }\r
-    gain_index[0]=j;\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/iCBSearch.h b/libs/codecs/ilbc/iCBSearch.h
deleted file mode 100644 (file)
index 390e3f3..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    iCBSearch.h        \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_ICBSEARCH_H\r
-#define __iLBC_ICBSEARCH_H\r
-\r
-void iCBSearch(\r
-    iLBC_Enc_Inst_t *iLBCenc_inst, \r
-                        /* (i) the encoder state structure */\r
-    int *index,         /* (o) Codebook indices */\r
-    int *gain_index,/* (o) Gain quantization indices */\r
-    float *intarget,/* (i) Target vector for encoding */    \r
-    float *mem,         /* (i) Buffer for codebook construction */\r
-    int lMem,           /* (i) Length of buffer */\r
-    int lTarget,    /* (i) Length of vector */\r
-    int nStages,    /* (i) Number of codebook stages */\r
-    float *weightDenum, /* (i) weighting filter coefficients */\r
-\r
-\r
-    float *weightState, /* (i) weighting filter state */\r
-    int block           /* (i) the sub-block number */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/iLBC_decode.c b/libs/codecs/ilbc/iLBC_decode.c
deleted file mode 100644 (file)
index 460603a..0000000
+++ /dev/null
@@ -1,619 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    iLBC_decode.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <math.h>\r
-#include <stdlib.h>\r
-\r
-#include "iLBC_define.h"\r
-#include "iLBC_decode.h"\r
-#include "StateConstructW.h"\r
-#include "LPCdecode.h"\r
-#include "iCBConstruct.h"\r
-#include "doCPLC.h"\r
-#include "helpfun.h"\r
-#include "constants.h"\r
-#include "packing.h"\r
-#include "string.h"\r
-#include "enhancer.h"\r
-#include "hpOutput.h"\r
-#include "syntFilter.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  Initiation of decoder instance.\r
- *---------------------------------------------------------------*/\r
-\r
-short initDecode(                   /* (o) Number of decoded \r
-                                           samples */\r
-    iLBC_Dec_Inst_t *iLBCdec_inst,  /* (i/o) Decoder instance */\r
-    int mode,                       /* (i) frame size mode */\r
-    int use_enhancer                /* (i) 1 to use enhancer\r
-                                           0 to run without \r
-                                             enhancer */\r
-){\r
-    int i;\r
-\r
-    iLBCdec_inst->mode = mode;\r
-\r
-    if (mode==30) {\r
-        iLBCdec_inst->blockl = BLOCKL_30MS;\r
-        iLBCdec_inst->nsub = NSUB_30MS;\r
-        iLBCdec_inst->nasub = NASUB_30MS;\r
-        iLBCdec_inst->lpc_n = LPC_N_30MS;\r
-\r
-\r
-        iLBCdec_inst->no_of_bytes = NO_OF_BYTES_30MS;\r
-        iLBCdec_inst->no_of_words = NO_OF_WORDS_30MS;\r
-        iLBCdec_inst->state_short_len=STATE_SHORT_LEN_30MS;\r
-        /* ULP init */\r
-        iLBCdec_inst->ULP_inst=&ULP_30msTbl;\r
-    }\r
-    else if (mode==20) {\r
-        iLBCdec_inst->blockl = BLOCKL_20MS;\r
-        iLBCdec_inst->nsub = NSUB_20MS;\r
-        iLBCdec_inst->nasub = NASUB_20MS;\r
-        iLBCdec_inst->lpc_n = LPC_N_20MS;\r
-        iLBCdec_inst->no_of_bytes = NO_OF_BYTES_20MS;\r
-        iLBCdec_inst->no_of_words = NO_OF_WORDS_20MS;\r
-        iLBCdec_inst->state_short_len=STATE_SHORT_LEN_20MS;\r
-        /* ULP init */\r
-        iLBCdec_inst->ULP_inst=&ULP_20msTbl;\r
-    }\r
-    else {\r
-        exit(2);\r
-    }\r
-\r
-    memset(iLBCdec_inst->syntMem, 0, \r
-        LPC_FILTERORDER*sizeof(float));\r
-    memcpy((*iLBCdec_inst).lsfdeqold, lsfmeanTbl, \r
-        LPC_FILTERORDER*sizeof(float));\r
-\r
-    memset(iLBCdec_inst->old_syntdenum, 0, \r
-        ((LPC_FILTERORDER + 1)*NSUB_MAX)*sizeof(float));\r
-    for (i=0; i<NSUB_MAX; i++)\r
-        iLBCdec_inst->old_syntdenum[i*(LPC_FILTERORDER+1)]=1.0;\r
-\r
-    iLBCdec_inst->last_lag = 20;\r
-\r
-    iLBCdec_inst->prevLag = 120;\r
-    iLBCdec_inst->per = 0.0;\r
-    iLBCdec_inst->consPLICount = 0;\r
-    iLBCdec_inst->prevPLI = 0;\r
-    iLBCdec_inst->prevLpc[0] = 1.0;\r
-    memset(iLBCdec_inst->prevLpc+1,0,\r
-        LPC_FILTERORDER*sizeof(float));\r
-    memset(iLBCdec_inst->prevResidual, 0, BLOCKL_MAX*sizeof(float));\r
-    iLBCdec_inst->seed=777;\r
-\r
-    memset(iLBCdec_inst->hpomem, 0, 4*sizeof(float));\r
-\r
-    iLBCdec_inst->use_enhancer = use_enhancer;\r
-    memset(iLBCdec_inst->enh_buf, 0, ENH_BUFL*sizeof(float));\r
-    for (i=0;i<ENH_NBLOCKS_TOT;i++) \r
-        iLBCdec_inst->enh_period[i]=(float)40.0;\r
-\r
-    iLBCdec_inst->prev_enh_pl = 0;\r
-\r
-    return (iLBCdec_inst->blockl);\r
-}\r
-\r
-\r
-\r
-/*----------------------------------------------------------------*\r
- *  frame residual decoder function (subrutine to iLBC_decode) \r
- *---------------------------------------------------------------*/\r
-\r
-static void Decode(\r
-    iLBC_Dec_Inst_t *iLBCdec_inst,  /* (i/o) the decoder state \r
-                                             structure */\r
-    float *decresidual,             /* (o) decoded residual frame */\r
-    int start,                      /* (i) location of start \r
-                                           state */\r
-    int idxForMax,                  /* (i) codebook index for the \r
-                                           maximum value */\r
-    int *idxVec,                /* (i) codebook indexes for the \r
-                                           samples  in the start \r
-                                           state */\r
-    float *syntdenum,               /* (i) the decoded synthesis\r
-                                           filter coefficients */\r
-    int *cb_index,                  /* (i) the indexes for the \r
-                                           adaptive codebook */\r
-    int *gain_index,            /* (i) the indexes for the \r
-                                           corresponding gains */\r
-    int *extra_cb_index,        /* (i) the indexes for the \r
-                                           adaptive codebook part \r
-                                           of start state */\r
-    int *extra_gain_index,          /* (i) the indexes for the \r
-                                           corresponding gains */\r
-    int state_first                 /* (i) 1 if non adaptive part \r
-                                           of start state comes \r
-                                           first 0 if that part \r
-                                           comes last */\r
-){\r
-    float reverseDecresidual[BLOCKL_MAX], mem[CB_MEML];\r
-    int k, meml_gotten, Nfor, Nback, i;\r
-    int diff, start_pos;\r
-    int subcount, subframe;\r
-\r
-    diff = STATE_LEN - iLBCdec_inst->state_short_len;\r
-    \r
-    if (state_first == 1) {\r
-        start_pos = (start-1)*SUBL;\r
-    } else {\r
-        start_pos = (start-1)*SUBL + diff;\r
-    }\r
-\r
-    /* decode scalar part of start state */\r
-\r
-    StateConstructW(idxForMax, idxVec, \r
-        &syntdenum[(start-1)*(LPC_FILTERORDER+1)], \r
-        &decresidual[start_pos], iLBCdec_inst->state_short_len);\r
-\r
-    \r
-    if (state_first) { /* put adaptive part in the end */\r
-                \r
-\r
-\r
-        /* setup memory */\r
-\r
-        memset(mem, 0, \r
-            (CB_MEML-iLBCdec_inst->state_short_len)*sizeof(float));\r
-        memcpy(mem+CB_MEML-iLBCdec_inst->state_short_len, \r
-            decresidual+start_pos, \r
-            iLBCdec_inst->state_short_len*sizeof(float));\r
-        \r
-        /* construct decoded vector */\r
-\r
-        iCBConstruct(\r
-            &decresidual[start_pos+iLBCdec_inst->state_short_len],\r
-            extra_cb_index, extra_gain_index, mem+CB_MEML-stMemLTbl,\r
-            stMemLTbl, diff, CB_NSTAGES);\r
-    \r
-    } \r
-    else {/* put adaptive part in the beginning */\r
-        \r
-        /* create reversed vectors for prediction */\r
-\r
-        for (k=0; k<diff; k++) {\r
-            reverseDecresidual[k] = \r
-                decresidual[(start+1)*SUBL-1-\r
-                        (k+iLBCdec_inst->state_short_len)];\r
-        }\r
-        \r
-        /* setup memory */\r
-\r
-        meml_gotten = iLBCdec_inst->state_short_len;\r
-        for (k=0; k<meml_gotten; k++){ \r
-            mem[CB_MEML-1-k] = decresidual[start_pos + k];\r
-        } \r
-        memset(mem, 0, (CB_MEML-k)*sizeof(float));\r
-        \r
-        /* construct decoded vector */\r
-\r
-        iCBConstruct(reverseDecresidual, extra_cb_index, \r
-            extra_gain_index, mem+CB_MEML-stMemLTbl, stMemLTbl,\r
-            diff, CB_NSTAGES);\r
-        \r
-        /* get decoded residual from reversed vector */\r
-\r
-        for (k=0; k<diff; k++) {\r
-            decresidual[start_pos-1-k] = reverseDecresidual[k];\r
-        }\r
-    }\r
-\r
-    /* counter for predicted sub-frames */\r
-\r
-    subcount=0;\r
-\r
-    /* forward prediction of sub-frames */\r
-\r
-    Nfor = iLBCdec_inst->nsub-start-1;\r
-\r
-\r
-    \r
-    if ( Nfor > 0 ){\r
-        \r
-        /* setup memory */\r
-\r
-        memset(mem, 0, (CB_MEML-STATE_LEN)*sizeof(float));\r
-        memcpy(mem+CB_MEML-STATE_LEN, decresidual+(start-1)*SUBL,\r
-            STATE_LEN*sizeof(float));\r
-\r
-        /* loop over sub-frames to encode */\r
-\r
-        for (subframe=0; subframe<Nfor; subframe++) {\r
-            \r
-            /* construct decoded vector */\r
-\r
-            iCBConstruct(&decresidual[(start+1+subframe)*SUBL], \r
-                cb_index+subcount*CB_NSTAGES, \r
-                gain_index+subcount*CB_NSTAGES, \r
-                mem+CB_MEML-memLfTbl[subcount], \r
-                memLfTbl[subcount], SUBL, CB_NSTAGES);\r
-\r
-            /* update memory */\r
-\r
-            memmove(mem, mem+SUBL, (CB_MEML-SUBL)*sizeof(float));\r
-            memcpy(mem+CB_MEML-SUBL, \r
-                &decresidual[(start+1+subframe)*SUBL],\r
-                SUBL*sizeof(float));\r
-\r
-            subcount++;\r
-\r
-        }\r
-\r
-    }\r
-    \r
-    /* backward prediction of sub-frames */\r
-\r
-    Nback = start-1;\r
-\r
-    if ( Nback > 0 ) {\r
-\r
-        /* setup memory */\r
-\r
-        meml_gotten = SUBL*(iLBCdec_inst->nsub+1-start);\r
-        \r
-        if ( meml_gotten > CB_MEML ) { \r
-            meml_gotten=CB_MEML;\r
-        }\r
-        for (k=0; k<meml_gotten; k++) { \r
-            mem[CB_MEML-1-k] = decresidual[(start-1)*SUBL + k];\r
-        }\r
-        memset(mem, 0, (CB_MEML-k)*sizeof(float));\r
-\r
-        /* loop over subframes to decode */\r
-\r
-\r
-\r
-        for (subframe=0; subframe<Nback; subframe++) {\r
-            \r
-            /* construct decoded vector */\r
-\r
-            iCBConstruct(&reverseDecresidual[subframe*SUBL], \r
-                cb_index+subcount*CB_NSTAGES, \r
-                gain_index+subcount*CB_NSTAGES, \r
-                mem+CB_MEML-memLfTbl[subcount], memLfTbl[subcount], \r
-                SUBL, CB_NSTAGES);\r
-\r
-            /* update memory */\r
-\r
-            memmove(mem, mem+SUBL, (CB_MEML-SUBL)*sizeof(float));\r
-            memcpy(mem+CB_MEML-SUBL, \r
-                &reverseDecresidual[subframe*SUBL],\r
-                SUBL*sizeof(float));\r
-\r
-            subcount++;\r
-        }\r
-\r
-        /* get decoded residual from reversed vector */\r
-\r
-        for (i=0; i<SUBL*Nback; i++)\r
-            decresidual[SUBL*Nback - i - 1] = \r
-            reverseDecresidual[i];\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  main decoder function \r
- *---------------------------------------------------------------*/\r
-\r
-void iLBC_decode( \r
-    float *decblock,            /* (o) decoded signal block */\r
-    unsigned char *bytes,           /* (i) encoded signal bits */\r
-    iLBC_Dec_Inst_t *iLBCdec_inst,  /* (i/o) the decoder state \r
-                                             structure */\r
-    int mode                    /* (i) 0: bad packet, PLC, \r
-                                           1: normal */\r
-){\r
-    float data[BLOCKL_MAX];\r
-    float lsfdeq[LPC_FILTERORDER*LPC_N_MAX];\r
-    float PLCresidual[BLOCKL_MAX], PLClpc[LPC_FILTERORDER + 1];\r
-    float zeros[BLOCKL_MAX], one[LPC_FILTERORDER + 1];\r
-    int k, i, start, idxForMax, pos, lastpart, ulp;\r
-    int lag, ilag;\r
-    float cc, maxcc;\r
-    int idxVec[STATE_LEN];\r
-    int check;\r
-    int gain_index[NASUB_MAX*CB_NSTAGES], \r
-        extra_gain_index[CB_NSTAGES];\r
-    int cb_index[CB_NSTAGES*NASUB_MAX], extra_cb_index[CB_NSTAGES];\r
-    int lsf_i[LSF_NSPLIT*LPC_N_MAX];\r
-    int state_first;\r
-\r
-\r
-    int last_bit;\r
-    unsigned char *pbytes;\r
-    float weightdenum[(LPC_FILTERORDER + 1)*NSUB_MAX];\r
-    int order_plus_one;\r
-    float syntdenum[NSUB_MAX*(LPC_FILTERORDER+1)]; \r
-    float decresidual[BLOCKL_MAX];\r
-    \r
-    if (mode>0) { /* the data are good */\r
-\r
-        /* decode data */\r
-        \r
-        pbytes=bytes;\r
-        pos=0;\r
-\r
-        /* Set everything to zero before decoding */\r
-\r
-        for (k=0; k<LSF_NSPLIT*LPC_N_MAX; k++) {\r
-            lsf_i[k]=0;\r
-        }\r
-        start=0;\r
-        state_first=0;\r
-        idxForMax=0;\r
-        for (k=0; k<iLBCdec_inst->state_short_len; k++) {\r
-            idxVec[k]=0;\r
-        }\r
-        for (k=0; k<CB_NSTAGES; k++) {\r
-            extra_cb_index[k]=0;\r
-        }\r
-        for (k=0; k<CB_NSTAGES; k++) {\r
-            extra_gain_index[k]=0;\r
-        }\r
-        for (i=0; i<iLBCdec_inst->nasub; i++) {\r
-            for (k=0; k<CB_NSTAGES; k++) {\r
-                cb_index[i*CB_NSTAGES+k]=0;\r
-            }\r
-        }\r
-        for (i=0; i<iLBCdec_inst->nasub; i++) {\r
-            for (k=0; k<CB_NSTAGES; k++) {\r
-                gain_index[i*CB_NSTAGES+k]=0;\r
-            }\r
-        }\r
-\r
-        /* loop over ULP classes */\r
-\r
-        for (ulp=0; ulp<3; ulp++) {\r
-        \r
-            /* LSF */\r
-            for (k=0; k<LSF_NSPLIT*iLBCdec_inst->lpc_n; k++){\r
-                unpack( &pbytes, &lastpart, \r
-                    iLBCdec_inst->ULP_inst->lsf_bits[k][ulp], &pos);\r
-                packcombine(&lsf_i[k], lastpart,\r
-                    iLBCdec_inst->ULP_inst->lsf_bits[k][ulp]);\r
-            }\r
-\r
-\r
-\r
-            /* Start block info */\r
-\r
-            unpack( &pbytes, &lastpart, \r
-                iLBCdec_inst->ULP_inst->start_bits[ulp], &pos);\r
-            packcombine(&start, lastpart, \r
-                iLBCdec_inst->ULP_inst->start_bits[ulp]);\r
-\r
-            unpack( &pbytes, &lastpart, \r
-                iLBCdec_inst->ULP_inst->startfirst_bits[ulp], &pos);\r
-            packcombine(&state_first, lastpart,\r
-                iLBCdec_inst->ULP_inst->startfirst_bits[ulp]);\r
-\r
-            unpack( &pbytes, &lastpart, \r
-                iLBCdec_inst->ULP_inst->scale_bits[ulp], &pos);\r
-            packcombine(&idxForMax, lastpart, \r
-                iLBCdec_inst->ULP_inst->scale_bits[ulp]);\r
-\r
-            for (k=0; k<iLBCdec_inst->state_short_len; k++) {\r
-                unpack( &pbytes, &lastpart, \r
-                    iLBCdec_inst->ULP_inst->state_bits[ulp], &pos);\r
-                packcombine(idxVec+k, lastpart,\r
-                    iLBCdec_inst->ULP_inst->state_bits[ulp]);\r
-            }\r
-\r
-            /* 23/22 (20ms/30ms) sample block */\r
-\r
-            for (k=0; k<CB_NSTAGES; k++) {\r
-                unpack( &pbytes, &lastpart, \r
-                    iLBCdec_inst->ULP_inst->extra_cb_index[k][ulp], \r
-                    &pos);\r
-                packcombine(extra_cb_index+k, lastpart, \r
-                    iLBCdec_inst->ULP_inst->extra_cb_index[k][ulp]);\r
-            }\r
-            for (k=0; k<CB_NSTAGES; k++) {\r
-                unpack( &pbytes, &lastpart, \r
-                    iLBCdec_inst->ULP_inst->extra_cb_gain[k][ulp], \r
-                    &pos);\r
-                packcombine(extra_gain_index+k, lastpart,\r
-                    iLBCdec_inst->ULP_inst->extra_cb_gain[k][ulp]);\r
-            }\r
-                \r
-            /* The two/four (20ms/30ms) 40 sample sub-blocks */\r
-\r
-            for (i=0; i<iLBCdec_inst->nasub; i++) {\r
-                for (k=0; k<CB_NSTAGES; k++) {\r
-                    unpack( &pbytes, &lastpart, \r
-                    iLBCdec_inst->ULP_inst->cb_index[i][k][ulp], \r
-                        &pos);\r
-                    packcombine(cb_index+i*CB_NSTAGES+k, lastpart, \r
-                    iLBCdec_inst->ULP_inst->cb_index[i][k][ulp]);\r
-                }\r
-            }\r
-            \r
-            for (i=0; i<iLBCdec_inst->nasub; i++) {\r
-\r
-\r
-                for (k=0; k<CB_NSTAGES; k++) {\r
-                    unpack( &pbytes, &lastpart, \r
-\r
-                    iLBCdec_inst->ULP_inst->cb_gain[i][k][ulp], \r
-                        &pos);\r
-                    packcombine(gain_index+i*CB_NSTAGES+k, lastpart,\r
-                        iLBCdec_inst->ULP_inst->cb_gain[i][k][ulp]);\r
-                }\r
-            }\r
-        }\r
-        /* Extract last bit. If it is 1 this indicates an \r
-           empty/lost frame */\r
-        unpack( &pbytes, &last_bit, 1, &pos);\r
-\r
-        /* Check for bit errors or empty/lost frames */\r
-        if (start<1)\r
-            mode = 0;\r
-        if (iLBCdec_inst->mode==20 && start>3)\r
-            mode = 0;\r
-        if (iLBCdec_inst->mode==30 && start>5)\r
-            mode = 0;\r
-        if (last_bit==1)\r
-            mode = 0;\r
-\r
-        if (mode==1) { /* No bit errors was detected, \r
-                          continue decoding */\r
-                \r
-            /* adjust index */\r
-            index_conv_dec(cb_index);\r
-\r
-            /* decode the lsf */\r
-\r
-            SimplelsfDEQ(lsfdeq, lsf_i, iLBCdec_inst->lpc_n);\r
-            check=LSF_check(lsfdeq, LPC_FILTERORDER, \r
-                iLBCdec_inst->lpc_n);\r
-            DecoderInterpolateLSF(syntdenum, weightdenum, \r
-                lsfdeq, LPC_FILTERORDER, iLBCdec_inst);\r
-        \r
-            Decode(iLBCdec_inst, decresidual, start, idxForMax, \r
-                idxVec, syntdenum, cb_index, gain_index, \r
-                extra_cb_index, extra_gain_index, \r
-                state_first);\r
-\r
-            /* preparing the plc for a future loss! */\r
-\r
-            doThePLC(PLCresidual, PLClpc, 0, decresidual, \r
-                syntdenum + \r
-                (LPC_FILTERORDER + 1)*(iLBCdec_inst->nsub - 1),\r
-                (*iLBCdec_inst).last_lag, iLBCdec_inst);\r
-\r
-        \r
-            memcpy(decresidual, PLCresidual, \r
-                iLBCdec_inst->blockl*sizeof(float));\r
-        }\r
-\r
-\r
-        \r
-    }\r
-    \r
-    if (mode == 0) {\r
-        /* the data is bad (either a PLC call\r
-         * was made or a severe bit error was detected)\r
-         */\r
-        \r
-        /* packet loss conceal */\r
-\r
-        memset(zeros, 0, BLOCKL_MAX*sizeof(float));\r
-        \r
-        one[0] = 1;\r
-        memset(one+1, 0, LPC_FILTERORDER*sizeof(float));\r
-        \r
-        start=0;\r
-        \r
-        doThePLC(PLCresidual, PLClpc, 1, zeros, one,\r
-            (*iLBCdec_inst).last_lag, iLBCdec_inst);\r
-        memcpy(decresidual, PLCresidual, \r
-            iLBCdec_inst->blockl*sizeof(float));\r
-        \r
-        order_plus_one = LPC_FILTERORDER + 1;\r
-        for (i = 0; i < iLBCdec_inst->nsub; i++) {\r
-            memcpy(syntdenum+(i*order_plus_one), PLClpc, \r
-                order_plus_one*sizeof(float));\r
-        }\r
-    }\r
-\r
-    if (iLBCdec_inst->use_enhancer == 1) {\r
-\r
-        /* post filtering */\r
-        \r
-        iLBCdec_inst->last_lag = \r
-            enhancerInterface(data, decresidual, iLBCdec_inst);\r
-\r
-        /* synthesis filtering */\r
-        \r
-        if (iLBCdec_inst->mode==20) {\r
-            /* Enhancer has 40 samples delay */\r
-            i=0;\r
-            syntFilter(data + i*SUBL, \r
-                iLBCdec_inst->old_syntdenum + \r
-                (i+iLBCdec_inst->nsub-1)*(LPC_FILTERORDER+1), \r
-                SUBL, iLBCdec_inst->syntMem);\r
-            for (i=1; i < iLBCdec_inst->nsub; i++) {\r
-                syntFilter(data + i*SUBL, \r
-                    syntdenum + (i-1)*(LPC_FILTERORDER+1), \r
-                    SUBL, iLBCdec_inst->syntMem);\r
-            }\r
-        } else if (iLBCdec_inst->mode==30) {\r
-            /* Enhancer has 80 samples delay */\r
-            for (i=0; i < 2; i++) {\r
-                syntFilter(data + i*SUBL, \r
-\r
-\r
-                    iLBCdec_inst->old_syntdenum + \r
-                    (i+iLBCdec_inst->nsub-2)*(LPC_FILTERORDER+1),\r
-                    SUBL, iLBCdec_inst->syntMem);\r
-            }\r
-            for (i=2; i < iLBCdec_inst->nsub; i++) {\r
-                syntFilter(data + i*SUBL, \r
-                    syntdenum + (i-2)*(LPC_FILTERORDER+1), SUBL,\r
-                    iLBCdec_inst->syntMem);\r
-            }\r
-        }\r
-\r
-    } else {\r
-\r
-        /* Find last lag */\r
-        lag = 20;\r
-        maxcc = xCorrCoef(&decresidual[BLOCKL_MAX-ENH_BLOCKL], \r
-            &decresidual[BLOCKL_MAX-ENH_BLOCKL-lag], ENH_BLOCKL);\r
-        \r
-        for (ilag=21; ilag<120; ilag++) {\r
-            cc = xCorrCoef(&decresidual[BLOCKL_MAX-ENH_BLOCKL], \r
-                &decresidual[BLOCKL_MAX-ENH_BLOCKL-ilag], \r
-                ENH_BLOCKL);\r
-        \r
-            if (cc > maxcc) {\r
-                maxcc = cc;\r
-                lag = ilag;\r
-            }\r
-        }\r
-        iLBCdec_inst->last_lag = lag;\r
-\r
-        /* copy data and run synthesis filter */\r
-\r
-        memcpy(data, decresidual, \r
-            iLBCdec_inst->blockl*sizeof(float));\r
-        for (i=0; i < iLBCdec_inst->nsub; i++) {\r
-            syntFilter(data + i*SUBL, \r
-                syntdenum + i*(LPC_FILTERORDER+1), SUBL, \r
-                iLBCdec_inst->syntMem);\r
-        }\r
-    }\r
-\r
-    /* high pass filtering on output if desired, otherwise \r
-       copy to out */\r
-\r
-    hpOutput(data, iLBCdec_inst->blockl, \r
-                decblock,iLBCdec_inst->hpomem);\r
-\r
-    /* memcpy(decblock,data,iLBCdec_inst->blockl*sizeof(float));*/\r
-\r
-    memcpy(iLBCdec_inst->old_syntdenum, syntdenum, \r
-\r
-        iLBCdec_inst->nsub*(LPC_FILTERORDER+1)*sizeof(float));\r
-\r
-    iLBCdec_inst->prev_enh_pl=0;\r
-\r
-\r
-\r
-    if (mode==0) { /* PLC was used */\r
-        iLBCdec_inst->prev_enh_pl=1;\r
-    }\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/iLBC_decode.h b/libs/codecs/ilbc/iLBC_decode.h
deleted file mode 100644 (file)
index ae9c481..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    iLBC_decode.h    \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_ILBCDECODE_H\r
-#define __iLBC_ILBCDECODE_H\r
-\r
-#include "iLBC_define.h"\r
-\r
-short initDecode(                   /* (o) Number of decoded \r
-                                           samples */\r
-    iLBC_Dec_Inst_t *iLBCdec_inst,  /* (i/o) Decoder instance */\r
-    int mode,                       /* (i) frame size mode */\r
-    int use_enhancer                /* (i) 1 to use enhancer\r
-                                           0 to run without \r
-                                             enhancer */\r
-);\r
-\r
-void iLBC_decode( \r
-    float *decblock,            /* (o) decoded signal block */\r
-    unsigned char *bytes,           /* (i) encoded signal bits */\r
-    iLBC_Dec_Inst_t *iLBCdec_inst,  /* (i/o) the decoder state \r
-                                             structure */\r
-    int mode                    /* (i) 0: bad packet, PLC, \r
-                                           1: normal */\r
-);\r
-\r
-\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/iLBC_define.h b/libs/codecs/ilbc/iLBC_define.h
deleted file mode 100644 (file)
index 85ef7e6..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    iLBC_define.h    \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-#include <string.h>\r
-\r
-#ifndef __iLBC_ILBCDEFINE_H\r
-#define __iLBC_ILBCDEFINE_H\r
-\r
-/* general codec settings */\r
-\r
-#define FS                      (float)8000.0\r
-#define BLOCKL_20MS             160\r
-#define BLOCKL_30MS             240\r
-#define BLOCKL_MAX              240\r
-#define NSUB_20MS               4\r
-#define NSUB_30MS               6\r
-#define NSUB_MAX            6\r
-#define NASUB_20MS              2\r
-#define NASUB_30MS              4\r
-#define NASUB_MAX               4\r
-#define SUBL                40\r
-#define STATE_LEN               80\r
-#define STATE_SHORT_LEN_30MS    58\r
-#define STATE_SHORT_LEN_20MS    57\r
-\r
-/* LPC settings */\r
-\r
-#define LPC_FILTERORDER         10\r
-#define LPC_CHIRP_SYNTDENUM     (float)0.9025\r
-#define LPC_CHIRP_WEIGHTDENUM   (float)0.4222\r
-#define LPC_LOOKBACK        60\r
-#define LPC_N_20MS              1\r
-#define LPC_N_30MS              2\r
-#define LPC_N_MAX               2\r
-#define LPC_ASYMDIFF        20\r
-#define LPC_BW                  (float)60.0\r
-#define LPC_WN                  (float)1.0001\r
-#define LSF_NSPLIT              3\r
-\r
-#define LSF_NUMBER_OF_STEPS     4\r
-#define LPC_HALFORDER           (LPC_FILTERORDER/2)\r
-\r
-/* cb settings */\r
-\r
-#define CB_NSTAGES              3\r
-#define CB_EXPAND               2\r
-#define CB_MEML                 147\r
-#define CB_FILTERLEN        2*4\r
-#define CB_HALFFILTERLEN    4\r
-#define CB_RESRANGE             34\r
-#define CB_MAXGAIN              (float)1.3 \r
-\r
-/* enhancer */\r
-\r
-#define ENH_BLOCKL              80  /* block length */\r
-#define ENH_BLOCKL_HALF         (ENH_BLOCKL/2)\r
-#define ENH_HL                  3   /* 2*ENH_HL+1 is number blocks\r
-                                       in said second sequence */\r
-#define ENH_SLOP            2   /* max difference estimated and\r
-                                       correct pitch period */\r
-#define ENH_PLOCSL              20  /* pitch-estimates and pitch-\r
-                                       locations buffer length */\r
-#define ENH_OVERHANG        2\r
-#define ENH_UPS0            4   /* upsampling rate */\r
-#define ENH_FL0                 3   /* 2*FLO+1 is the length of \r
-                                       each filter */\r
-#define ENH_VECTL               (ENH_BLOCKL+2*ENH_FL0)\r
-#define ENH_CORRDIM             (2*ENH_SLOP+1)\r
-#define ENH_NBLOCKS             (BLOCKL_MAX/ENH_BLOCKL)\r
-#define ENH_NBLOCKS_EXTRA       5\r
-#define ENH_NBLOCKS_TOT         8   /* ENH_NBLOCKS + \r
-                                       ENH_NBLOCKS_EXTRA */\r
-#define ENH_BUFL            (ENH_NBLOCKS_TOT)*ENH_BLOCKL\r
-#define ENH_ALPHA0              (float)0.05\r
-\r
-/* Down sampling */\r
-\r
-#define FILTERORDER_DS          7\r
-#define DELAY_DS            3\r
-#define FACTOR_DS               2\r
-\r
-/* bit stream defs */\r
-\r
-#define NO_OF_BYTES_20MS    38\r
-#define NO_OF_BYTES_30MS    50\r
-#define NO_OF_WORDS_20MS    19\r
-#define NO_OF_WORDS_30MS    25\r
-#define STATE_BITS              3\r
-#define BYTE_LEN            8\r
-#define ULP_CLASSES             3\r
-\r
-/* help parameters */\r
-\r
-\r
-#define FLOAT_MAX               (float)1.0e37\r
-#define EPS                     (float)2.220446049250313e-016\r
-#define PI                      (float)3.14159265358979323846\r
-#define MIN_SAMPLE              -32768\r
-#define MAX_SAMPLE              32767\r
-#define TWO_PI                  (float)6.283185307\r
-#define PI2                     (float)0.159154943\r
-\r
-/* type definition encoder instance */\r
-typedef struct iLBC_ULP_Inst_t_ {\r
-    int lsf_bits[6][ULP_CLASSES+2];\r
-    int start_bits[ULP_CLASSES+2];\r
-    int startfirst_bits[ULP_CLASSES+2];\r
-    int scale_bits[ULP_CLASSES+2];\r
-    int state_bits[ULP_CLASSES+2];\r
-    int extra_cb_index[CB_NSTAGES][ULP_CLASSES+2];\r
-    int extra_cb_gain[CB_NSTAGES][ULP_CLASSES+2];\r
-    int cb_index[NSUB_MAX][CB_NSTAGES][ULP_CLASSES+2];\r
-    int cb_gain[NSUB_MAX][CB_NSTAGES][ULP_CLASSES+2];\r
-} iLBC_ULP_Inst_t;\r
-\r
-/* type definition encoder instance */\r
-typedef struct iLBC_Enc_Inst_t_ {\r
-\r
-    /* flag for frame size mode */\r
-    int mode;\r
-\r
-    /* basic parameters for different frame sizes */\r
-    int blockl;\r
-    int nsub;\r
-    int nasub;\r
-    int no_of_bytes, no_of_words;\r
-    int lpc_n;\r
-    int state_short_len;\r
-    const iLBC_ULP_Inst_t *ULP_inst;\r
-\r
-    /* analysis filter state */\r
-    float anaMem[LPC_FILTERORDER];\r
-\r
-    /* old lsf parameters for interpolation */\r
-    float lsfold[LPC_FILTERORDER];\r
-    float lsfdeqold[LPC_FILTERORDER];\r
-\r
-    /* signal buffer for LP analysis */\r
-    float lpc_buffer[LPC_LOOKBACK + BLOCKL_MAX];\r
-\r
-    /* state of input HP filter */\r
-    float hpimem[4];\r
-\r
-} iLBC_Enc_Inst_t;\r
-\r
-/* type definition decoder instance */\r
-typedef struct iLBC_Dec_Inst_t_ {\r
-\r
-\r
-    /* flag for frame size mode */\r
-    int mode;\r
-\r
-    /* basic parameters for different frame sizes */\r
-    int blockl;\r
-    int nsub;\r
-    int nasub;\r
-    int no_of_bytes, no_of_words;\r
-    int lpc_n;\r
-    int state_short_len;\r
-    const iLBC_ULP_Inst_t *ULP_inst;\r
-\r
-    /* synthesis filter state */\r
-    float syntMem[LPC_FILTERORDER];\r
-\r
-    /* old LSF for interpolation */\r
-    float lsfdeqold[LPC_FILTERORDER];\r
-\r
-    /* pitch lag estimated in enhancer and used in PLC */\r
-    int last_lag;\r
-\r
-    /* PLC state information */\r
-    int prevLag, consPLICount, prevPLI, prev_enh_pl;\r
-    float prevLpc[LPC_FILTERORDER+1];\r
-    float prevResidual[NSUB_MAX*SUBL];\r
-    float per;\r
-    unsigned long seed;\r
-\r
-    /* previous synthesis filter parameters */\r
-    float old_syntdenum[(LPC_FILTERORDER + 1)*NSUB_MAX];\r
-\r
-    /* state of output HP filter */\r
-    float hpomem[4];\r
-\r
-    /* enhancer state information */\r
-    int use_enhancer;\r
-    float enh_buf[ENH_BUFL];\r
-    float enh_period[ENH_NBLOCKS_TOT];\r
-\r
-} iLBC_Dec_Inst_t;\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/iLBC_encode.c b/libs/codecs/ilbc/iLBC_encode.c
deleted file mode 100644 (file)
index e874242..0000000
+++ /dev/null
@@ -1,514 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    iLBC_encode.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <math.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-\r
-#include "iLBC_define.h"\r
-#include "iLBC_encode.h"\r
-#include "LPCencode.h"\r
-#include "FrameClassify.h"\r
-#include "StateSearchW.h"\r
-#include "StateConstructW.h"\r
-#include "helpfun.h"\r
-#include "constants.h"\r
-#include "packing.h"\r
-#include "iCBSearch.h"\r
-#include "iCBConstruct.h"\r
-#include "hpInput.h"\r
-#include "anaFilter.h"\r
-#include "syntFilter.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  Initiation of encoder instance.\r
- *---------------------------------------------------------------*/\r
-\r
-short initEncode(                   /* (o) Number of bytes \r
-                                           encoded */\r
-    iLBC_Enc_Inst_t *iLBCenc_inst,  /* (i/o) Encoder instance */\r
-    int mode                    /* (i) frame size mode */\r
-){\r
-    iLBCenc_inst->mode = mode;\r
-    if (mode==30) {\r
-        iLBCenc_inst->blockl = BLOCKL_30MS;\r
-        iLBCenc_inst->nsub = NSUB_30MS;\r
-\r
-\r
-        iLBCenc_inst->nasub = NASUB_30MS;\r
-        iLBCenc_inst->lpc_n = LPC_N_30MS;\r
-        iLBCenc_inst->no_of_bytes = NO_OF_BYTES_30MS;\r
-        iLBCenc_inst->no_of_words = NO_OF_WORDS_30MS;\r
-        iLBCenc_inst->state_short_len=STATE_SHORT_LEN_30MS;\r
-        /* ULP init */\r
-        iLBCenc_inst->ULP_inst=&ULP_30msTbl;\r
-    }\r
-    else if (mode==20) {\r
-        iLBCenc_inst->blockl = BLOCKL_20MS;\r
-        iLBCenc_inst->nsub = NSUB_20MS;\r
-        iLBCenc_inst->nasub = NASUB_20MS;\r
-        iLBCenc_inst->lpc_n = LPC_N_20MS;\r
-        iLBCenc_inst->no_of_bytes = NO_OF_BYTES_20MS;\r
-        iLBCenc_inst->no_of_words = NO_OF_WORDS_20MS;\r
-        iLBCenc_inst->state_short_len=STATE_SHORT_LEN_20MS;\r
-        /* ULP init */\r
-        iLBCenc_inst->ULP_inst=&ULP_20msTbl;\r
-    }\r
-    else {\r
-        exit(2);\r
-    }\r
-\r
-    memset((*iLBCenc_inst).anaMem, 0, \r
-        LPC_FILTERORDER*sizeof(float));\r
-    memcpy((*iLBCenc_inst).lsfold, lsfmeanTbl,\r
-        LPC_FILTERORDER*sizeof(float));\r
-    memcpy((*iLBCenc_inst).lsfdeqold, lsfmeanTbl,\r
-        LPC_FILTERORDER*sizeof(float));\r
-    memset((*iLBCenc_inst).lpc_buffer, 0, \r
-        (LPC_LOOKBACK+BLOCKL_MAX)*sizeof(float));\r
-    memset((*iLBCenc_inst).hpimem, 0, 4*sizeof(float));\r
-\r
-    return (iLBCenc_inst->no_of_bytes);\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  main encoder function \r
- *---------------------------------------------------------------*/\r
-\r
-void iLBC_encode(\r
-    unsigned char *bytes,           /* (o) encoded data bits iLBC */\r
-    float *block,                   /* (o) speech vector to \r
-                                           encode */\r
-    iLBC_Enc_Inst_t *iLBCenc_inst   /* (i/o) the general encoder \r
-                                           state */\r
-){\r
-    \r
-    float data[BLOCKL_MAX];\r
-    float residual[BLOCKL_MAX], reverseResidual[BLOCKL_MAX];\r
-\r
-    int start, idxForMax, idxVec[STATE_LEN];\r
-    float reverseDecresidual[BLOCKL_MAX], mem[CB_MEML];\r
-    int n, k, meml_gotten, Nfor, Nback, i, pos;\r
-\r
-\r
-    int gain_index[CB_NSTAGES*NASUB_MAX], \r
-        extra_gain_index[CB_NSTAGES];\r
-    int cb_index[CB_NSTAGES*NASUB_MAX],extra_cb_index[CB_NSTAGES];\r
-    int lsf_i[LSF_NSPLIT*LPC_N_MAX];\r
-    unsigned char *pbytes;\r
-    int diff, start_pos, state_first;\r
-    float en1, en2;\r
-    int index, ulp, firstpart;\r
-    int subcount, subframe;\r
-    float weightState[LPC_FILTERORDER];\r
-    float syntdenum[NSUB_MAX*(LPC_FILTERORDER+1)]; \r
-    float weightdenum[NSUB_MAX*(LPC_FILTERORDER+1)]; \r
-    float decresidual[BLOCKL_MAX];\r
-\r
-    /* high pass filtering of input signal if such is not done \r
-           prior to calling this function */\r
-\r
-    hpInput(block, iLBCenc_inst->blockl, \r
-                data, (*iLBCenc_inst).hpimem);\r
-\r
-    /* otherwise simply copy */\r
-\r
-    /*memcpy(data,block,iLBCenc_inst->blockl*sizeof(float));*/\r
-        \r
-    /* LPC of hp filtered input data */\r
-\r
-    LPCencode(syntdenum, weightdenum, lsf_i, data, iLBCenc_inst);\r
-\r
-\r
-    /* inverse filter to get residual */\r
-\r
-    for (n=0; n<iLBCenc_inst->nsub; n++) {\r
-        anaFilter(&data[n*SUBL], &syntdenum[n*(LPC_FILTERORDER+1)], \r
-            SUBL, &residual[n*SUBL], iLBCenc_inst->anaMem);\r
-    }\r
-\r
-    /* find state location */\r
-\r
-    start = FrameClassify(iLBCenc_inst, residual);\r
-    \r
-    /* check if state should be in first or last part of the \r
-    two subframes */\r
-\r
-    diff = STATE_LEN - iLBCenc_inst->state_short_len;\r
-    en1 = 0;\r
-    index = (start-1)*SUBL;\r
-    for (i = 0; i < iLBCenc_inst->state_short_len; i++) {\r
-        en1 += residual[index+i]*residual[index+i];\r
-    }\r
-    en2 = 0;\r
-    index = (start-1)*SUBL+diff;\r
-    for (i = 0; i < iLBCenc_inst->state_short_len; i++) {\r
-        en2 += residual[index+i]*residual[index+i];\r
-    }\r
-\r
-\r
-    \r
-    \r
-    if (en1 > en2) {\r
-        state_first = 1;\r
-        start_pos = (start-1)*SUBL;\r
-    } else {\r
-        state_first = 0;\r
-        start_pos = (start-1)*SUBL + diff;\r
-    }\r
-\r
-    /* scalar quantization of state */\r
-\r
-    StateSearchW(iLBCenc_inst, &residual[start_pos], \r
-        &syntdenum[(start-1)*(LPC_FILTERORDER+1)], \r
-        &weightdenum[(start-1)*(LPC_FILTERORDER+1)], &idxForMax, \r
-        idxVec, iLBCenc_inst->state_short_len, state_first);\r
-\r
-    StateConstructW(idxForMax, idxVec, \r
-        &syntdenum[(start-1)*(LPC_FILTERORDER+1)], \r
-        &decresidual[start_pos], iLBCenc_inst->state_short_len);\r
-\r
-    /* predictive quantization in state */\r
-    \r
-    if (state_first) { /* put adaptive part in the end */\r
-        \r
-        /* setup memory */\r
-\r
-        memset(mem, 0, \r
-            (CB_MEML-iLBCenc_inst->state_short_len)*sizeof(float));\r
-        memcpy(mem+CB_MEML-iLBCenc_inst->state_short_len, \r
-            decresidual+start_pos, \r
-            iLBCenc_inst->state_short_len*sizeof(float));\r
-        memset(weightState, 0, LPC_FILTERORDER*sizeof(float));\r
-\r
-        /* encode sub-frames */\r
-\r
-        iCBSearch(iLBCenc_inst, extra_cb_index, extra_gain_index, \r
-            &residual[start_pos+iLBCenc_inst->state_short_len], \r
-            mem+CB_MEML-stMemLTbl,\r
-            stMemLTbl, diff, CB_NSTAGES, \r
-            &weightdenum[start*(LPC_FILTERORDER+1)], \r
-            weightState, 0);\r
-\r
-        /* construct decoded vector */\r
-\r
-        iCBConstruct(\r
-            &decresidual[start_pos+iLBCenc_inst->state_short_len],\r
-            extra_cb_index, extra_gain_index, \r
-            mem+CB_MEML-stMemLTbl, \r
-            stMemLTbl, diff, CB_NSTAGES);\r
-    \r
-    } \r
-    else { /* put adaptive part in the beginning */\r
-        \r
-\r
-\r
-        /* create reversed vectors for prediction */\r
-\r
-        for (k=0; k<diff; k++) {\r
-            reverseResidual[k] = residual[(start+1)*SUBL-1\r
-                -(k+iLBCenc_inst->state_short_len)];\r
-        }\r
-        \r
-        /* setup memory */\r
-\r
-        meml_gotten = iLBCenc_inst->state_short_len;\r
-        for (k=0; k<meml_gotten; k++) { \r
-            mem[CB_MEML-1-k] = decresidual[start_pos + k];\r
-        } \r
-        memset(mem, 0, (CB_MEML-k)*sizeof(float));\r
-        memset(weightState, 0, LPC_FILTERORDER*sizeof(float));\r
-        \r
-        /* encode sub-frames */\r
-\r
-        iCBSearch(iLBCenc_inst, extra_cb_index, extra_gain_index, \r
-            reverseResidual, mem+CB_MEML-stMemLTbl, stMemLTbl, \r
-            diff, CB_NSTAGES, \r
-            &weightdenum[(start-1)*(LPC_FILTERORDER+1)], \r
-            weightState, 0);\r
-\r
-        /* construct decoded vector */\r
-\r
-        iCBConstruct(reverseDecresidual, extra_cb_index, \r
-            extra_gain_index, mem+CB_MEML-stMemLTbl, stMemLTbl, \r
-            diff, CB_NSTAGES);\r
-        \r
-        /* get decoded residual from reversed vector */\r
-\r
-        for (k=0; k<diff; k++) {\r
-            decresidual[start_pos-1-k] = reverseDecresidual[k];\r
-        }\r
-    }\r
-\r
-    /* counter for predicted sub-frames */\r
-\r
-    subcount=0;\r
-\r
-    /* forward prediction of sub-frames */\r
-\r
-    Nfor = iLBCenc_inst->nsub-start-1;\r
-\r
-    \r
-    if ( Nfor > 0 ) {\r
-        \r
-        /* setup memory */\r
-\r
-        memset(mem, 0, (CB_MEML-STATE_LEN)*sizeof(float));\r
-        memcpy(mem+CB_MEML-STATE_LEN, decresidual+(start-1)*SUBL, \r
-            STATE_LEN*sizeof(float));\r
-        memset(weightState, 0, LPC_FILTERORDER*sizeof(float));\r
-\r
-\r
-\r
-        /* loop over sub-frames to encode */\r
-\r
-        for (subframe=0; subframe<Nfor; subframe++) {\r
-\r
-            /* encode sub-frame */\r
-\r
-            iCBSearch(iLBCenc_inst, cb_index+subcount*CB_NSTAGES, \r
-                gain_index+subcount*CB_NSTAGES, \r
-                &residual[(start+1+subframe)*SUBL], \r
-                mem+CB_MEML-memLfTbl[subcount], \r
-                memLfTbl[subcount], SUBL, CB_NSTAGES, \r
-                &weightdenum[(start+1+subframe)*\r
-                            (LPC_FILTERORDER+1)],\r
-                weightState, subcount+1);\r
-\r
-            /* construct decoded vector */\r
-\r
-            iCBConstruct(&decresidual[(start+1+subframe)*SUBL], \r
-                cb_index+subcount*CB_NSTAGES, \r
-                gain_index+subcount*CB_NSTAGES, \r
-                mem+CB_MEML-memLfTbl[subcount], \r
-                memLfTbl[subcount], SUBL, CB_NSTAGES);\r
-\r
-            /* update memory */\r
-\r
-            memmove(mem, mem+SUBL, (CB_MEML-SUBL)*sizeof(float));\r
-            memcpy(mem+CB_MEML-SUBL, \r
-                &decresidual[(start+1+subframe)*SUBL], \r
-                SUBL*sizeof(float));\r
-            memset(weightState, 0, LPC_FILTERORDER*sizeof(float));\r
-\r
-            subcount++;\r
-        }\r
-    }\r
-    \r
-\r
-    /* backward prediction of sub-frames */\r
-\r
-    Nback = start-1;\r
-\r
-    \r
-    if ( Nback > 0 ) {\r
-               \r
-        /* create reverse order vectors */\r
-\r
-        for (n=0; n<Nback; n++) {\r
-            for (k=0; k<SUBL; k++) {\r
-                reverseResidual[n*SUBL+k] = \r
-                    residual[(start-1)*SUBL-1-n*SUBL-k];\r
-                reverseDecresidual[n*SUBL+k] = \r
-                    decresidual[(start-1)*SUBL-1-n*SUBL-k];\r
-            }\r
-        }\r
-\r
-\r
-\r
-        /* setup memory */\r
-\r
-        meml_gotten = SUBL*(iLBCenc_inst->nsub+1-start);\r
-\r
-        \r
-        if ( meml_gotten > CB_MEML ) { \r
-            meml_gotten=CB_MEML;\r
-        }\r
-        for (k=0; k<meml_gotten; k++) { \r
-            mem[CB_MEML-1-k] = decresidual[(start-1)*SUBL + k];\r
-        } \r
-        memset(mem, 0, (CB_MEML-k)*sizeof(float));\r
-        memset(weightState, 0, LPC_FILTERORDER*sizeof(float));\r
-\r
-        /* loop over sub-frames to encode */\r
-\r
-        for (subframe=0; subframe<Nback; subframe++) {\r
-            \r
-            /* encode sub-frame */\r
-\r
-            iCBSearch(iLBCenc_inst, cb_index+subcount*CB_NSTAGES, \r
-                gain_index+subcount*CB_NSTAGES, \r
-                &reverseResidual[subframe*SUBL], \r
-                mem+CB_MEML-memLfTbl[subcount], \r
-                memLfTbl[subcount], SUBL, CB_NSTAGES, \r
-                &weightdenum[(start-2-subframe)*\r
-                            (LPC_FILTERORDER+1)], \r
-                weightState, subcount+1);\r
-\r
-            /* construct decoded vector */\r
-\r
-            iCBConstruct(&reverseDecresidual[subframe*SUBL], \r
-                cb_index+subcount*CB_NSTAGES, \r
-                gain_index+subcount*CB_NSTAGES, \r
-                mem+CB_MEML-memLfTbl[subcount], \r
-                memLfTbl[subcount], SUBL, CB_NSTAGES);\r
-\r
-            /* update memory */\r
-\r
-            memmove(mem, mem+SUBL, (CB_MEML-SUBL)*sizeof(float));\r
-            memcpy(mem+CB_MEML-SUBL, \r
-                &reverseDecresidual[subframe*SUBL],\r
-                SUBL*sizeof(float));\r
-            memset(weightState, 0, LPC_FILTERORDER*sizeof(float));\r
-\r
-            subcount++;\r
-\r
-        }\r
-\r
-        /* get decoded residual from reversed vector */\r
-\r
-        for (i=0; i<SUBL*Nback; i++) {\r
-            decresidual[SUBL*Nback - i - 1] = \r
-\r
-\r
-                reverseDecresidual[i];\r
-        }\r
-    }\r
-    /* end encoding part */\r
-\r
-    /* adjust index */\r
-    index_conv_enc(cb_index);\r
-\r
-    /* pack bytes */\r
-\r
-    pbytes=bytes;\r
-    pos=0;\r
-\r
-    /* loop over the 3 ULP classes */\r
-\r
-    for (ulp=0; ulp<3; ulp++) {\r
-    \r
-        /* LSF */\r
-        for (k=0; k<LSF_NSPLIT*iLBCenc_inst->lpc_n; k++) {\r
-            packsplit(&lsf_i[k], &firstpart, &lsf_i[k], \r
-                iLBCenc_inst->ULP_inst->lsf_bits[k][ulp], \r
-                iLBCenc_inst->ULP_inst->lsf_bits[k][ulp]+\r
-                iLBCenc_inst->ULP_inst->lsf_bits[k][ulp+1]+\r
-                iLBCenc_inst->ULP_inst->lsf_bits[k][ulp+2]);\r
-            dopack( &pbytes, firstpart, \r
-                iLBCenc_inst->ULP_inst->lsf_bits[k][ulp], &pos);\r
-        }\r
-\r
-        /* Start block info */\r
-\r
-        packsplit(&start, &firstpart, &start, \r
-            iLBCenc_inst->ULP_inst->start_bits[ulp], \r
-            iLBCenc_inst->ULP_inst->start_bits[ulp]+\r
-            iLBCenc_inst->ULP_inst->start_bits[ulp+1]+\r
-            iLBCenc_inst->ULP_inst->start_bits[ulp+2]);\r
-        dopack( &pbytes, firstpart, \r
-            iLBCenc_inst->ULP_inst->start_bits[ulp], &pos);\r
-\r
-        packsplit(&state_first, &firstpart, &state_first, \r
-            iLBCenc_inst->ULP_inst->startfirst_bits[ulp], \r
-            iLBCenc_inst->ULP_inst->startfirst_bits[ulp]+\r
-            iLBCenc_inst->ULP_inst->startfirst_bits[ulp+1]+\r
-            iLBCenc_inst->ULP_inst->startfirst_bits[ulp+2]);\r
-        dopack( &pbytes, firstpart, \r
-            iLBCenc_inst->ULP_inst->startfirst_bits[ulp], &pos);\r
-\r
-        packsplit(&idxForMax, &firstpart, &idxForMax, \r
-            iLBCenc_inst->ULP_inst->scale_bits[ulp], \r
-            iLBCenc_inst->ULP_inst->scale_bits[ulp]+\r
-            iLBCenc_inst->ULP_inst->scale_bits[ulp+1]+\r
-            iLBCenc_inst->ULP_inst->scale_bits[ulp+2]);\r
-        dopack( &pbytes, firstpart, \r
-            iLBCenc_inst->ULP_inst->scale_bits[ulp], &pos);\r
-\r
-\r
-\r
-        for (k=0; k<iLBCenc_inst->state_short_len; k++) {\r
-            packsplit(idxVec+k, &firstpart, idxVec+k, \r
-                iLBCenc_inst->ULP_inst->state_bits[ulp], \r
-                iLBCenc_inst->ULP_inst->state_bits[ulp]+\r
-                iLBCenc_inst->ULP_inst->state_bits[ulp+1]+\r
-                iLBCenc_inst->ULP_inst->state_bits[ulp+2]);\r
-            dopack( &pbytes, firstpart, \r
-                iLBCenc_inst->ULP_inst->state_bits[ulp], &pos);\r
-        }\r
-\r
-        /* 23/22 (20ms/30ms) sample block */\r
-\r
-        for (k=0;k<CB_NSTAGES;k++) {\r
-            packsplit(extra_cb_index+k, &firstpart, \r
-                extra_cb_index+k, \r
-                iLBCenc_inst->ULP_inst->extra_cb_index[k][ulp], \r
-                iLBCenc_inst->ULP_inst->extra_cb_index[k][ulp]+\r
-                iLBCenc_inst->ULP_inst->extra_cb_index[k][ulp+1]+\r
-                iLBCenc_inst->ULP_inst->extra_cb_index[k][ulp+2]);\r
-            dopack( &pbytes, firstpart, \r
-                iLBCenc_inst->ULP_inst->extra_cb_index[k][ulp], \r
-                &pos);\r
-        }\r
-\r
-        for (k=0;k<CB_NSTAGES;k++) {\r
-            packsplit(extra_gain_index+k, &firstpart, \r
-                extra_gain_index+k, \r
-                iLBCenc_inst->ULP_inst->extra_cb_gain[k][ulp], \r
-                iLBCenc_inst->ULP_inst->extra_cb_gain[k][ulp]+\r
-                iLBCenc_inst->ULP_inst->extra_cb_gain[k][ulp+1]+\r
-                iLBCenc_inst->ULP_inst->extra_cb_gain[k][ulp+2]);\r
-            dopack( &pbytes, firstpart, \r
-                iLBCenc_inst->ULP_inst->extra_cb_gain[k][ulp], \r
-                &pos);\r
-        }\r
-            \r
-        /* The two/four (20ms/30ms) 40 sample sub-blocks */\r
-\r
-        for (i=0; i<iLBCenc_inst->nasub; i++) {\r
-            for (k=0; k<CB_NSTAGES; k++) {\r
-                packsplit(cb_index+i*CB_NSTAGES+k, &firstpart, \r
-                    cb_index+i*CB_NSTAGES+k, \r
-                    iLBCenc_inst->ULP_inst->cb_index[i][k][ulp], \r
-                    iLBCenc_inst->ULP_inst->cb_index[i][k][ulp]+\r
-                    iLBCenc_inst->ULP_inst->cb_index[i][k][ulp+1]+\r
-                    iLBCenc_inst->ULP_inst->cb_index[i][k][ulp+2]);\r
-                dopack( &pbytes, firstpart, \r
-                    iLBCenc_inst->ULP_inst->cb_index[i][k][ulp], \r
-                    &pos);\r
-            }\r
-        }\r
-        \r
-        for (i=0; i<iLBCenc_inst->nasub; i++) {\r
-            for (k=0; k<CB_NSTAGES; k++) {\r
-\r
-\r
-                packsplit(gain_index+i*CB_NSTAGES+k, &firstpart, \r
-                    gain_index+i*CB_NSTAGES+k, \r
-                    iLBCenc_inst->ULP_inst->cb_gain[i][k][ulp], \r
-                    iLBCenc_inst->ULP_inst->cb_gain[i][k][ulp]+\r
-                    iLBCenc_inst->ULP_inst->cb_gain[i][k][ulp+1]+\r
-                    iLBCenc_inst->ULP_inst->cb_gain[i][k][ulp+2]);\r
-                dopack( &pbytes, firstpart, \r
-                    iLBCenc_inst->ULP_inst->cb_gain[i][k][ulp], \r
-                    &pos);\r
-            }\r
-        }\r
-    }\r
-\r
-    /* set the last bit to zero (otherwise the decoder \r
-       will treat it as a lost frame) */\r
-    dopack( &pbytes, 0, 1, &pos);\r
-}\r
-\r
-\r
-\r
diff --git a/libs/codecs/ilbc/iLBC_encode.h b/libs/codecs/ilbc/iLBC_encode.h
deleted file mode 100644 (file)
index dc46790..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    iLBC_encode.h    \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_ILBCENCODE_H\r
-#define __iLBC_ILBCENCODE_H\r
-\r
-#include "iLBC_define.h"\r
-\r
-short initEncode(                   /* (o) Number of bytes \r
-                                           encoded */\r
-    iLBC_Enc_Inst_t *iLBCenc_inst,  /* (i/o) Encoder instance */\r
-    int mode                    /* (i) frame size mode */\r
-);\r
-\r
-void iLBC_encode(\r
-\r
-\r
-    unsigned char *bytes,           /* (o) encoded data bits iLBC */\r
-    float *block,                   /* (o) speech vector to \r
-                                           encode */\r
-    iLBC_Enc_Inst_t *iLBCenc_inst   /* (i/o) the general encoder \r
-                                           state */\r
-);\r
-\r
-#endif\r
-\r
-\r
-\r
diff --git a/libs/codecs/ilbc/lsf.c b/libs/codecs/ilbc/lsf.c
deleted file mode 100644 (file)
index 1be19da..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    lsf.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <string.h>\r
-#include <math.h>\r
-\r
-#include "iLBC_define.h"\r
-#include "lsf.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  conversion from lpc coefficients to lsf coefficients \r
- *---------------------------------------------------------------*/\r
-\r
-void a2lsf( \r
-    float *freq,/* (o) lsf coefficients */\r
-    float *a    /* (i) lpc coefficients */\r
-){\r
-    float steps[LSF_NUMBER_OF_STEPS] = \r
-        {(float)0.00635, (float)0.003175, (float)0.0015875, \r
-        (float)0.00079375};\r
-    float step;\r
-    int step_idx;\r
-    int lsp_index;  \r
-    float p[LPC_HALFORDER];\r
-    float q[LPC_HALFORDER];\r
-    float p_pre[LPC_HALFORDER];\r
-\r
-\r
-    float q_pre[LPC_HALFORDER];\r
-    float old_p, old_q, *old;\r
-    float *pq_coef; \r
-    float omega, old_omega;\r
-    int i;\r
-    float hlp, hlp1, hlp2, hlp3, hlp4, hlp5;\r
-\r
-    for (i=0; i<LPC_HALFORDER; i++) {\r
-        p[i] = (float)-1.0 * (a[i + 1] + a[LPC_FILTERORDER - i]);\r
-        q[i] = a[LPC_FILTERORDER - i] - a[i + 1];\r
-    }\r
-    \r
-    p_pre[0] = (float)-1.0 - p[0];\r
-    p_pre[1] = - p_pre[0] - p[1];\r
-    p_pre[2] = - p_pre[1] - p[2];\r
-    p_pre[3] = - p_pre[2] - p[3];\r
-    p_pre[4] = - p_pre[3] - p[4];\r
-    p_pre[4] = p_pre[4] / 2;\r
-    \r
-    q_pre[0] = (float)1.0 - q[0];\r
-    q_pre[1] = q_pre[0] - q[1];\r
-    q_pre[2] = q_pre[1] - q[2];\r
-    q_pre[3] = q_pre[2] - q[3];\r
-    q_pre[4] = q_pre[3] - q[4];\r
-    q_pre[4] = q_pre[4] / 2;\r
-    \r
-    omega = 0.0;\r
-    old_omega = 0.0;\r
-\r
-    old_p = FLOAT_MAX;\r
-    old_q = FLOAT_MAX;\r
-    \r
-    /* Here we loop through lsp_index to find all the \r
-       LPC_FILTERORDER roots for omega. */  \r
-\r
-    for (lsp_index = 0; lsp_index<LPC_FILTERORDER; lsp_index++) {\r
-        \r
-        /* Depending on lsp_index being even or odd, we \r
-        alternatively solve the roots for the two LSP equations. */\r
-\r
-        \r
-        if ((lsp_index & 0x1) == 0) {\r
-            pq_coef = p_pre;\r
-            old = &old_p;\r
-        } else {\r
-            pq_coef = q_pre;\r
-            old = &old_q;\r
-        }\r
-        \r
-        /* Start with low resolution grid */\r
-\r
-        for (step_idx = 0, step = steps[step_idx]; \r
-            step_idx < LSF_NUMBER_OF_STEPS;){\r
-            \r
-\r
-\r
-            /*  cos(10piw) + pq(0)cos(8piw) + pq(1)cos(6piw) + \r
-            pq(2)cos(4piw) + pq(3)cod(2piw) + pq(4) */\r
-\r
-            hlp = (float)cos(omega * TWO_PI);\r
-            hlp1 = (float)2.0 * hlp + pq_coef[0];\r
-            hlp2 = (float)2.0 * hlp * hlp1 - (float)1.0 + \r
-                pq_coef[1];\r
-            hlp3 = (float)2.0 * hlp * hlp2 - hlp1 + pq_coef[2];\r
-            hlp4 = (float)2.0 * hlp * hlp3 - hlp2 + pq_coef[3];\r
-            hlp5 = hlp * hlp4 - hlp3 + pq_coef[4];\r
-            \r
-            \r
-            if (((hlp5 * (*old)) <= 0.0) || (omega >= 0.5)){\r
-                \r
-                if (step_idx == (LSF_NUMBER_OF_STEPS - 1)){\r
-                    \r
-                    if (fabs(hlp5) >= fabs(*old)) {\r
-                        freq[lsp_index] = omega - step;\r
-                    } else {\r
-                        freq[lsp_index] = omega;\r
-                    }   \r
-                    \r
-                    \r
-                    if ((*old) >= 0.0){\r
-                        *old = (float)-1.0 * FLOAT_MAX;\r
-                    } else {\r
-                        *old = FLOAT_MAX;\r
-                    }\r
-\r
-                    omega = old_omega;\r
-                    step_idx = 0;\r
-                    \r
-                    step_idx = LSF_NUMBER_OF_STEPS;\r
-                } else {\r
-                    \r
-                    if (step_idx == 0) {\r
-                        old_omega = omega;\r
-                    }\r
-\r
-                    step_idx++;\r
-                    omega -= steps[step_idx];\r
-\r
-                    /* Go back one grid step */\r
-\r
-                    step = steps[step_idx];\r
-                }\r
-            } else {\r
-                \r
-            /* increment omega until they are of different sign, \r
-            and we know there is at least one root between omega \r
-            and old_omega */\r
-                *old = hlp5;\r
-                omega += step;\r
-            }\r
-\r
-\r
-        }\r
-    }\r
-\r
-    for (i = 0; i<LPC_FILTERORDER; i++) {\r
-        freq[i] = freq[i] * TWO_PI;\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  conversion from lsf coefficients to lpc coefficients \r
- *---------------------------------------------------------------*/\r
-\r
-void lsf2a( \r
-    float *a_coef,  /* (o) lpc coefficients */\r
-    float *freq     /* (i) lsf coefficients */\r
-){\r
-    int i, j;\r
-    float hlp;\r
-    float p[LPC_HALFORDER], q[LPC_HALFORDER];\r
-    float a[LPC_HALFORDER + 1], a1[LPC_HALFORDER],\r
-        a2[LPC_HALFORDER];\r
-    float b[LPC_HALFORDER + 1], b1[LPC_HALFORDER], \r
-        b2[LPC_HALFORDER];\r
-\r
-    for (i=0; i<LPC_FILTERORDER; i++) {\r
-        freq[i] = freq[i] * PI2;\r
-    }\r
-\r
-    /* Check input for ill-conditioned cases.  This part is not \r
-    found in the TIA standard.  It involves the following 2 IF \r
-    blocks. If "freq" is judged ill-conditioned, then we first \r
-    modify freq[0] and freq[LPC_HALFORDER-1] (normally \r
-    LPC_HALFORDER = 10 for LPC applications), then we adjust \r
-    the other "freq" values slightly */\r
-\r
-    \r
-    if ((freq[0] <= 0.0) || (freq[LPC_FILTERORDER - 1] >= 0.5)){\r
-\r
-        \r
-        if (freq[0] <= 0.0) {\r
-            freq[0] = (float)0.022;\r
-        }\r
-\r
-        \r
-        if (freq[LPC_FILTERORDER - 1] >= 0.5) {\r
-            freq[LPC_FILTERORDER - 1] = (float)0.499;\r
-        }\r
-\r
-        hlp = (freq[LPC_FILTERORDER - 1] - freq[0]) / \r
-            (float) (LPC_FILTERORDER - 1);\r
-\r
-        for (i=1; i<LPC_FILTERORDER; i++) {\r
-            freq[i] = freq[i - 1] + hlp;\r
-        }\r
-\r
-\r
-    }\r
-    \r
-    memset(a1, 0, LPC_HALFORDER*sizeof(float));\r
-    memset(a2, 0, LPC_HALFORDER*sizeof(float));\r
-    memset(b1, 0, LPC_HALFORDER*sizeof(float));\r
-    memset(b2, 0, LPC_HALFORDER*sizeof(float));\r
-    memset(a, 0, (LPC_HALFORDER+1)*sizeof(float));\r
-    memset(b, 0, (LPC_HALFORDER+1)*sizeof(float));\r
-        \r
-    /* p[i] and q[i] compute cos(2*pi*omega_{2j}) and \r
-    cos(2*pi*omega_{2j-1} in eqs. 4.2.2.2-1 and 4.2.2.2-2.  \r
-    Note that for this code p[i] specifies the coefficients \r
-    used in .Q_A(z) while q[i] specifies the coefficients used \r
-    in .P_A(z) */\r
-\r
-    for (i=0; i<LPC_HALFORDER; i++) {\r
-        p[i] = (float)cos(TWO_PI * freq[2 * i]);\r
-        q[i] = (float)cos(TWO_PI * freq[2 * i + 1]);\r
-    }\r
-    \r
-    a[0] = 0.25;\r
-    b[0] = 0.25;\r
-    \r
-    for (i= 0; i<LPC_HALFORDER; i++) {\r
-        a[i + 1] = a[i] - 2 * p[i] * a1[i] + a2[i];\r
-        b[i + 1] = b[i] - 2 * q[i] * b1[i] + b2[i];\r
-        a2[i] = a1[i];\r
-        a1[i] = a[i];\r
-        b2[i] = b1[i];\r
-        b1[i] = b[i];\r
-    }\r
-    \r
-    for (j=0; j<LPC_FILTERORDER; j++) {\r
-        \r
-        if (j == 0) {\r
-            a[0] = 0.25;\r
-            b[0] = -0.25;\r
-        } else {\r
-            a[0] = b[0] = 0.0;\r
-        }\r
-        \r
-        for (i=0; i<LPC_HALFORDER; i++) {\r
-            a[i + 1] = a[i] - 2 * p[i] * a1[i] + a2[i];\r
-            b[i + 1] = b[i] - 2 * q[i] * b1[i] + b2[i];\r
-            a2[i] = a1[i];\r
-            a1[i] = a[i];\r
-            b2[i] = b1[i];\r
-            b1[i] = b[i];\r
-        }\r
-\r
-        a_coef[j + 1] = 2 * (a[LPC_HALFORDER] + b[LPC_HALFORDER]);\r
-    }\r
-\r
-    a_coef[0] = 1.0;\r
-\r
-\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/lsf.h b/libs/codecs/ilbc/lsf.h
deleted file mode 100644 (file)
index 02f270a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    lsf.h             \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_LSF_H\r
-#define __iLBC_LSF_H\r
-\r
-void a2lsf( \r
-    float *freq,/* (o) lsf coefficients */\r
-    float *a    /* (i) lpc coefficients */\r
-);\r
-\r
-void lsf2a( \r
-    float *a_coef,  /* (o) lpc coefficients */\r
-    float *freq     /* (i) lsf coefficients */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/packing.c b/libs/codecs/ilbc/packing.c
deleted file mode 100644 (file)
index c6e1980..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    packing.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include <math.h>\r
-#include <stdlib.h>\r
-\r
-#include "iLBC_define.h"\r
-#include "constants.h"\r
-#include "helpfun.h"\r
-#include "packing.h"\r
-#include "string.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  splitting an integer into first most significant bits and \r
- *  remaining least significant bits\r
- *---------------------------------------------------------------*/\r
-\r
-void packsplit(\r
-    int *index,                 /* (i) the value to split */\r
-    int *firstpart,             /* (o) the value specified by most \r
-                                       significant bits */\r
-    int *rest,                  /* (o) the value specified by least\r
-                                       significant bits */\r
-    int bitno_firstpart,    /* (i) number of bits in most \r
-                                       significant part */\r
-    int bitno_total             /* (i) number of bits in full range\r
-                                       of value */\r
-){\r
-    int bitno_rest = bitno_total-bitno_firstpart;\r
-\r
-\r
-\r
-    *firstpart = *index>>(bitno_rest);\r
-    *rest = *index-(*firstpart<<(bitno_rest));\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  combining a value corresponding to msb's with a value \r
- *  corresponding to lsb's\r
- *---------------------------------------------------------------*/\r
-\r
-void packcombine( \r
-    int *index,                 /* (i/o) the msb value in the \r
-                                       combined value out */\r
-    int rest,                   /* (i) the lsb value */\r
-    int bitno_rest              /* (i) the number of bits in the \r
-                                       lsb part */\r
-){\r
-    *index = *index<<bitno_rest;\r
-    *index += rest;\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  packing of bits into bitstream, i.e., vector of bytes\r
- *---------------------------------------------------------------*/\r
-\r
-void dopack( \r
-    unsigned char **bitstream,  /* (i/o) on entrance pointer to \r
-                                       place in bitstream to pack \r
-                                       new data, on exit pointer \r
-                                       to place in bitstream to \r
-                                       pack future data */\r
-    int index,                  /* (i) the value to pack */\r
-    int bitno,                  /* (i) the number of bits that the \r
-                                       value will fit within */\r
-    int *pos                /* (i/o) write position in the \r
-                                       current byte */\r
-){\r
-    int posLeft;\r
-    \r
-    /* Clear the bits before starting in a new byte */\r
-    \r
-    if ((*pos)==0) {\r
-        **bitstream=0;\r
-    }\r
-\r
-    while (bitno>0) {\r
-        \r
-        /* Jump to the next byte if end of this byte is reached*/\r
-        \r
-        if (*pos==8) {\r
-            *pos=0;\r
-            (*bitstream)++;\r
-            **bitstream=0;\r
-        }\r
-\r
-\r
-\r
-        posLeft=8-(*pos);\r
-\r
-        /* Insert index into the bitstream */\r
-        \r
-        if (bitno <= posLeft) {\r
-            **bitstream |= (unsigned char)(index<<(posLeft-bitno));\r
-            *pos+=bitno;\r
-            bitno=0;\r
-        } else {\r
-            **bitstream |= (unsigned char)(index>>(bitno-posLeft));\r
-            \r
-            *pos=8;\r
-            index-=((index>>(bitno-posLeft))<<(bitno-posLeft));\r
-            \r
-            bitno-=posLeft;\r
-        }\r
-    }\r
-}\r
-\r
-/*----------------------------------------------------------------*\r
- *  unpacking of bits from bitstream, i.e., vector of bytes\r
- *---------------------------------------------------------------*/\r
-\r
-void unpack( \r
-    unsigned char **bitstream,  /* (i/o) on entrance pointer to \r
-                                       place in bitstream to \r
-                                       unpack new data from, on \r
-                                       exit pointer to place in \r
-                                       bitstream to unpack future \r
-                                       data from */\r
-    int *index,                 /* (o) resulting value */\r
-    int bitno,                  /* (i) number of bits used to \r
-                                       represent the value */\r
-    int *pos                /* (i/o) read position in the \r
-                                       current byte */\r
-){\r
-    int BitsLeft;\r
-\r
-    *index=0;\r
-\r
-    while (bitno>0) {\r
-        \r
-        /* move forward in bitstream when the end of the \r
-           byte is reached */\r
-        \r
-        if (*pos==8) {\r
-            *pos=0;\r
-            (*bitstream)++;\r
-        }\r
-\r
-        BitsLeft=8-(*pos);\r
-\r
-        /* Extract bits to index */\r
-        \r
-\r
-\r
-        if (BitsLeft>=bitno) {\r
-            *index+=((((**bitstream)<<(*pos)) & 0xFF)>>(8-bitno));\r
-            \r
-            *pos+=bitno;\r
-            bitno=0;\r
-        } else {\r
-            \r
-            if ((8-bitno)>0) {\r
-                *index+=((((**bitstream)<<(*pos)) & 0xFF)>>\r
-                    (8-bitno));\r
-                *pos=8;\r
-            } else {\r
-                *index+=(((int)(((**bitstream)<<(*pos)) & 0xFF))<<\r
-                    (bitno-8));\r
-                *pos=8;\r
-            }\r
-            bitno-=BitsLeft;\r
-        }\r
-    }\r
-}\r
-\r
-\r
diff --git a/libs/codecs/ilbc/packing.h b/libs/codecs/ilbc/packing.h
deleted file mode 100644 (file)
index 77db258..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    packing.h              \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __PACKING_H\r
-#define __PACKING_H\r
-\r
-void packsplit(\r
-    int *index,                 /* (i) the value to split */\r
-    int *firstpart,             /* (o) the value specified by most \r
-                                       significant bits */\r
-    int *rest,                  /* (o) the value specified by least \r
-                                       significant bits */\r
-    int bitno_firstpart,    /* (i) number of bits in most \r
-                                       significant part */\r
-    int bitno_total             /* (i) number of bits in full range \r
-                                       of value */\r
-);\r
-\r
-void packcombine( \r
-    int *index,                 /* (i/o) the msb value in the \r
-                                       combined value out */\r
-    int rest,                   /* (i) the lsb value */\r
-    int bitno_rest              /* (i) the number of bits in the \r
-                                       lsb part */\r
-);\r
-\r
-void dopack( \r
-    unsigned char **bitstream,  /* (i/o) on entrance pointer to \r
-                                       place in bitstream to pack \r
-                                       new data, on exit pointer \r
-                                       to place in bitstream to \r
-                                       pack future data */\r
-    int index,                  /* (i) the value to pack */\r
-    int bitno,                  /* (i) the number of bits that the \r
-                                       value will fit within */\r
-    int *pos                /* (i/o) write position in the \r
-                                       current byte */\r
-);\r
-\r
-void unpack( \r
-    unsigned char **bitstream,  /* (i/o) on entrance pointer to \r
-\r
-\r
-                                       place in bitstream to \r
-                                       unpack new data from, on \r
-                                       exit pointer to place in \r
-                                       bitstream to unpack future \r
-                                       data from */\r
-    int *index,                 /* (o) resulting value */\r
-    int bitno,                  /* (i) number of bits used to \r
-                                       represent the value */\r
-    int *pos                /* (i/o) read position in the \r
-                                       current byte */\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/ilbc/syntFilter.c b/libs/codecs/ilbc/syntFilter.c
deleted file mode 100644 (file)
index ff2e714..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    syntFilter.c \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#include "iLBC_define.h"\r
-#include "syntFilter.h"\r
-\r
-/*----------------------------------------------------------------*\r
- *  LP synthesis filter.\r
- *---------------------------------------------------------------*/\r
-    \r
-void syntFilter(\r
-    float *Out,     /* (i/o) Signal to be filtered */\r
-    float *a,       /* (i) LP parameters */\r
-    int len,    /* (i) Length of signal */\r
-    float *mem      /* (i/o) Filter state */\r
-){\r
-    int i, j;\r
-    float *po, *pi, *pa, *pm;\r
-\r
-    po=Out;\r
-\r
-    /* Filter first part using memory from past */\r
-\r
-    for (i=0; i<LPC_FILTERORDER; i++) {\r
-        pi=&Out[i-1];\r
-        pa=&a[1];\r
-        pm=&mem[LPC_FILTERORDER-1];\r
-        for (j=1; j<=i; j++) {\r
-            *po-=(*pa++)*(*pi--);\r
-        }\r
-        for (j=i+1; j<LPC_FILTERORDER+1; j++) {\r
-            *po-=(*pa++)*(*pm--);\r
-        }\r
-        po++;\r
-    }\r
-\r
-    /* Filter last part where the state is entierly in \r
-       the output vector */\r
-    \r
-    for (i=LPC_FILTERORDER; i<len; i++) {\r
-\r
-\r
-        pi=&Out[i-1];\r
-        pa=&a[1];\r
-        for (j=1; j<LPC_FILTERORDER+1; j++) {\r
-            *po-=(*pa++)*(*pi--);\r
-        }\r
-        po++;\r
-    }\r
-\r
-    /* Update state vector */\r
-\r
-    memcpy(mem, &Out[len-LPC_FILTERORDER], \r
-        LPC_FILTERORDER*sizeof(float));\r
-}\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
diff --git a/libs/codecs/ilbc/syntFilter.h b/libs/codecs/ilbc/syntFilter.h
deleted file mode 100644 (file)
index 9e1ad3f..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-\r
-/******************************************************************\r
-\r
-    iLBC Speech Coder ANSI-C Source Code\r
-\r
-    syntFilter.h               \r
-\r
-    Copyright (C) The Internet Society (2004). \r
-    All Rights Reserved.\r
-\r
-******************************************************************/\r
-\r
-#ifndef __iLBC_SYNTFILTER_H\r
-#define __iLBC_SYNTFILTER_H\r
-\r
-void syntFilter(\r
-    float *Out,     /* (i/o) Signal to be filtered */\r
-    float *a,       /* (i) LP parameters */\r
-    int len,    /* (i) Length of signal */\r
-    float *mem      /* (i/o) Filter state */\r
-\r
-\r
-);\r
-\r
-#endif\r
-\r
-\r
diff --git a/libs/codecs/lpc10/Makefile b/libs/codecs/lpc10/Makefile
deleted file mode 100644 (file)
index ccb3141..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-# \r
-# Makefile for LPC-10 speech coder library (unix)\r
-# \r
-\r
-# default C compiler\r
-CC?= gcc\r
-\r
-# \r
-# These definitions for CFLAGS and LIB_TARGET_DIR are used when one\r
-# runs make in the lpc10 directory, without environment variables that\r
-# override them.  When make is run in this directory from a makefile\r
-# for an application that uses the LPC10 coder, there are environment\r
-# variables set for CFLAGS and LIB_TARGET_DIR that override these\r
-# definitions.\r
-# \r
-\r
-LIB_TARGET_DIR = .\r
-\r
-# \r
-# -I$(LIB_TARGET_DIR) option needed so that #include "machine.h"\r
-# directives can find the machine.h file.\r
-# \r
-\r
-WARNINGS = -Wall -Wno-comment -Wno-error\r
-CFLAGS += $(OPTIMIZE) -I$(LIB_TARGET_DIR) $(WARNINGS)\r
-ifneq (${OSARCH},CYGWIN)\r
-CFLAGS += -fPIC\r
-endif\r
-#CFLAGS+= $(shell if uname -m | grep -q 86; then echo "-mpentium" ; fi)\r
-\r
-#fix for PPC processors and ALPHA, And UltraSparc too\r
-ifneq ($(OSARCH),Darwin)\r
-ifneq ($(findstring BSD,${OSARCH}),BSD)\r
-ifneq ($(PROC),ppc)\r
-ifneq ($(PROC),x86_64)\r
-ifneq ($(PROC),alpha)\r
-#The problem with sparc is the best stuff is in newer versions of gcc (post 3.0) only.\r
-#This works for even old (2.96) versions of gcc and provides a small boost either way.\r
-#A ultrasparc cpu is really v9 but the stock debian stable 3.0 gcc doesn.t support it.\r
-#So we go lowest common available by gcc and go a step down, still a step up from\r
-#the default as we now have a better instruction set to work with. - Belgarath\r
-ifeq ($(PROC),ultrasparc)\r
-        CFLAGS+= -mtune=$(PROC) -mcpu=v8 -O3 -fomit-frame-pointer\r
-else\r
-ifneq ($(OSARCH),SunOS)\r
-ifneq  ($(OSARCH),arm)\r
-#        CFLAGS+= -march=$(PROC)\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-endif\r
-\r
-LIB = $(LIB_TARGET_DIR)/liblpc10.a\r
-\r
-.PHONY: all clean\r
-\r
-all:   $(LIB)\r
-\r
-OBJ=   f2clib.o analys.o bsynz.o chanwr.o dcbias.o decode.o \\r
-               deemp.o difmag.o dyptrk.o encode.o energy.o ham84.o \\r
-               hp100.o invert.o irc2pc.o ivfilt.o lpcdec.o lpcenc.o \\r
-               lpcini.o lpfilt.o median.o mload.o onset.o pitsyn.o \\r
-               placea.o placev.o preemp.o prepro.o random.o rcchk.o \\r
-               synths.o tbdm.o voicin.o vparms.o\r
-\r
-$(LIB): $(OBJ)\r
-       $(AR) cr $@ $(OBJ)\r
-       ranlib $@\r
-\r
-clean:\r
-       -rm -f *.o $(LIB)\r
diff --git a/libs/codecs/lpc10/README b/libs/codecs/lpc10/README
deleted file mode 100644 (file)
index 6dc1851..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-Tue Aug 20 16:19:51 CDT 1996\r
-Andy Fingerhut (jaf@arl.wustl.edu)\r
-\r
-In release 1.4, there are quite a few hand modifications to the C code\r
-that was automatically created from the Fortran code with f2c.  They\r
-are all summarized in change log comments at the beginning of the\r
-changed files.  All of the original files from f2c were checked in to\r
-RCS before modification, so it is possible to see exactly what changes\r
-were made, for the extremely curious.  That precaution was also for my\r
-benefit, in case I ever recompile the Fortran sources, and want to\r
-make similar changes to that new C source code.\r
-\r
-Below is the README file for this directory included with the 1.3\r
-release of the LPC-10 package.  A few parts of it are a little out of\r
-date, but it is correct for the most part.\r
-\r
-\r
-Sun Jul  7 15:30:31 CDT 1996\r
-Andy Fingerhut (jaf@arl.wustl.edu)\r
-\r
-To create the LPC-10 library, copy the appropriate makefile to the\r
-proper name for easy use, e.g., for Unix, copy makefile.unx to the\r
-file "Makefile".  The file makefile.dos has been used with some\r
-version of the 'nmake' utility that comes with the Microsoft C\r
-compiler (the same one used for Nautilus v1.5a, which I believe\r
-specifies Microsoft C version 7.0 or later).\r
-\r
-Then edit the file lpc10.h in the directory above.  It should already\r
-be set up to work properly on any Unix compiler for which "int" is 32\r
-bits and "short" is 16 bits, and under the Microsoft C compiler\r
-configured so that "long" is 32 bits and "int" is 16 bits.  There must\r
-be a typedef for the two types INT32 and INT16 in that file.  You\r
-should choose types that compile to those sizes using your compiler,\r
-because there are places in the LPC-10 code that expect INT16's to\r
-have exactly 16 bits (at least, I *think* they must be no larger), and\r
-INT32's to have exactly 32 bits.\r
-\r
-\r
-A few notes on how these files were created\r
--------------------------------------------\r
-\r
-(This section is mostly for my benefit, so I can remember what I did.\r
-You don't need to read it if you just want to use this package.  It\r
-might be useful to read it if you change the Fortran sources and want\r
-to recreate a usable library of C sources.  -- Andy)\r
-\r
-These C sources were created automatically from the Fortran sources\r
-using f2c, for the most part.  Listed below are the extra\r
-modifications that were made after this automatic conversion.  Many of\r
-them were made so that it was not necessary to install f2c in order to\r
-use this LPC-10 coder.\r
-\r
-1.\r
-\r
-Put all of those files that were necessary for only the coder, rather\r
-than an application that uses the coder, into this subdirectory called\r
-lpc10.\r
-\r
-2.\r
-\r
-Copied f2c.h from the f2c distribution into this subdirectory.  Some\r
-modifications were made to the "typedef" statements in this file, to\r
-explicitly indicate the sizes (in bits) that different integer types\r
-should be.  The types INT32 and INT16 must be defined in a file called\r
-lpc10.h in the directory above.  Created the file f2clib.c, containing\r
-only the functions pow_ii(), r_sign(), and i_nint() from the f2c\r
-library.\r
-\r
-3.\r
-\r
-The f2c output originally had a file called contrl_com.c, that defined\r
-a small structure containing a few variables that were used in many\r
-different functions of the LPC10 code.  Every file containing\r
-functions that used it defined it as "extern", while contrl_com.c\r
-actually allocated storage for the structure.  Bill Dorsey, one of the\r
-lead developers of Nautilus, said that the Microsoft C compiler had\r
-problems either compiling this file, or linking it with all of the\r
-other compiled files, so he just eliminated that file and removed the\r
-"extern" keyword from the one of the files that declared it that way.\r
-The file chosen (arbitrarily) was analys.c.\r
-\r
-4.\r
-\r
-Copied the makefiles for Unix and Microsoft C from the Nautilus v1.5a\r
-distribution into the lpc10 directory.  Modified them to take out\r
-references to Nautilus.  These makefiles don't create an executable,\r
-but a library of compiled functions called liblpc10.a (Unix) or\r
-LPC10.LIB (DOS).  This library can be used when linking an executable\r
-that calls the functions lpcini_(), lpcenc_(), and lpcdec_().\r
diff --git a/libs/codecs/lpc10/analys.c b/libs/codecs/lpc10/analys.c
deleted file mode 100644 (file)
index 007a09e..0000000
+++ /dev/null
@@ -1,649 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.16  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.15  2003/09/19 01:20:22  markster\r
-Code cleanups (bug #66)\r
-\r
-Revision 1.2  2003/09/19 01:20:22  markster\r
-Code cleanups (bug #66)\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:16:01  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:29:08  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int analys_(real *speech, integer *voice, integer *pitch, real *rms, real *rc, struct lpc10_encoder_state *st);\r
-/* comlen contrl_ 12 */\r
-/*:ref: preemp_ 14 5 6 6 4 6 6 */\r
-/*:ref: onset_ 14 7 6 4 4 4 4 4 4 */\r
-/*:ref: placev_ 14 11 4 4 4 4 4 4 4 4 4 4 4 */\r
-/*:ref: lpfilt_ 14 4 6 6 4 4 */\r
-/*:ref: ivfilt_ 14 5 6 6 4 4 6 */\r
-/*:ref: tbdm_ 14 8 6 4 4 4 6 4 4 4 */\r
-/*:ref: voicin_ 14 12 4 6 6 4 4 6 6 4 6 4 4 4 */\r
-/*:ref: dyptrk_ 14 6 6 4 4 4 4 4 */\r
-/*:ref: placea_ 14 9 4 4 4 4 4 4 4 4 4 */\r
-/*:ref: dcbias_ 14 3 4 6 6 */\r
-/*:ref: energy_ 14 3 4 6 6 */\r
-/*:ref: mload_ 14 6 4 4 4 6 6 6 */\r
-/*:ref: invert_ 14 4 4 6 6 6 */\r
-/*:ref: rcchk_ 14 3 4 6 6 */\r
-/*:ref: initonset_ 14 0 */\r
-/*:ref: initvoicin_ 14 0 */\r
-/*:ref: initdyptrk_ 14 0 */\r
-/* Rerunning f2c -P may change prototypes or declarations. */\r
-#endif\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-/* Common Block Declarations */\r
-\r
-extern struct {\r
-    integer order, lframe;\r
-    logical corrp;\r
-} contrl_;\r
-\r
-#define contrl_1 contrl_\r
-\r
-/* Table of constant values */\r
-\r
-static integer c__10 = 10;\r
-static integer c__181 = 181;\r
-static integer c__720 = 720;\r
-static integer c__3 = 3;\r
-static integer c__90 = 90;\r
-static integer c__156 = 156;\r
-static integer c__307 = 307;\r
-static integer c__462 = 462;\r
-static integer c__312 = 312;\r
-static integer c__60 = 60;\r
-static integer c__1 = 1;\r
-\r
-/* ****************************************************************** */\r
-\r
-/*     ANALYS Version 55 */\r
-\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.2  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:16:01  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:29:08  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.9  1996/05/23  19:41:07  jaf */\r
-/* Commented out some unnecessary lines that were reading uninitialized */\r
-/* values. */\r
-\r
-/* Revision 1.8  1996/03/27  23:57:55  jaf */\r
-/* Added some comments about which indices of the local buffers INBUF, */\r
-/* LPBUF, etc., get read or modified by some of the subroutine calls.  I */\r
-/* just did this while trying to figure out the discrepancy between the */\r
-/* embedded code compiled with all local variables implicitly saved, and */\r
-/* without. */\r
-\r
-/* I added some debugging write statements in hopes of finding a problem. */\r
-/* None of them ever printed anything while running with the long input */\r
-/* speech file dam9.spd provided in the distribution. */\r
-\r
-/* Revision 1.7  1996/03/27  18:06:20  jaf */\r
-/* Commented out access to MAXOSP, which is just a debugging variable */\r
-/* that was defined in the COMMON block CONTRL in contrl.fh. */\r
-\r
-/* Revision 1.6  1996/03/26  19:31:33  jaf */\r
-/* Commented out trace statements. */\r
-\r
-/* Revision 1.5  1996/03/21  15:19:35  jaf */\r
-/* Added comments for ENTRY PITDEC. */\r
-\r
-/* Revision 1.4  1996/03/19  20:54:27  jaf */\r
-/* Added a line to INITANALYS.  See comments there. */\r
-\r
-/* Revision 1.3  1996/03/19  20:52:49  jaf */\r
-/* Rearranged the order of the local variables quite a bit, to separate */\r
-/* them into groups of "constants", "locals that don't need to be saved */\r
-/* from one call to the next", and "local that do need to be saved from */\r
-/* one call to the next". */\r
-\r
-/* Several locals in the last set should have been given initial values, */\r
-/* but weren't.  I gave them all initial values of 0. */\r
-\r
-/* Added a separate ENTRY INITANALYS that initializes all local state */\r
-/* that should be, and also calls the corresponding entries of the */\r
-/* subroutines called by ANALYS that also have local state. */\r
-\r
-/* There used to be DATA statements in ANALYS.  I got rid of most of */\r
-/* them, and added a local logical variable FIRST that calls the entry */\r
-/* INITANALYS on the first call to ANALYS.  This is just so that one need */\r
-/* not remember to call INITANALYS first in order for the state to be */\r
-/* initialized. */\r
-\r
-/* Revision 1.2  1996/03/11  23:29:32  jaf */\r
-/* Added several comments with my own personal questions about the */\r
-/* Fortran 77 meaning of the parameters passed to the subroutine PREEMP. */\r
-\r
-/* Revision 1.1  1996/02/07  14:42:29  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ****************************************************************** */\r
-\r
-/* SUBROUTINE ANALYS */\r
-\r
-/* Input: */\r
-/*  SPEECH */\r
-/*       Indices 1 through LFRAME read. */\r
-/* Output: */\r
-/*  VOICE */\r
-/*       Indices 1 through 2 written. */\r
-/*  PITCH */\r
-/*       Written in subroutine DYPTRK, and then perhaps read and written */\r
-/*       some more. */\r
-/*  RMS */\r
-/*       Written. */\r
-/*  RC */\r
-/*       Indices 1 through ORDER written (ORDER defined in contrl.fh). */\r
-\r
-/* This subroutine maintains local state from one call to the next.  If */\r
-/* you want to switch to using a new audio stream for this filter, or */\r
-/* reinitialize its state for any other reason, call the ENTRY */\r
-/* INITANALYS. */\r
-\r
-\r
-/* ENTRY PITDEC */\r
-\r
-/* Input: */\r
-/*  PITCH   - Encoded pitch index */\r
-/* Output: */\r
-/*  PTAU    - Decoded pitch period */\r
-\r
-/* This entry has no local state.  It accesses a "constant" array */\r
-/* declared in ANALYS. */\r
-\r
-/* Subroutine */ int analys_(real *speech, integer *voice, integer \r
-       *pitch, real *rms, real *rc, struct lpc10_encoder_state *st)\r
-{\r
-    /* Initialized data */\r
-\r
-    static integer tau[60] = { 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,\r
-           35,36,37,38,39,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,\r
-           74,76,78,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,\r
-           140,144,148,152,156 };\r
-    static integer buflim[4] = { 181,720,25,720 };\r
-    static real precoef = .9375f;\r
-\r
-    /* System generated locals */\r
-    integer i__1;\r
-\r
-    /* Local variables */\r
-    real amdf[60];\r
-    integer half;\r
-    real abuf[156];\r
-    real *bias;\r
-    extern /* Subroutine */ int tbdm_(real *, integer *, integer *, integer *,\r
-            real *, integer *, integer *, integer *);\r
-    integer *awin;\r
-    integer midx, ewin[6]      /* was [2][3] */;\r
-    real ivrc[2], temp;\r
-    real *zpre;\r
-    integer *vwin;\r
-    integer i__, j, lanal;\r
-    extern /* Subroutine */ int rcchk_(integer *, real *, real *), mload_(\r
-           integer *, integer *, integer *, real *, real *, real *);\r
-    real *inbuf, *pebuf;\r
-    real *lpbuf, *ivbuf;\r
-    real *rcbuf;\r
-    integer *osbuf;\r
-    extern /* Subroutine */ int onset_(real *, integer *, integer *, integer *\r
-           , integer *, integer *, integer *, struct lpc10_encoder_state *);\r
-    integer *osptr;\r
-    extern int dcbias_(integer *, real *, real *);\r
-    integer ipitch;\r
-    integer *obound;\r
-    extern /* Subroutine */ int preemp_(real *, real *, integer *, real *, \r
-           real *), voicin_(integer *, real *, real *, integer *, integer *, \r
-           real *, real *, integer *, real *, integer *, integer *, integer *,\r
-           struct lpc10_encoder_state *);\r
-    integer *voibuf;\r
-    integer mintau;\r
-    real *rmsbuf;\r
-    extern /* Subroutine */ int lpfilt_(real *, real *, integer *, integer *),\r
-            ivfilt_(real *, real *, integer *, integer *, real *), energy_(\r
-           integer *, real *, real *), invert_(integer *, real *, real *, \r
-           real *);\r
-    integer minptr, maxptr;\r
-    extern /* Subroutine */ int dyptrk_(real *, integer *, integer *, integer \r
-           *, integer *, integer *, struct lpc10_encoder_state *);\r
-    real phi[100]      /* was [10][10] */, psi[10];\r
-\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.2  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:16:01  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:29:08  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:03:47  jaf */\r
-/* Removed definitions for any constants that were no longer used. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:33  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:43:51  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Configuration parameters: */\r
-/* Frame size, Prediction order, Pitch period */\r
-/*       Arguments to ANALYS */\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.2  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:16:01  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:29:08  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:05:55  jaf */\r
-/* Commented out the common block variables that are not needed by the */\r
-/* embedded version. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:50  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:44:09  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Processing control variables: */\r
-\r
-/* *** Read-only: initialized in setup */\r
-\r
-/*  Files for Speech, Parameter, and Bitstream Input & Output, */\r
-/*    and message and debug outputs. */\r
-\r
-/* Here are the only files which use these variables: */\r
-\r
-/* lpcsim.f setup.f trans.f error.f vqsetup.f */\r
-\r
-/* Many files which use fdebug are not listed, since it is only used in */\r
-/* those other files conditionally, to print trace statements. */\r
-/*     integer fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*  LPC order, Frame size, Quantization rate, Bits per frame, */\r
-/*    Error correction */\r
-/* Subroutine SETUP is the only place where order is assigned a value, */\r
-/* and that value is 10.  It could increase efficiency 1% or so to */\r
-/* declare order as a constant (i.e., a Fortran PARAMETER) instead of as \r
-*/\r
-/* a variable in a COMMON block, since it is used in many places in the */\r
-/* core of the coding and decoding routines.  Actually, I take that back. \r
-*/\r
-/* At least when compiling with f2c, the upper bound of DO loops is */\r
-/* stored in a local variable before the DO loop begins, and then that is \r
-*/\r
-/* compared against on each iteration. */\r
-/* Similarly for lframe, which is given a value of MAXFRM in SETUP. */\r
-/* Similarly for quant, which is given a value of 2400 in SETUP.  quant */\r
-/* is used in only a few places, and never in the core coding and */\r
-/* decoding routines, so it could be eliminated entirely. */\r
-/* nbits is similar to quant, and is given a value of 54 in SETUP. */\r
-/* corrp is given a value of .TRUE. in SETUP, and is only used in the */\r
-/* subroutines ENCODE and DECODE.  It doesn't affect the speed of the */\r
-/* coder significantly whether it is .TRUE. or .FALSE., or whether it is \r
-*/\r
-/* a constant or a variable, since it is only examined once per frame. */\r
-/* Leaving it as a variable that is set to .TRUE.  seems like a good */\r
-/* idea, since it does enable some error-correction capability for */\r
-/* unvoiced frames, with no change in the coding rate, and no noticeable \r
-*/\r
-/* quality difference in the decoded speech. */\r
-/*     integer quant, nbits */\r
-/* *** Read/write: variables for debugging, not needed for LPC algorithm \r
-*/\r
-\r
-/*  Current frame, Unstable frames, Output clip count, Max onset buffer, \r
-*/\r
-/*    Debug listing detail level, Line count on listing page */\r
-\r
-/* nframe is not needed for an embedded LPC10 at all. */\r
-/* nunsfm is initialized to 0 in SETUP, and incremented in subroutine */\r
-/* ERROR, which is only called from RCCHK.  When LPC10 is embedded into */\r
-/* an application, I would recommend removing the call to ERROR in RCCHK, \r
-*/\r
-/* and remove ERROR and nunsfm completely. */\r
-/* iclip is initialized to 0 in SETUP, and incremented in entry SWRITE in \r
-*/\r
-/* sread.f.  When LPC10 is embedded into an application, one might want */\r
-/* to cause it to be incremented in a routine that takes the output of */\r
-/* SYNTHS and sends it to an audio device.  It could be optionally */\r
-/* displayed, for those that might want to know what it is. */\r
-/* maxosp is never initialized to 0 in SETUP, although it probably should \r
-*/\r
-/* be, and it is updated in subroutine ANALYS.  I doubt that its value */\r
-/* would be of much interest to an application in which LPC10 is */\r
-/* embedded. */\r
-/* listl and lincnt are not needed for an embedded LPC10 at all. */\r
-/*     integer nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*     common /contrl/ fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*     common /contrl/ quant, nbits */\r
-/*     common /contrl/ nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*       Arguments to entry PITDEC (below) */\r
-/*     Parameters/constants */\r
-/*  Constants */\r
-/*    NF =     Number of frames */\r
-/*    AF =     Frame in which analysis is done */\r
-/*    OSLEN =  Length of the onset buffer */\r
-/*    LTAU =   Number of pitch lags */\r
-/*    SBUFL, SBUFH =   Start and end index of speech buffers */\r
-/*    LBUFL, LBUFH =   Start and end index of LPF speech buffer */\r
-/*   MINWIN, MAXWIN = Min and Max length of voicing (and analysis) windows\r
-*/\r
-/*    PWLEN, PWINH, PWINL = Length, upper and lower limits of pitch window\r
- */\r
-/*    DVWINL, DVWINH = Default lower and upper limits of voicing window */\r
-/*       The tables TAU and BUFLIM, and the variable PRECOEF, are not */\r
-/*       Fortran PARAMETER's, but they are initialized with DATA */\r
-/*       statements, and never modified.  Thus, they need not have SAVE */\r
-/*       statements for them to keep their values from one invocation to \r
-*/\r
-/*       the next. */\r
-/*       Local variables that need not be saved */\r
-/*       Local state */\r
-/*  Data Buffers */\r
-/*    INBUF    Raw speech (with DC bias removed each frame) */\r
-/*    PEBUF    Preemphasized speech */\r
-/*    LPBUF    Low pass speech buffer */\r
-/*    IVBUF    Inverse filtered speech */\r
-/*    OSBUF    Indexes of onsets in speech buffers */\r
-/*    VWIN     Voicing window indices */\r
-/*    AWIN     Analysis window indices */\r
-/*    EWIN     Energy window indices */\r
-/*    VOIBUF   Voicing decisions on windows in VWIN */\r
-/*    RMSBUF   RMS energy */\r
-/*    RCBUF    Reflection Coefficients */\r
-\r
-/*  Pitch is handled separately from the above parameters. */\r
-/*  The following variables deal with pitch: */\r
-/*    MIDX     Encoded initial pitch estimate for analysis frame */\r
-/*    IPITCH   Initial pitch computed for frame AF (decoded from MIDX) */\r
-/*    PITCH    The encoded pitch value (index into TAU) for the present */\r
-/*             frame (delayed and smoothed by Dyptrack) */\r
-    /* Parameter adjustments */\r
-    if (speech) {\r
-       --speech;\r
-       }\r
-    if (voice) {\r
-       --voice;\r
-       }\r
-    if (rc) {\r
-       --rc;\r
-       }\r
-\r
-    /* Function Body */\r
-\r
-/*   Calculations are done on future frame due to requirements */\r
-/*   of the pitch tracker.  Delay RMS and RC's 2 frames to give */\r
-/*   current frame parameters on return. */\r
-/*   Update all buffers */\r
-\r
-    inbuf = &(st->inbuf[0]);\r
-    pebuf = &(st->pebuf[0]);\r
-    lpbuf = &(st->lpbuf[0]);\r
-    ivbuf = &(st->ivbuf[0]);\r
-    bias = &(st->bias);\r
-    osbuf = &(st->osbuf[0]);\r
-    osptr = &(st->osptr);\r
-    obound = &(st->obound[0]);\r
-    vwin = &(st->vwin[0]);\r
-    awin = &(st->awin[0]);\r
-    voibuf = &(st->voibuf[0]);\r
-    rmsbuf = &(st->rmsbuf[0]);\r
-    rcbuf = &(st->rcbuf[0]);\r
-    zpre = &(st->zpre);\r
-\r
-    i__1 = 720 - contrl_1.lframe;\r
-    for (i__ = 181; i__ <= i__1; ++i__) {\r
-       inbuf[i__ - 181] = inbuf[contrl_1.lframe + i__ - 181];\r
-       pebuf[i__ - 181] = pebuf[contrl_1.lframe + i__ - 181];\r
-    }\r
-    i__1 = 540 - contrl_1.lframe;\r
-    for (i__ = 229; i__ <= i__1; ++i__) {\r
-       ivbuf[i__ - 229] = ivbuf[contrl_1.lframe + i__ - 229];\r
-    }\r
-    i__1 = 720 - contrl_1.lframe;\r
-    for (i__ = 25; i__ <= i__1; ++i__) {\r
-       lpbuf[i__ - 25] = lpbuf[contrl_1.lframe + i__ - 25];\r
-    }\r
-    j = 1;\r
-    i__1 = (*osptr) - 1;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       if (osbuf[i__ - 1] > contrl_1.lframe) {\r
-           osbuf[j - 1] = osbuf[i__ - 1] - contrl_1.lframe;\r
-           ++j;\r
-       }\r
-    }\r
-    *osptr = j;\r
-    voibuf[0] = voibuf[2];\r
-    voibuf[1] = voibuf[3];\r
-    for (i__ = 1; i__ <= 2; ++i__) {\r
-       vwin[(i__ << 1) - 2] = vwin[((i__ + 1) << 1) - 2] - contrl_1.lframe;\r
-       vwin[(i__ << 1) - 1] = vwin[((i__ + 1) << 1) - 1] - contrl_1.lframe;\r
-       awin[(i__ << 1) - 2] = awin[((i__ + 1) << 1) - 2] - contrl_1.lframe;\r
-       awin[(i__ << 1) - 1] = awin[((i__ + 1) << 1) - 1] - contrl_1.lframe;\r
-/*       EWIN(*,J) is unused for J .NE. AF, so the following shift is \r
-*/\r
-/*       unnecessary.  It also causes error messages when the C versio\r
-n */\r
-/*       of the code created from this by f2c is run with Purify.  It \r
-*/\r
-/*       correctly complains that uninitialized memory is being read. \r
-*/\r
-/*        EWIN(1,I) = EWIN(1,I+1) - LFRAME */\r
-/*        EWIN(2,I) = EWIN(2,I+1) - LFRAME */\r
-       obound[i__ - 1] = obound[i__];\r
-       voibuf[i__ * 2] = voibuf[(i__ + 1) * 2];\r
-       voibuf[(i__ << 1) + 1] = voibuf[((i__ + 1) << 1) + 1];\r
-       rmsbuf[i__ - 1] = rmsbuf[i__];\r
-       i__1 = contrl_1.order;\r
-       for (j = 1; j <= i__1; ++j) {\r
-           rcbuf[j + i__ * 10 - 11] = rcbuf[j + (i__ + 1) * 10 - 11];\r
-       }\r
-    }\r
-/*   Copy input speech, scale to sign+12 bit integers */\r
-/*   Remove long term DC bias. */\r
-/*       If the average value in the frame was over 1/4096 (after current \r
-*/\r
-/*       BIAS correction), then subtract that much more from samples in */\r
-/*       next frame.  If the average value in the frame was under */\r
-/*       -1/4096, add 1/4096 more to samples in next frame.  In all other \r
-*/\r
-/*       cases, keep BIAS the same. */\r
-    temp = 0.f;\r
-    i__1 = contrl_1.lframe;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       inbuf[720 - contrl_1.lframe + i__ - 181] = speech[i__] * 4096.f - \r
-               (*bias);\r
-       temp += inbuf[720 - contrl_1.lframe + i__ - 181];\r
-    }\r
-    if (temp > (real) contrl_1.lframe) {\r
-       *bias += 1;\r
-    }\r
-    if (temp < (real) (-contrl_1.lframe)) {\r
-       *bias += -1;\r
-    }\r
-/*   Place Voicing Window */\r
-    i__ = 721 - contrl_1.lframe;\r
-    preemp_(&inbuf[i__ - 181], &pebuf[i__ - 181], &contrl_1.lframe, &precoef, \r
-           zpre);\r
-    onset_(pebuf, osbuf, osptr, &c__10, &c__181, &c__720, &contrl_1.lframe, st);\r
-\r
-/*       MAXOSP is just a debugging variable. */\r
-\r
-/*     MAXOSP = MAX( MAXOSP, OSPTR ) */\r
-\r
-    placev_(osbuf, osptr, &c__10, &obound[2], vwin, &c__3, &contrl_1.lframe, \r
-           &c__90, &c__156, &c__307, &c__462);\r
-/*        The Pitch Extraction algorithm estimates the pitch for a frame \r
-*/\r
-/*   of speech by locating the minimum of the average magnitude difference\r
- */\r
-/*   function (AMDF).  The AMDF operates on low-pass, inverse filtered */\r
-/*   speech.  (The low-pass filter is an 800 Hz, 19 tap, equiripple, FIR \r
-*/\r
-/*   filter and the inverse filter is a 2nd-order LPC filter.)  The pitch \r
-*/\r
-/*   estimate is later refined by dynamic programming (DYPTRK).  However, \r
-*/\r
-/*   since some of DYPTRK's parameters are a function of the voicing */\r
-/*  decisions, a voicing decision must precede the final pitch estimation.\r
-*/\r
-/*   See subroutines LPFILT, IVFILT, and TBDM. */\r
-/*       LPFILT reads indices LBUFH-LFRAME-29 = 511 through LBUFH = 720 */\r
-/*       of INBUF, and writes indices LBUFH+1-LFRAME = 541 through LBUFH \r
-*/\r
-/*       = 720 of LPBUF. */\r
-    lpfilt_(&inbuf[228], &lpbuf[384], &c__312, &contrl_1.lframe);\r
-/*       IVFILT reads indices (PWINH-LFRAME-7) = 353 through PWINH = 540 \r
-*/\r
-/*       of LPBUF, and writes indices (PWINH-LFRAME+1) = 361 through */\r
-/*       PWINH = 540 of IVBUF. */\r
-    ivfilt_(&lpbuf[204], ivbuf, &c__312, &contrl_1.lframe, ivrc);\r
-/*       TBDM reads indices PWINL = 229 through */\r
-/*       (PWINL-1)+MAXWIN+(TAU(LTAU)-TAU(1))/2 = 452 of IVBUF, and writes \r
-*/\r
-/*       indices 1 through LTAU = 60 of AMDF. */\r
-    tbdm_(ivbuf, &c__156, tau, &c__60, amdf, &minptr, &maxptr, &mintau);\r
-/*        Voicing decisions are made for each half frame of input speech. \r
-*/\r
-/*   An initial voicing classification is made for each half of the */\r
-/*   analysis frame, and the voicing decisions for the present frame */\r
-/*   are finalized.  See subroutine VOICIN. */\r
-/*        The voicing detector (VOICIN) classifies the input signal as */\r
-/*   unvoiced (including silence) or voiced using the AMDF windowed */\r
-/*   maximum-to-minimum ratio, the zero crossing rate, energy measures, */\r
-/*   reflection coefficients, and prediction gains. */\r
-/*        The pitch and voicing rules apply smoothing and isolated */\r
-/*   corrections to the pitch and voicing estimates and, in the process, \r
-*/\r
-/*   introduce two frames of delay into the corrected pitch estimates and \r
-*/\r
-/*   voicing decisions. */\r
-    for (half = 1; half <= 2; ++half) {\r
-       voicin_(&vwin[4], inbuf, lpbuf, buflim, &half, &amdf[minptr - 1], &\r
-               amdf[maxptr - 1], &mintau, ivrc, obound, voibuf, &c__3, st);\r
-    }\r
-/*   Find the minimum cost pitch decision over several frames */\r
-/*   given the current voicing decision and the AMDF array */\r
-    dyptrk_(amdf, &c__60, &minptr, &voibuf[7], pitch, &midx, st);\r
-    ipitch = tau[midx - 1];\r
-/*   Place spectrum analysis and energy windows */\r
-    placea_(&ipitch, voibuf, &obound[2], &c__3, vwin, awin, ewin, &\r
-           contrl_1.lframe, &c__156);\r
-/*  Remove short term DC bias over the analysis window, Put result in ABUF\r
-*/\r
-    lanal = awin[5] + 1 - awin[4];\r
-    dcbias_(&lanal, &pebuf[awin[4] - 181], abuf);\r
-/*       ABUF(1:LANAL) is now defined.  It is equal to */\r
-/*       PEBUF(AWIN(1,AF):AWIN(2,AF)) corrected for short term DC bias. */\r
-/*   Compute RMS over integer number of pitch periods within the */\r
-/*   analysis window. */\r
-/*   Note that in a hardware implementation this computation may be */\r
-/*   simplified by using diagonal elements of PHI computed by MLOAD. */\r
-    i__1 = ewin[5] - ewin[4] + 1;\r
-    energy_(&i__1, &abuf[ewin[4] - awin[4]], &rmsbuf[2]);\r
-/*   Matrix load and invert, check RC's for stability */\r
-    mload_(&contrl_1.order, &c__1, &lanal, abuf, phi, psi);\r
-    invert_(&contrl_1.order, phi, psi, &rcbuf[20]);\r
-    rcchk_(&contrl_1.order, &rcbuf[10], &rcbuf[20]);\r
-/*   Set return parameters */\r
-    voice[1] = voibuf[2];\r
-    voice[2] = voibuf[3];\r
-    *rms = rmsbuf[0];\r
-    i__1 = contrl_1.order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       rc[i__] = rcbuf[i__ - 1];\r
-    }\r
-    return 0;\r
-} /* analys_ */\r
diff --git a/libs/codecs/lpc10/bsynz.c b/libs/codecs/lpc10/bsynz.c
deleted file mode 100644 (file)
index e4810de..0000000
+++ /dev/null
@@ -1,447 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:14  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:18:55  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:58  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int bsynz_(real *coef, integer *ip, integer *iv, real *sout, real *rms, real *ratio, real *g2pass, struct lpc10_decoder_state *st);\r
-/* comlen contrl_ 12 */\r
-/*:ref: random_ 4 0 */\r
-#endif\r
-\r
-/* Common Block Declarations */\r
-\r
-extern struct {\r
-    integer order, lframe;\r
-    logical corrp;\r
-} contrl_;\r
-\r
-#define contrl_1 contrl_\r
-\r
-/* ***************************************************************** */\r
-\r
-/*     BSYNZ Version 54 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:18:55  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:58  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.4  1996/03/27  18:11:22  jaf */\r
-/* Changed the range of NOISE printed out in the debugging statements, */\r
-/* even though they are commented out.  I didn't discover this until I */\r
-/* tried comparing two different versions of the LPC-10 coder, each with */\r
-/* full tracing enabled. */\r
-\r
-/* Revision 1.3  1996/03/26  19:33:23  jaf */\r
-/* Commented out trace statements. */\r
-\r
-/* Revision 1.2  1996/03/20  17:12:54  jaf */\r
-/* Added comments about which indices of array arguments are read or */\r
-/* written. */\r
-\r
-/* Rearranged local variable declarations to indicate which need to be */\r
-/* saved from one invocation to the next.  Added entry INITBSYNZ to */\r
-/* reinitialize the local state variables, if desired. */\r
-\r
-/* Revision 1.1  1996/02/07 14:43:15  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ***************************************************************** */\r
-\r
-/*   Synthesize One Pitch Epoch */\r
-\r
-/* Input: */\r
-/*  COEF  - Predictor coefficients */\r
-/*          Indices 1 through ORDER read. */\r
-/*  IP    - Pitch period (number of samples to synthesize) */\r
-/*  IV    - Voicing for the current epoch */\r
-/*  RMS   - Energy for the current epoch */\r
-/*  RATIO - Energy slope for plosives */\r
-/*  G2PASS- Sharpening factor for 2 pass synthesis */\r
-/* Output: */\r
-/*  SOUT  - Synthesized speech */\r
-/*          Indices 1 through IP written. */\r
-\r
-/* This subroutine maintains local state from one call to the next.  If */\r
-/* you want to switch to using a new audio stream for this filter, or */\r
-/* reinitialize its state for any other reason, call the ENTRY */\r
-/* INITBSYNZ. */\r
-\r
-/* Subroutine */ int bsynz_(real *coef, integer *ip, integer *iv, \r
-       real *sout, real *rms, real *ratio, real *g2pass,\r
-                           struct lpc10_decoder_state *st)\r
-{\r
-    /* Initialized data */\r
-\r
-    integer *ipo;\r
-    real *rmso;\r
-    static integer kexc[25] = { 8,-16,26,-48,86,-162,294,-502,718,-728,184,\r
-           672,-610,-672,184,728,718,502,294,162,86,48,26,16,8 };\r
-    real *exc;\r
-    real *exc2;\r
-    real *lpi1;\r
-    real *lpi2;\r
-    real *lpi3;\r
-    real *hpi1;\r
-    real *hpi2;\r
-    real *hpi3;\r
-\r
-    /* System generated locals */\r
-    integer i__1, i__2;\r
-    real r__1, r__2;\r
-\r
-    /* Builtin functions */\r
-    double sqrt(doublereal);\r
-\r
-    /* Local variables */\r
-    real gain, xssq;\r
-    integer i__, j, k;\r
-    real noise[166], pulse;\r
-    integer px;\r
-    real sscale;\r
-    extern integer random_(struct lpc10_decoder_state *);\r
-    real xy, sum, ssq;\r
-    real lpi0, hpi0;\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:18:55  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:58  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:03:47  jaf */\r
-/* Removed definitions for any constants that were no longer used. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:33  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:43:51  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Configuration parameters: */\r
-/* Frame size, Prediction order, Pitch period */\r
-/*       Arguments */\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:18:55  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:58  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:05:55  jaf */\r
-/* Commented out the common block variables that are not needed by the */\r
-/* embedded version. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:50  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:44:09  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Processing control variables: */\r
-\r
-/* *** Read-only: initialized in setup */\r
-\r
-/*  Files for Speech, Parameter, and Bitstream Input & Output, */\r
-/*    and message and debug outputs. */\r
-\r
-/* Here are the only files which use these variables: */\r
-\r
-/* lpcsim.f setup.f trans.f error.f vqsetup.f */\r
-\r
-/* Many files which use fdebug are not listed, since it is only used in */\r
-/* those other files conditionally, to print trace statements. */\r
-/*     integer fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*  LPC order, Frame size, Quantization rate, Bits per frame, */\r
-/*    Error correction */\r
-/* Subroutine SETUP is the only place where order is assigned a value, */\r
-/* and that value is 10.  It could increase efficiency 1% or so to */\r
-/* declare order as a constant (i.e., a Fortran PARAMETER) instead of as \r
-*/\r
-/* a variable in a COMMON block, since it is used in many places in the */\r
-/* core of the coding and decoding routines.  Actually, I take that back. \r
-*/\r
-/* At least when compiling with f2c, the upper bound of DO loops is */\r
-/* stored in a local variable before the DO loop begins, and then that is \r
-*/\r
-/* compared against on each iteration. */\r
-/* Similarly for lframe, which is given a value of MAXFRM in SETUP. */\r
-/* Similarly for quant, which is given a value of 2400 in SETUP.  quant */\r
-/* is used in only a few places, and never in the core coding and */\r
-/* decoding routines, so it could be eliminated entirely. */\r
-/* nbits is similar to quant, and is given a value of 54 in SETUP. */\r
-/* corrp is given a value of .TRUE. in SETUP, and is only used in the */\r
-/* subroutines ENCODE and DECODE.  It doesn't affect the speed of the */\r
-/* coder significantly whether it is .TRUE. or .FALSE., or whether it is \r
-*/\r
-/* a constant or a variable, since it is only examined once per frame. */\r
-/* Leaving it as a variable that is set to .TRUE.  seems like a good */\r
-/* idea, since it does enable some error-correction capability for */\r
-/* unvoiced frames, with no change in the coding rate, and no noticeable \r
-*/\r
-/* quality difference in the decoded speech. */\r
-/*     integer quant, nbits */\r
-/* *** Read/write: variables for debugging, not needed for LPC algorithm \r
-*/\r
-\r
-/*  Current frame, Unstable frames, Output clip count, Max onset buffer, \r
-*/\r
-/*    Debug listing detail level, Line count on listing page */\r
-\r
-/* nframe is not needed for an embedded LPC10 at all. */\r
-/* nunsfm is initialized to 0 in SETUP, and incremented in subroutine */\r
-/* ERROR, which is only called from RCCHK.  When LPC10 is embedded into */\r
-/* an application, I would recommend removing the call to ERROR in RCCHK, \r
-*/\r
-/* and remove ERROR and nunsfm completely. */\r
-/* iclip is initialized to 0 in SETUP, and incremented in entry SWRITE in \r
-*/\r
-/* sread.f.  When LPC10 is embedded into an application, one might want */\r
-/* to cause it to be incremented in a routine that takes the output of */\r
-/* SYNTHS and sends it to an audio device.  It could be optionally */\r
-/* displayed, for those that might want to know what it is. */\r
-/* maxosp is never initialized to 0 in SETUP, although it probably should \r
-*/\r
-/* be, and it is updated in subroutine ANALYS.  I doubt that its value */\r
-/* would be of much interest to an application in which LPC10 is */\r
-/* embedded. */\r
-/* listl and lincnt are not needed for an embedded LPC10 at all. */\r
-/*     integer nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*     common /contrl/ fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*     common /contrl/ quant, nbits */\r
-/*     common /contrl/ nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*       Function return value definitions */\r
-/*     Parameters/constants */\r
-/*       KEXC is not a Fortran PARAMETER, but it is an array initialized \r
-*/\r
-/*       with a DATA statement that is never modified. */\r
-/*       Local variables that need not be saved */\r
-/*       NOISE is declared with range (1:MAXPIT+MAXORD), but only indices \r
-*/\r
-/*       ORDER+1 through ORDER+IP are ever used, and I think that IP */\r
-/*       .LE. MAXPIT.  Why not declare it to be in the range (1:MAXPIT) */\r
-/*       and use that range? */\r
-/*       Local state */\r
-/*       I believe that only indices 1 through ORDER of EXC need to be */\r
-/*       saved from one invocation to the next, but we may as well save */\r
-/*       the whole array. */\r
-/*       None of these local variables were given initial values in the */\r
-/*       original code.  I'm guessing that 0 is a reasonable initial */\r
-/*       value for all of them. */\r
-    /* Parameter adjustments */\r
-    if (coef) {\r
-       --coef;\r
-       }\r
-    if (sout) {\r
-       --sout;\r
-       }\r
-\r
-    /* Function Body */\r
-    ipo = &(st->ipo);\r
-    exc = &(st->exc[0]);\r
-    exc2 = &(st->exc2[0]);\r
-    lpi1 = &(st->lpi1);\r
-    lpi2 = &(st->lpi2);\r
-    lpi3 = &(st->lpi3);\r
-    hpi1 = &(st->hpi1);\r
-    hpi2 = &(st->hpi2);\r
-    hpi3 = &(st->hpi3);\r
-    rmso = &(st->rmso_bsynz);\r
-\r
-/*                  MAXPIT+MAXORD=166 */\r
-/*  Calculate history scale factor XY and scale filter state */\r
-/* Computing MIN */\r
-    r__1 = *rmso / (*rms + 1e-6f);\r
-    xy = min(r__1,8.f);\r
-    *rmso = *rms;\r
-    i__1 = contrl_1.order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       exc2[i__ - 1] = exc2[*ipo + i__ - 1] * xy;\r
-    }\r
-    *ipo = *ip;\r
-    if (*iv == 0) {\r
-/*  Generate white noise for unvoiced */\r
-       i__1 = *ip;\r
-       for (i__ = 1; i__ <= i__1; ++i__) {\r
-           exc[contrl_1.order + i__ - 1] = (real) (random_(st) / 64);\r
-       }\r
-/*  Impulse doublet excitation for plosives */\r
-/*       (RANDOM()+32768) is in the range 0 to 2**16-1.  Therefore the\r
- */\r
-/*       following expression should be evaluated using integers with \r
-at */\r
-/*       least 32 bits (16 isn't enough), and PX should be in the rang\r
-e */\r
-/*       ORDER+1+0 through ORDER+1+(IP-2) .EQ. ORDER+IP-1. */\r
-       px = (random_(st) + 32768) * (*ip - 1) / 65536 + contrl_1.order + 1;\r
-       r__1 = *ratio / 4 * 1.f;\r
-       pulse = r__1 * 342;\r
-       if (pulse > 2e3f) {\r
-           pulse = 2e3f;\r
-       }\r
-       exc[px - 1] += pulse;\r
-       exc[px] -= pulse;\r
-/*  Load voiced excitation */\r
-    } else {\r
-       sscale = sqrt((real) (*ip)) / 6.928f;\r
-       i__1 = *ip;\r
-       for (i__ = 1; i__ <= i__1; ++i__) {\r
-           exc[contrl_1.order + i__ - 1] = 0.f;\r
-           if (i__ <= 25) {\r
-               exc[contrl_1.order + i__ - 1] = sscale * kexc[i__ - 1];\r
-           }\r
-           lpi0 = exc[contrl_1.order + i__ - 1];\r
-           r__2 = exc[contrl_1.order + i__ - 1] * .125f + *lpi1 * .75f;\r
-           r__1 = r__2 + *lpi2 * .125f;\r
-           exc[contrl_1.order + i__ - 1] = r__1 + *lpi3 * 0.f;\r
-           *lpi3 = *lpi2;\r
-           *lpi2 = *lpi1;\r
-           *lpi1 = lpi0;\r
-       }\r
-       i__1 = *ip;\r
-       for (i__ = 1; i__ <= i__1; ++i__) {\r
-           noise[contrl_1.order + i__ - 1] = random_(st) * 1.f / 64;\r
-           hpi0 = noise[contrl_1.order + i__ - 1];\r
-           r__2 = noise[contrl_1.order + i__ - 1] * -.125f + *hpi1 * .25f;\r
-           r__1 = r__2 + *hpi2 * -.125f;\r
-           noise[contrl_1.order + i__ - 1] = r__1 + *hpi3 * 0.f;\r
-           *hpi3 = *hpi2;\r
-           *hpi2 = *hpi1;\r
-           *hpi1 = hpi0;\r
-       }\r
-       i__1 = *ip;\r
-       for (i__ = 1; i__ <= i__1; ++i__) {\r
-           exc[contrl_1.order + i__ - 1] += noise[contrl_1.order + i__ - 1];\r
-       }\r
-    }\r
-/*   Synthesis filters: */\r
-/*    Modify the excitation with all-zero filter  1 + G*SUM */\r
-    xssq = 0.f;\r
-    i__1 = *ip;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       k = contrl_1.order + i__;\r
-       sum = 0.f;\r
-       i__2 = contrl_1.order;\r
-       for (j = 1; j <= i__2; ++j) {\r
-           sum += coef[j] * exc[k - j - 1];\r
-       }\r
-       sum *= *g2pass;\r
-       exc2[k - 1] = sum + exc[k - 1];\r
-    }\r
-/*   Synthesize using the all pole filter  1 / (1 - SUM) */\r
-    i__1 = *ip;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       k = contrl_1.order + i__;\r
-       sum = 0.f;\r
-       i__2 = contrl_1.order;\r
-       for (j = 1; j <= i__2; ++j) {\r
-           sum += coef[j] * exc2[k - j - 1];\r
-       }\r
-       exc2[k - 1] = sum + exc2[k - 1];\r
-       xssq += exc2[k - 1] * exc2[k - 1];\r
-    }\r
-/*  Save filter history for next epoch */\r
-    i__1 = contrl_1.order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       exc[i__ - 1] = exc[*ip + i__ - 1];\r
-       exc2[i__ - 1] = exc2[*ip + i__ - 1];\r
-    }\r
-/*  Apply gain to match RMS */\r
-    r__1 = *rms * *rms;\r
-    ssq = r__1 * *ip;\r
-    gain = sqrt(ssq / xssq);\r
-    i__1 = *ip;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       sout[i__] = gain * exc2[contrl_1.order + i__ - 1];\r
-    }\r
-    return 0;\r
-} /* bsynz_ */\r
diff --git a/libs/codecs/lpc10/chanwr.c b/libs/codecs/lpc10/chanwr.c
deleted file mode 100644 (file)
index 2253e7b..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:14  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:20:24  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Revision 1.1  1996/08/19  22:40:31  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-/* *********************************************************************** */\r
-\r
-/*     CHANL Version 49 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:20:24  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Revision 1.1  1996/08/19  22:40:31  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/21  15:14:57  jaf */\r
-/* Added comments about which indices of argument arrays are read or */\r
-/* written, and about the one bit of local state in CHANWR.  CHANRD */\r
-/* has no local state. */\r
-\r
-/* Revision 1.2  1996/03/13  18:55:10  jaf */\r
-/* Comments added explaining which of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next, and which */\r
-/* do not. */\r
-\r
-/* Revision 1.1  1996/02/07 14:43:31  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* *********************************************************************** */\r
-\r
-/* CHANWR: */\r
-/*   Place quantized parameters into bitstream */\r
-\r
-/* Input: */\r
-/*  ORDER  - Number of reflection coefficients (not really variable) */\r
-/*  IPITV  - Quantized pitch/voicing parameter */\r
-/*  IRMS   - Quantized energy parameter */\r
-/*  IRC    - Quantized reflection coefficients */\r
-/*           Indices 1 through ORDER read. */\r
-/* Output: */\r
-/*  IBITS  - Serial bitstream */\r
-/*           Indices 1 through 54 written. */\r
-/*           Bit 54, the SYNC bit, alternates from one call to the next. */\r
-\r
-/* Subroutine CHANWR maintains one bit of local state from one call to */\r
-/* the next, in the variable ISYNC.  I believe that this one bit is only */\r
-/* intended to allow a receiver to resynchronize its interpretation of */\r
-/* the bit stream, by looking for which of the 54 bits alternates every */\r
-/* frame time.  This is just a simple framing mechanism that is not */\r
-/* useful when other, higher overhead framing mechanisms are used to */\r
-/* transmit the coded frames. */\r
-\r
-/* I'm not going to make an entry to reinitialize this bit, since it */\r
-/* doesn't help a receiver much to know whether the first sync bit is a 0 */\r
-/* or a 1.  It needs to examine several frames in sequence to have */\r
-/* reasonably good assurance that its framing is correct. */\r
-\r
-\r
-/* CHANRD: */\r
-/*   Reconstruct parameters from bitstream */\r
-\r
-/* Input: */\r
-/*  ORDER  - Number of reflection coefficients (not really variable) */\r
-/*  IBITS  - Serial bitstream */\r
-/*           Indices 1 through 53 read (SYNC bit is ignored). */\r
-/* Output: */\r
-/*  IPITV  - Quantized pitch/voicing parameter */\r
-/*  IRMS   - Quantized energy parameter */\r
-/*  IRC    - Quantized reflection coefficients */\r
-/*           Indices 1 through ORDER written */\r
-\r
-/* Entry CHANRD has no local state. */\r
-\r
-\r
-\r
-/*   IBITS is 54 bits of LPC data ordered as follows: */\r
-/*     R1-0, R2-0, R3-0,  P-0,  A-0, */\r
-/*     R1-1, R2-1, R3-1,  P-1,  A-1, */\r
-/*     R1-2, R4-0, R3-2,  A-2,  P-2, R4-1, */\r
-/*     R1-3, R2-2, R3-3, R4-2,  A-3, */\r
-/*     R1-4, R2-3, R3-4, R4-3,  A-4, */\r
-/*      P-3, R2-4, R7-0, R8-0,  P-4, R4-4, */\r
-/*     R5-0, R6-0, R7-1,R10-0, R8-1, */\r
-/*     R5-1, R6-1, R7-2, R9-0,  P-5, */\r
-/*     R5-2, R6-2,R10-1, R8-2,  P-6, R9-1, */\r
-/*     R5-3, R6-3, R7-3, R9-2, R8-3, SYNC */\r
-/* Subroutine */ int chanwr_0_(int n__, integer *order, integer *ipitv, \r
-       integer *irms, integer *irc, integer *ibits,\r
-                              struct lpc10_encoder_state *st)\r
-{\r
-    /* Initialized data */\r
-\r
-    integer *isync;\r
-    static integer bit[10] = { 2,4,8,8,8,8,16,16,16,16 };\r
-    static integer iblist[53] = { 13,12,11,1,2,13,12,11,1,2,13,10,11,2,1,10,\r
-           13,12,11,10,2,13,12,11,10,2,1,12,7,6,1,10,9,8,7,4,6,9,8,7,5,1,9,8,\r
-           4,6,1,5,9,8,7,5,6 };\r
-\r
-    /* System generated locals */\r
-    integer i__1;\r
-\r
-    /* Local variables */\r
-    integer itab[13], i__;\r
-\r
-/*       Arguments */\r
-/*       Parameters/constants */\r
-/*       These arrays are not Fortran PARAMETER's, but they are defined */\r
-/*       by DATA statements below, and their contents are never altered. \r
-*/\r
-/*       Local variables that need not be saved */\r
-/*       Local state */\r
-/*       ISYNC is only used by CHANWR, not by ENTRY CHANRD. */\r
-\r
-    /* Parameter adjustments */\r
-    --irc;\r
-    --ibits;\r
-\r
-    /* Function Body */\r
-    switch(n__) {\r
-       case 1: goto L_chanrd;\r
-       }\r
-\r
-    isync = &(st->isync);\r
-\r
-/* ***********************************************************************\r
- */\r
-/*     Place quantized parameters into bitstream */\r
-/* ***********************************************************************\r
- */\r
-/*   Place parameters into ITAB */\r
-    itab[0] = *ipitv;\r
-    itab[1] = *irms;\r
-    itab[2] = 0;\r
-    i__1 = *order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       itab[i__ + 2] = irc[*order + 1 - i__] & 32767;\r
-    }\r
-/*   Put 54 bits into IBITS array */\r
-    for (i__ = 1; i__ <= 53; ++i__) {\r
-       ibits[i__] = itab[iblist[i__ - 1] - 1] & 1;\r
-       itab[iblist[i__ - 1] - 1] /= 2;\r
-    }\r
-    ibits[54] = *isync & 1;\r
-    *isync = 1 - *isync;\r
-    return 0;\r
-/* ***********************************************************************\r
- */\r
-/*     Reconstruct parameters from bitstream */\r
-/* ***********************************************************************\r
- */\r
-\r
-L_chanrd:\r
-/*   Reconstruct ITAB */\r
-    for (i__ = 1; i__ <= 13; ++i__) {\r
-       itab[i__ - 1] = 0;\r
-    }\r
-    for (i__ = 1; i__ <= 53; ++i__) {\r
-       itab[iblist[54 - i__ - 1] - 1] = (itab[iblist[54 - i__ - 1] - 1] << 1)\r
-                + ibits[54 - i__];\r
-    }\r
-/*   Sign extend RC's */\r
-    i__1 = *order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       if ((itab[i__ + 2] & bit[i__ - 1]) != 0) {\r
-           itab[i__ + 2] -= bit[i__ - 1] << 1;\r
-       }\r
-    }\r
-/*   Restore variables */\r
-    *ipitv = itab[0];\r
-    *irms = itab[1];\r
-    i__1 = *order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       irc[i__] = itab[*order + 4 - i__ - 1];\r
-    }\r
-    return 0;\r
-} /* chanwr_ */\r
-\r
-/* Subroutine */ int chanwr_(integer *order, integer *ipitv, integer *irms, \r
-       integer *irc, integer *ibits, struct lpc10_encoder_state *st)\r
-{\r
-    return chanwr_0_(0, order, ipitv, irms, irc, ibits, st);\r
-    }\r
-\r
-/* Subroutine */ int chanrd_(integer *order, integer *ipitv, integer *irms, \r
-       integer *irc, integer *ibits)\r
-{\r
-    return chanwr_0_(1, order, ipitv, irms, irc, ibits, 0);\r
-    }\r
diff --git a/libs/codecs/lpc10/dcbias.c b/libs/codecs/lpc10/dcbias.c
deleted file mode 100644 (file)
index b090804..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:14  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:40:23  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int dcbias_(integer *len, real *speech, real *sigout);\r
-#endif\r
-\r
-/* ********************************************************************* */\r
-\r
-/*     DCBIAS Version 50 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:40:23  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/18  21:19:22  jaf */\r
-/* Just added a few comments about which array indices of the arguments */\r
-/* are used, and mentioning that this subroutine has no local state. */\r
-\r
-/* Revision 1.2  1996/03/13  16:44:53  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:44:21  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ********************************************************************* */\r
-\r
-/* Calculate and remove DC bias from buffer. */\r
-\r
-/* Input: */\r
-/*  LEN    - Length of speech buffers */\r
-/*  SPEECH - Input speech buffer */\r
-/*           Indices 1 through LEN read. */\r
-/* Output: */\r
-/*  SIGOUT - Output speech buffer */\r
-/*           Indices 1 through LEN written */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int dcbias_(integer *len, real *speech, real *sigout)\r
-{\r
-    /* System generated locals */\r
-    integer i__1;\r
-\r
-    /* Local variables */\r
-    real bias;\r
-    integer i__;\r
-\r
-/*     Arguments */\r
-/*       Local variables that need not be saved */\r
-    /* Parameter adjustments */\r
-    --sigout;\r
-    --speech;\r
-\r
-    /* Function Body */\r
-    bias = 0.f;\r
-    i__1 = *len;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       bias += speech[i__];\r
-    }\r
-    bias /= *len;\r
-    i__1 = *len;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       sigout[i__] = speech[i__] - bias;\r
-    }\r
-    return 0;\r
-} /* dcbias_ */\r
-\r
diff --git a/libs/codecs/lpc10/decode.c b/libs/codecs/lpc10/decode.c
deleted file mode 100644 (file)
index 3ab77e6..0000000
+++ /dev/null
@@ -1,625 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.16  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.15  2003/09/19 01:20:22  markster\r
-Code cleanups (bug #66)\r
-\r
-Revision 1.2  2003/09/19 01:20:22  markster\r
-Code cleanups (bug #66)\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:22:39  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:38  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int decode_(integer *ipitv, integer *irms, integer *irc, integer *voice, integer *pitch, real *rms, real *rc, struct lpc10_decoder_state *st);\r
-/* comlen contrl_ 12 */\r
-/*:ref: ham84_ 14 3 4 4 4 */\r
-/*:ref: median_ 4 3 4 4 4 */\r
-#endif\r
-\r
-/* Common Block Declarations */\r
-\r
-extern struct {\r
-    integer order, lframe;\r
-    logical corrp;\r
-} contrl_;\r
-\r
-#define contrl_1 contrl_\r
-\r
-/* Table of constant values */\r
-\r
-static integer c__2 = 2;\r
-\r
-/* ***************************************************************** */\r
-\r
-/*     DECODE Version 54 */\r
-\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.2  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:22:39  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:38  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.5  1996/05/23  20:06:03  jaf */\r
-/* Assigned PITCH a "default" value on the first call, since otherwise it */\r
-/* would be left uninitialized. */\r
-\r
-/* Revision 1.4  1996/03/26  19:35:18  jaf */\r
-/* Commented out trace statements. */\r
-\r
-/* Revision 1.3  1996/03/21  21:10:50  jaf */\r
-/* Added entry INITDECODE to reinitialize the local state of subroutine */\r
-/* DECODE. */\r
-\r
-/* Revision 1.2  1996/03/21  21:04:50  jaf */\r
-/* Determined which local variables should be saved from one invocation */\r
-/* to the next, and guessed initial values for some that should have been */\r
-/* saved, but weren't given initial values.  Many of the arrays are */\r
-/* "constants", and many local variables are only used if the "global" */\r
-/* variable CORRP is .TRUE. */\r
-\r
-/* Added comments explaining which indices of array arguments are read or */\r
-/* written. */\r
-\r
-/* Revision 1.1  1996/02/12 03:21:10  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ***************************************************************** */\r
-\r
-/*   This subroutine provides error correction and decoding */\r
-/*   for all LPC parameters */\r
-\r
-/* Input: */\r
-/*  IPITV  - Index value of pitch */\r
-/*  IRMS   - Coded Energy */\r
-/*  CORRP  - Error correction: */\r
-/*    If FALSE, parameters are decoded directly with no delay.  If TRUE, */\r
-/*    most important parameter bits are protected by Hamming code and */\r
-/*    median smoothed.  This requires an additional frame of delay. */\r
-/* Input/Output: */\r
-/*  IRC    - Coded Reflection Coefficients */\r
-/*           Indices 1 through ORDER always read, then written. */\r
-/* Output: */\r
-/*  VOICE  - Half frame voicing decisions */\r
-/*           Indices 1 through 2 written. */\r
-/*  PITCH  - Decoded pitch */\r
-/*  RMS    - Energy */\r
-/*  RC     - Reflection coefficients */\r
-/*           Indices 1 through ORDER written. */\r
-\r
-/*  NOTE: Zero RC's should be done more directly, but this would affect */\r
-/*   coded parameter printout. */\r
-\r
-/* This subroutine maintains local state from one call to the next.  If */\r
-/* you want to switch to using a new audio stream for this filter, or */\r
-/* reinitialize its state for any other reason, call the ENTRY */\r
-/* INITDECODE. */\r
-\r
-/* Subroutine */ int decode_(integer *ipitv, integer *irms, \r
-       integer *irc, integer *voice, integer *pitch, real *rms, real *rc,\r
-                            struct lpc10_decoder_state *st)\r
-{\r
-    /* Initialized data */\r
-\r
-    logical *first;\r
-    static integer ethrs = 2048;\r
-    static integer ethrs1 = 128;\r
-    static integer ethrs2 = 1024;\r
-    static integer ethrs3 = 2048;\r
-    static integer ivtab[32] = { 24960,24960,24960,24960,25480,25480,25483,\r
-           25480,16640,1560,1560,1560,16640,1816,1563,1560,24960,24960,24859,\r
-           24856,26001,25881,25915,25913,1560,1560,7800,3640,1561,1561,3643,\r
-           3641 };\r
-    static real corth[32]      /* was [4][8] */ = { 32767.f,10.f,5.f,0.f,\r
-           32767.f,8.f,4.f,0.f,32.f,6.4f,3.2f,0.f,32.f,6.4f,3.2f,0.f,32.f,\r
-           11.2f,6.4f,0.f,32.f,11.2f,6.4f,0.f,16.f,5.6f,3.2f,0.f,16.f,5.6f,\r
-           3.2f,0.f };\r
-    static integer detau[128] = { 0,0,0,3,0,3,3,31,0,3,3,21,3,3,29,30,0,3,3,\r
-           20,3,25,27,26,3,23,58,22,3,24,28,3,0,3,3,3,3,39,33,32,3,37,35,36,\r
-           3,38,34,3,3,42,46,44,50,40,48,3,54,3,56,3,52,3,3,1,0,3,3,108,3,78,\r
-           100,104,3,84,92,88,156,80,96,3,3,74,70,72,66,76,68,3,62,3,60,3,64,\r
-           3,3,1,3,116,132,112,148,152,3,3,140,3,136,3,144,3,3,1,124,120,128,\r
-           3,3,3,3,1,3,3,3,1,3,1,1,1 };\r
-    static integer rmst[64] = { 1024,936,856,784,718,656,600,550,502,460,420,\r
-           384,352,328,294,270,246,226,206,188,172,158,144,132,120,110,102,\r
-           92,84,78,70,64,60,54,50,46,42,38,34,32,30,26,24,22,20,18,17,16,15,\r
-           14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 };\r
-    static integer detab7[32] = { 4,11,18,25,32,39,46,53,60,66,72,77,82,87,92,\r
-           96,101,104,108,111,114,115,117,119,121,122,123,124,125,126,127,\r
-           127 };\r
-    static real descl[8] = { .6953f,.625f,.5781f,.5469f,.5312f,.5391f,.4688f,\r
-           .3828f };\r
-    integer *ivp2h;\r
-    static integer deadd[8] = { 1152,-2816,-1536,-3584,-1280,-2432,768,-1920 }\r
-           ;\r
-    static integer qb[8] = { 511,511,1023,1023,1023,1023,2047,4095 };\r
-    static integer nbit[10] = { 8,8,5,5,4,4,4,4,3,2 };\r
-    static integer zrc[10] = { 0,0,0,0,0,3,0,2,0,0 };\r
-    static integer bit[5] = { 2,4,8,16,32 };\r
-    integer *iovoic;\r
-    integer *iavgp;\r
-    integer *iptold;\r
-    integer *erate;\r
-    integer *drc;\r
-    integer *dpit;\r
-    integer *drms;\r
-\r
-    /* System generated locals */\r
-    integer i__1, i__2;\r
-\r
-    /* Builtin functions */\r
-    integer pow_ii(integer *, integer *);\r
-\r
-    /* Local variables */\r
-    extern /* Subroutine */ int ham84_(integer *, integer *, integer *);\r
-    integer ipit, iout, i__, icorf, index, ivoic, ixcor, i1, i2, i4;\r
-    extern integer median_(integer *, integer *, integer *);\r
-    integer ishift, errcnt, lsb;\r
-\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.2  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:22:39  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:38  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:03:47  jaf */\r
-/* Removed definitions for any constants that were no longer used. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:33  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:43:51  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Configuration parameters: */\r
-/* Frame size, Prediction order, Pitch period */\r
-/*       Arguments */\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.2  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:22:39  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:38  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:05:55  jaf */\r
-/* Commented out the common block variables that are not needed by the */\r
-/* embedded version. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:50  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:44:09  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Processing control variables: */\r
-\r
-/* *** Read-only: initialized in setup */\r
-\r
-/*  Files for Speech, Parameter, and Bitstream Input & Output, */\r
-/*    and message and debug outputs. */\r
-\r
-/* Here are the only files which use these variables: */\r
-\r
-/* lpcsim.f setup.f trans.f error.f vqsetup.f */\r
-\r
-/* Many files which use fdebug are not listed, since it is only used in */\r
-/* those other files conditionally, to print trace statements. */\r
-/*     integer fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*  LPC order, Frame size, Quantization rate, Bits per frame, */\r
-/*    Error correction */\r
-/* Subroutine SETUP is the only place where order is assigned a value, */\r
-/* and that value is 10.  It could increase efficiency 1% or so to */\r
-/* declare order as a constant (i.e., a Fortran PARAMETER) instead of as \r
-*/\r
-/* a variable in a COMMON block, since it is used in many places in the */\r
-/* core of the coding and decoding routines.  Actually, I take that back. \r
-*/\r
-/* At least when compiling with f2c, the upper bound of DO loops is */\r
-/* stored in a local variable before the DO loop begins, and then that is \r
-*/\r
-/* compared against on each iteration. */\r
-/* Similarly for lframe, which is given a value of MAXFRM in SETUP. */\r
-/* Similarly for quant, which is given a value of 2400 in SETUP.  quant */\r
-/* is used in only a few places, and never in the core coding and */\r
-/* decoding routines, so it could be eliminated entirely. */\r
-/* nbits is similar to quant, and is given a value of 54 in SETUP. */\r
-/* corrp is given a value of .TRUE. in SETUP, and is only used in the */\r
-/* subroutines ENCODE and DECODE.  It doesn't affect the speed of the */\r
-/* coder significantly whether it is .TRUE. or .FALSE., or whether it is \r
-*/\r
-/* a constant or a variable, since it is only examined once per frame. */\r
-/* Leaving it as a variable that is set to .TRUE.  seems like a good */\r
-/* idea, since it does enable some error-correction capability for */\r
-/* unvoiced frames, with no change in the coding rate, and no noticeable \r
-*/\r
-/* quality difference in the decoded speech. */\r
-/*     integer quant, nbits */\r
-/* *** Read/write: variables for debugging, not needed for LPC algorithm \r
-*/\r
-\r
-/*  Current frame, Unstable frames, Output clip count, Max onset buffer, \r
-*/\r
-/*    Debug listing detail level, Line count on listing page */\r
-\r
-/* nframe is not needed for an embedded LPC10 at all. */\r
-/* nunsfm is initialized to 0 in SETUP, and incremented in subroutine */\r
-/* ERROR, which is only called from RCCHK.  When LPC10 is embedded into */\r
-/* an application, I would recommend removing the call to ERROR in RCCHK, \r
-*/\r
-/* and remove ERROR and nunsfm completely. */\r
-/* iclip is initialized to 0 in SETUP, and incremented in entry SWRITE in \r
-*/\r
-/* sread.f.  When LPC10 is embedded into an application, one might want */\r
-/* to cause it to be incremented in a routine that takes the output of */\r
-/* SYNTHS and sends it to an audio device.  It could be optionally */\r
-/* displayed, for those that might want to know what it is. */\r
-/* maxosp is never initialized to 0 in SETUP, although it probably should \r
-*/\r
-/* be, and it is updated in subroutine ANALYS.  I doubt that its value */\r
-/* would be of much interest to an application in which LPC10 is */\r
-/* embedded. */\r
-/* listl and lincnt are not needed for an embedded LPC10 at all. */\r
-/*     integer nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*     common /contrl/ fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*     common /contrl/ quant, nbits */\r
-/*     common /contrl/ nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*       Function return value definitions */\r
-\r
-/*       Parameters/constants */\r
-\r
-/*       The variables below that are not Fortran PARAMETER's are */\r
-/*       initialized with DATA statements, and then never modified. */\r
-/*       The following are used regardless of CORRP's value. */\r
-\r
-/*       DETAU, NBIT, QB, DEADD, DETAB7, RMST, DESCL */\r
-\r
-/*       The following are used only if CORRP is .TRUE. */\r
-\r
-/*       ETHRS, ETHRS1, ETHRS2, ETHRS3, IVTAB, BIT, CORTH, ZRC */\r
-\r
-/*       Local variables that need not be saved */\r
-\r
-/*       The following are used regardless of CORRP's value */\r
-/*       The following are used only if CORRP is .TRUE. */\r
-\r
-/*       Local state */\r
-\r
-/*       The following are used regardless of CORRP's value */\r
-/*       The following are used only if CORRP is .TRUE. */\r
-/*       I am guessing the initial values for IVP2H, IOVOIC, DRC, DPIT, */\r
-/*       and DRMS.  They should be checked to see if they are reasonable. \r
-*/\r
-/*       I'm also guessing for ERATE, but I think 0 is the right initial \r
-*/\r
-/*       value. */\r
-    /* Parameter adjustments */\r
-    if (irc) {\r
-       --irc;\r
-       }\r
-    if (voice) {\r
-       --voice;\r
-       }\r
-    if (rc) {\r
-       --rc;\r
-       }\r
-\r
-    /* Function Body */\r
-\r
-    iptold = &(st->iptold);\r
-    first = &(st->first);\r
-    ivp2h = &(st->ivp2h);\r
-    iovoic = &(st->iovoic);\r
-    iavgp = &(st->iavgp);\r
-    erate = &(st->erate);\r
-    drc = &(st->drc[0]);\r
-    dpit = &(st->dpit[0]);\r
-    drms = &(st->drms[0]);\r
-\r
-/* DATA statements for "constants" defined above. */\r
-/*     IF (LISTL.GE.3) WRITE(FDEBUG,800) IPITV,IRMS,(IRC(J),J=1,ORDER) */\r
-/* 800 FORMAT(1X,' <<ERRCOR IN>>',T32,6X,I6,I5,T50,10I8) */\r
-/*  If no error correction, do pitch and voicing then jump to decode */\r
-    i4 = detau[*ipitv];\r
-    if (! contrl_1.corrp) {\r
-       voice[1] = 1;\r
-       voice[2] = 1;\r
-       if (*ipitv <= 1) {\r
-           voice[1] = 0;\r
-       }\r
-       if (*ipitv == 0 || *ipitv == 2) {\r
-           voice[2] = 0;\r
-       }\r
-       *pitch = i4;\r
-       if (*pitch <= 4) {\r
-           *pitch = *iptold;\r
-       }\r
-       if (voice[1] == 1 && voice[2] == 1) {\r
-           *iptold = *pitch;\r
-       }\r
-       if (voice[1] != voice[2]) {\r
-           *pitch = *iptold;\r
-       }\r
-       goto L900;\r
-    }\r
-/*  Do error correction pitch and voicing */\r
-    if (i4 > 4) {\r
-       dpit[0] = i4;\r
-       ivoic = 2;\r
-       *iavgp = (*iavgp * 15 + i4 + 8) / 16;\r
-    } else {\r
-       ivoic = i4;\r
-       dpit[0] = *iavgp;\r
-    }\r
-    drms[0] = *irms;\r
-    i__1 = contrl_1.order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       drc[i__ * 3 - 3] = irc[i__];\r
-    }\r
-/*  Determine index to IVTAB from V/UV decision */\r
-/*  If error rate is high then use alternate table */\r
-    index = (*ivp2h << 4) + (*iovoic << 2) + ivoic + 1;\r
-    i1 = ivtab[index - 1];\r
-    ipit = i1 & 3;\r
-    icorf = i1 / 8;\r
-    if (*erate < ethrs) {\r
-       icorf /= 64;\r
-    }\r
-/*  Determine error rate:  4=high    1=low */\r
-    ixcor = 4;\r
-    if (*erate < ethrs3) {\r
-       ixcor = 3;\r
-    }\r
-    if (*erate < ethrs2) {\r
-       ixcor = 2;\r
-    }\r
-    if (*erate < ethrs1) {\r
-       ixcor = 1;\r
-    }\r
-/*  Voice/unvoice decision determined from bits 0 and 1 of IVTAB */\r
-    voice[1] = icorf / 2 & 1;\r
-    voice[2] = icorf & 1;\r
-/*  Skip decoding on first frame because present data not yet available */\r
-    if (*first) {\r
-       *first = FALSE_;\r
-/*          Assign PITCH a "default" value on the first call, since */\r
-/*          otherwise it would be left uninitialized.  The two lines \r
-*/\r
-/*          below were copied from above, since it seemed like a */\r
-/*          reasonable thing to do for the first call. */\r
-       *pitch = i4;\r
-       if (*pitch <= 4) {\r
-           *pitch = *iptold;\r
-       }\r
-       goto L500;\r
-    }\r
-/*  If bit 4 of ICORF is set then correct RMS and RC(1) - RC(4). */\r
-/*    Determine error rate and correct errors using a Hamming 8,4 code */\r
-/*    during transition or unvoiced frame.  If IOUT is negative, */\r
-/*    more than 1 error occurred, use previous frame's parameters. */\r
-    if ((icorf & bit[3]) != 0) {\r
-       errcnt = 0;\r
-       lsb = drms[1] & 1;\r
-       index = (drc[22] << 4) + drms[1] / 2;\r
-       ham84_(&index, &iout, &errcnt);\r
-       drms[1] = drms[2];\r
-       if (iout >= 0) {\r
-           drms[1] = (iout << 1) + lsb;\r
-       }\r
-       for (i__ = 1; i__ <= 4; ++i__) {\r
-           if (i__ == 1) {\r
-               i1 = ((drc[25] & 7) << 1) + (drc[28] & 1);\r
-           } else {\r
-               i1 = drc[(9 - i__) * 3 - 2] & 15;\r
-           }\r
-           i2 = drc[(5 - i__) * 3 - 2] & 31;\r
-           lsb = i2 & 1;\r
-           index = (i1 << 4) + i2 / 2;\r
-           ham84_(&index, &iout, &errcnt);\r
-           if (iout >= 0) {\r
-               iout = (iout << 1) + lsb;\r
-               if ((iout & 16) == 16) {\r
-                   iout += -32;\r
-               }\r
-           } else {\r
-               iout = drc[(5 - i__) * 3 - 1];\r
-           }\r
-           drc[(5 - i__) * 3 - 2] = iout;\r
-       }\r
-/*  Determine error rate */\r
-       *erate = *erate * .96875f + errcnt * 102;\r
-    }\r
-/*  Get unsmoothed RMS, RC's, and PITCH */\r
-    *irms = drms[1];\r
-    i__1 = contrl_1.order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       irc[i__] = drc[i__ * 3 - 2];\r
-    }\r
-    if (ipit == 1) {\r
-       dpit[1] = dpit[2];\r
-    }\r
-    if (ipit == 3) {\r
-       dpit[1] = dpit[0];\r
-    }\r
-    *pitch = dpit[1];\r
-/*  If bit 2 of ICORF is set then smooth RMS and RC's, */\r
-    if ((icorf & bit[1]) != 0) {\r
-       if ((i__1 = drms[1] - drms[0], (real) abs(i__1)) >= corth[ixcor + 3] \r
-               && (i__2 = drms[1] - drms[2], (real) abs(i__2)) >= corth[\r
-               ixcor + 3]) {\r
-           *irms = median_(&drms[2], &drms[1], drms);\r
-       }\r
-       for (i__ = 1; i__ <= 6; ++i__) {\r
-           if ((i__1 = drc[i__ * 3 - 2] - drc[i__ * 3 - 3], (real) abs(i__1))\r
-                    >= corth[ixcor + ((i__ + 2) << 2) - 5] && (i__2 = drc[i__ *\r
-                    3 - 2] - drc[i__ * 3 - 1], (real) abs(i__2)) >= corth[\r
-                   ixcor + ((i__ + 2) << 2) - 5]) {\r
-               irc[i__] = median_(&drc[i__ * 3 - 1], &drc[i__ * 3 - 2], &drc[\r
-                       i__ * 3 - 3]);\r
-           }\r
-       }\r
-    }\r
-/*  If bit 3 of ICORF is set then smooth pitch */\r
-    if ((icorf & bit[2]) != 0) {\r
-       if ((i__1 = dpit[1] - dpit[0], (real) abs(i__1)) >= corth[ixcor - 1] \r
-               && (i__2 = dpit[1] - dpit[2], (real) abs(i__2)) >= corth[\r
-               ixcor - 1]) {\r
-           *pitch = median_(&dpit[2], &dpit[1], dpit);\r
-       }\r
-    }\r
-/*  If bit 5 of ICORF is set then RC(5) - RC(10) are loaded with */\r
-/*  values so that after quantization bias is removed in decode */\r
-/*  the values will be zero. */\r
-L500:\r
-    if ((icorf & bit[4]) != 0) {\r
-       i__1 = contrl_1.order;\r
-       for (i__ = 5; i__ <= i__1; ++i__) {\r
-           irc[i__] = zrc[i__ - 1];\r
-       }\r
-    }\r
-/*  House keeping  - one frame delay */\r
-    *iovoic = ivoic;\r
-    *ivp2h = voice[2];\r
-    dpit[2] = dpit[1];\r
-    dpit[1] = dpit[0];\r
-    drms[2] = drms[1];\r
-    drms[1] = drms[0];\r
-    i__1 = contrl_1.order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       drc[i__ * 3 - 1] = drc[i__ * 3 - 2];\r
-       drc[i__ * 3 - 2] = drc[i__ * 3 - 3];\r
-    }\r
-L900:\r
-/*     IF (LISTL.GE.3)WRITE(FDEBUG,801)VOICE,PITCH,IRMS,(IRC(J),J=1,ORDER) */\r
-/* 801 FORMAT(1X,'<<ERRCOR OUT>>',T32,2I3,I6,I5,T50,10I8) */\r
-/*   Decode RMS */\r
-    *irms = rmst[(31 - *irms) * 2];\r
-/*  Decode RC(1) and RC(2) from log-area-ratios */\r
-/*  Protect from illegal coded value (-16) caused by bit errors */\r
-    for (i__ = 1; i__ <= 2; ++i__) {\r
-       i2 = irc[i__];\r
-       i1 = 0;\r
-       if (i2 < 0) {\r
-           i1 = 1;\r
-           i2 = -i2;\r
-           if (i2 > 15) {\r
-               i2 = 0;\r
-           }\r
-       }\r
-       i2 = detab7[i2 * 2];\r
-       if (i1 == 1) {\r
-           i2 = -i2;\r
-       }\r
-       ishift = 15 - nbit[i__ - 1];\r
-       irc[i__] = i2 * pow_ii(&c__2, &ishift);\r
-    }\r
-/*  Decode RC(3)-RC(10) to sign plus 14 bits */\r
-    i__1 = contrl_1.order;\r
-    for (i__ = 3; i__ <= i__1; ++i__) {\r
-       i2 = irc[i__];\r
-       ishift = 15 - nbit[i__ - 1];\r
-       i2 *= pow_ii(&c__2, &ishift);\r
-       i2 += qb[i__ - 3];\r
-       irc[i__] = i2 * descl[i__ - 3] + deadd[i__ - 3];\r
-    }\r
-/*     IF (LISTL.GE.3) WRITE(FDEBUG,811) IRMS, (IRC(I),I=1,ORDER) */\r
-/* 811 FORMAT(1X,'<<DECODE OUT>>',T45,I4,1X,10I8) */\r
-/*  Scale RMS and RC's to reals */\r
-    *rms = (real) (*irms);\r
-    i__1 = contrl_1.order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       rc[i__] = irc[i__] / 16384.f;\r
-    }\r
-    return 0;\r
-} /* decode_ */\r
diff --git a/libs/codecs/lpc10/deemp.c b/libs/codecs/lpc10/deemp.c
deleted file mode 100644 (file)
index e6715e8..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:14  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:23:46  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:34  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int deemp_(real *x, integer *n, struct lpc10_decoder_state *st);\r
-#endif\r
-\r
-/* ***************************************************************** */\r
-\r
-/*     DEEMP Version 48 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:23:46  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:34  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/20  15:54:37  jaf */\r
-/* Added comments about which indices of array arguments are read or */\r
-/* written. */\r
-\r
-/* Added entry INITDEEMP to reinitialize the local state variables, if */\r
-/* desired. */\r
-\r
-/* Revision 1.2  1996/03/14  22:11:13  jaf */\r
-/* Comments added explaining which of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next, and which */\r
-/* do not. */\r
-\r
-/* Revision 1.1  1996/02/07 14:44:53  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ***************************************************************** */\r
-\r
-/*  De-Emphasize output speech with   1 / ( 1 - .75z**-1 ) */\r
-/*    cascaded with 200 Hz high pass filter */\r
-/*    ( 1 - 1.9998z**-1 + z**-2 ) / ( 1 - 1.75z**-1 + .78z**-2 ) */\r
-\r
-/*  WARNING!  The coefficients above may be out of date with the code */\r
-/*  below.  Either that, or some kind of transformation was performed */\r
-/*  on the coefficients above to create the code below. */\r
-\r
-/* Input: */\r
-/*  N  - Number of samples */\r
-/* Input/Output: */\r
-/*  X  - Speech */\r
-/*       Indices 1 through N are read before being written. */\r
-\r
-/* This subroutine maintains local state from one call to the next.  If */\r
-/* you want to switch to using a new audio stream for this filter, or */\r
-/* reinitialize its state for any other reason, call the ENTRY */\r
-/* INITDEEMP. */\r
-\r
-/* Subroutine */ int deemp_(real *x, integer *n, struct lpc10_decoder_state *st)\r
-{\r
-    /* Initialized data */\r
-\r
-    real *dei1;\r
-    real *dei2;\r
-    real *deo1;\r
-    real *deo2;\r
-    real *deo3;\r
-\r
-    /* System generated locals */\r
-    integer i__1;\r
-    real r__1;\r
-\r
-    /* Local variables */\r
-    integer k;\r
-    real dei0;\r
-\r
-/*       Arguments */\r
-/*       Local variables that need not be saved */\r
-/*       Local state */\r
-/*       All of the locals saved below were not given explicit initial */\r
-/*       values in the original code.  I think 0 is a safe choice. */\r
-    /* Parameter adjustments */\r
-    if (x) {\r
-       --x;\r
-       }\r
-\r
-    /* Function Body */\r
-\r
-    dei1 = &(st->dei1);\r
-    dei2 = &(st->dei2);\r
-    deo1 = &(st->deo1);\r
-    deo2 = &(st->deo2);\r
-    deo3 = &(st->deo3);\r
-\r
-    i__1 = *n;\r
-    for (k = 1; k <= i__1; ++k) {\r
-       dei0 = x[k];\r
-       r__1 = x[k] - *dei1 * 1.9998f + *dei2;\r
-       x[k] = r__1 + *deo1 * 2.5f - *deo2 * 2.0925f + *deo3 * .585f;\r
-       *dei2 = *dei1;\r
-       *dei1 = dei0;\r
-       *deo3 = *deo2;\r
-       *deo2 = *deo1;\r
-       *deo1 = x[k];\r
-    }\r
-    return 0;\r
-} /* deemp_ */\r
diff --git a/libs/codecs/lpc10/difmag.c b/libs/codecs/lpc10/difmag.c
deleted file mode 100644 (file)
index 03b12c3..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:14  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:32:31  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int difmag_(real *speech, integer *lpita, integer *tau, integer *ltau, integer *maxlag, real *amdf, integer *minptr, integer *maxptr);\r
-#endif\r
-\r
-/* ********************************************************************** */\r
-\r
-/*     DIFMAG Version 49 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:14  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:32:31  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/15  23:09:39  jaf */\r
-/* Just added a few comments about which array indices of the arguments */\r
-/* are used, and mentioning that this subroutine has no local state. */\r
-\r
-/* Revision 1.2  1996/03/13  14:41:31  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:45:04  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ********************************************************************* */\r
-\r
-/*  Compute Average Magnitude Difference Function */\r
-\r
-/* Inputs: */\r
-/*  SPEECH - Low pass filtered speech */\r
-/*           Indices MIN_N1 through MAX_N1+LPITA-1 are read, where */\r
-/*      MIN_N1 = (MAXLAG - MAX_TAU)/2+1  MAX_TAU = max of TAU(I) for I=1,LTAU\r
-*/\r
-/*      MAX_N1 = (MAXLAG - MIN_TAU)/2+1  MIN_TAU = min of TAU(I) for I=1,LTAU\r
-*/\r
-/*  LPITA  - Length of speech buffer */\r
-/*  TAU    - Table of lags */\r
-/*           Indices 1 through LTAU read. */\r
-/*  LTAU   - Number of lag values to compute */\r
-/*  MAXLAG - Maximum possible lag value */\r
-/* Outputs: */\r
-/*  (All of these outputs are also read, but only after being written.) */\r
-/*  AMDF   - Average Magnitude Difference for each lag in TAU */\r
-/*           Indices 1 through LTAU written */\r
-/*  MINPTR - Index of minimum AMDF value */\r
-/*  MAXPTR - Index of maximum AMDF value */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int difmag_(real *speech, integer *lpita, integer *tau, \r
-       integer *ltau, integer *maxlag, real *amdf, integer *minptr, integer *\r
-       maxptr)\r
-{\r
-    /* System generated locals */\r
-    integer i__1, i__2;\r
-    real r__1;\r
-\r
-    /* Local variables */\r
-    integer i__, j, n1, n2;\r
-    real sum;\r
-\r
-/*       Arguments */\r
-/*       Local variables that need not be saved */\r
-/*       Local state */\r
-/*       None */\r
-    /* Parameter adjustments */\r
-    --amdf;\r
-    --tau;\r
-    --speech;\r
-\r
-    /* Function Body */\r
-    *minptr = 1;\r
-    *maxptr = 1;\r
-    i__1 = *ltau;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       n1 = (*maxlag - tau[i__]) / 2 + 1;\r
-       n2 = n1 + *lpita - 1;\r
-       sum = 0.f;\r
-       i__2 = n2;\r
-       for (j = n1; j <= i__2; j += 4) {\r
-           sum += (r__1 = speech[j] - speech[j + tau[i__]], abs(r__1));\r
-       }\r
-       amdf[i__] = sum;\r
-       if (amdf[i__] < amdf[*minptr]) {\r
-           *minptr = i__;\r
-       }\r
-       if (amdf[i__] > amdf[*maxptr]) {\r
-           *maxptr = i__;\r
-       }\r
-    }\r
-    return 0;\r
-} /* difmag_ */\r
-\r
diff --git a/libs/codecs/lpc10/dyptrk.c b/libs/codecs/lpc10/dyptrk.c
deleted file mode 100644 (file)
index 4656b00..0000000
+++ /dev/null
@@ -1,405 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:25:29  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:26  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int dyptrk_(real *amdf, integer *ltau, integer *minptr, integer *voice, integer *pitch, integer *midx, struct lpc10_encoder_state *st);\r
-/* comlen contrl_ 12 */\r
-#endif\r
-\r
-/* Common Block Declarations */\r
-\r
-extern struct {\r
-    integer order, lframe;\r
-    logical corrp;\r
-} contrl_;\r
-\r
-#define contrl_1 contrl_\r
-\r
-/* ********************************************************************* */\r
-\r
-/*     DYPTRK Version 52 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:25:29  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:26  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.5  1996/03/26  19:35:35  jaf */\r
-/* Commented out trace statements. */\r
-\r
-/* Revision 1.4  1996/03/19  18:03:22  jaf */\r
-/* Replaced the initialization "DATA P/60*DEPTH*0/" with "DATA P/120*0/", */\r
-/* because apparently Fortran (or at least f2c) can't handle expressions */\r
-/* like that. */\r
-\r
-/* Revision 1.3  1996/03/19  17:38:32  jaf */\r
-/* Added comments about the local variables that should be saved from one */\r
-/* invocation to the next.  None of them were given initial values in the */\r
-/* original code, but from my testing, it appears that initializing them */\r
-/* all to 0 works. */\r
-\r
-/* Added entry INITDYPTRK to reinitialize these local variables. */\r
-\r
-/* Revision 1.2  1996/03/13  16:32:17  jaf */\r
-/* Comments added explaining which of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next, and which */\r
-/* do not. */\r
-\r
-/* WARNING!  Some of them that should are never given initial values in */\r
-/* this code.  Hopefully, Fortran 77 defines initial values for them, but */\r
-/* even so, giving them explicit initial values is preferable. */\r
-\r
-/* Revision 1.1  1996/02/07 14:45:14  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ********************************************************************* */\r
-\r
-/*   Dynamic Pitch Tracker */\r
-\r
-/* Input: */\r
-/*  AMDF   - Average Magnitude Difference Function array */\r
-/*           Indices 1 through LTAU read, and MINPTR */\r
-/*  LTAU   - Number of lags in AMDF */\r
-/*  MINPTR - Location of minimum AMDF value */\r
-/*  VOICE  - Voicing decision */\r
-/* Output: */\r
-/*  PITCH  - Smoothed pitch value, 2 frames delayed */\r
-/*  MIDX   - Initial estimate of current frame pitch */\r
-/* Compile time constant: */\r
-/*  DEPTH  - Number of frames to trace back */\r
-\r
-/* This subroutine maintains local state from one call to the next.  If */\r
-/* you want to switch to using a new audio stream for this filter, or */\r
-/* reinitialize its state for any other reason, call the ENTRY */\r
-/* INITDYPTRK. */\r
-\r
-/* Subroutine */ int dyptrk_(real *amdf, integer *ltau, integer *\r
-       minptr, integer *voice, integer *pitch, integer *midx,\r
-                              struct lpc10_encoder_state *st)\r
-{\r
-    /* Initialized data */\r
-\r
-    real *s;\r
-    integer *p;\r
-    integer *ipoint;\r
-    real *alphax;\r
-\r
-    /* System generated locals */\r
-    integer i__1;\r
-\r
-    /* Local variables */\r
-    integer pbar;\r
-    real sbar;\r
-    integer path[2], iptr, i__, j;\r
-    real alpha, minsc, maxsc;\r
-\r
-/*       Arguments */\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:25:29  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:26  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:05:55  jaf */\r
-/* Commented out the common block variables that are not needed by the */\r
-/* embedded version. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:50  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:44:09  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Processing control variables: */\r
-\r
-/* *** Read-only: initialized in setup */\r
-\r
-/*  Files for Speech, Parameter, and Bitstream Input & Output, */\r
-/*    and message and debug outputs. */\r
-\r
-/* Here are the only files which use these variables: */\r
-\r
-/* lpcsim.f setup.f trans.f error.f vqsetup.f */\r
-\r
-/* Many files which use fdebug are not listed, since it is only used in */\r
-/* those other files conditionally, to print trace statements. */\r
-/*     integer fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*  LPC order, Frame size, Quantization rate, Bits per frame, */\r
-/*    Error correction */\r
-/* Subroutine SETUP is the only place where order is assigned a value, */\r
-/* and that value is 10.  It could increase efficiency 1% or so to */\r
-/* declare order as a constant (i.e., a Fortran PARAMETER) instead of as \r
-*/\r
-/* a variable in a COMMON block, since it is used in many places in the */\r
-/* core of the coding and decoding routines.  Actually, I take that back. \r
-*/\r
-/* At least when compiling with f2c, the upper bound of DO loops is */\r
-/* stored in a local variable before the DO loop begins, and then that is \r
-*/\r
-/* compared against on each iteration. */\r
-/* Similarly for lframe, which is given a value of MAXFRM in SETUP. */\r
-/* Similarly for quant, which is given a value of 2400 in SETUP.  quant */\r
-/* is used in only a few places, and never in the core coding and */\r
-/* decoding routines, so it could be eliminated entirely. */\r
-/* nbits is similar to quant, and is given a value of 54 in SETUP. */\r
-/* corrp is given a value of .TRUE. in SETUP, and is only used in the */\r
-/* subroutines ENCODE and DECODE.  It doesn't affect the speed of the */\r
-/* coder significantly whether it is .TRUE. or .FALSE., or whether it is \r
-*/\r
-/* a constant or a variable, since it is only examined once per frame. */\r
-/* Leaving it as a variable that is set to .TRUE.  seems like a good */\r
-/* idea, since it does enable some error-correction capability for */\r
-/* unvoiced frames, with no change in the coding rate, and no noticeable \r
-*/\r
-/* quality difference in the decoded speech. */\r
-/*     integer quant, nbits */\r
-/* *** Read/write: variables for debugging, not needed for LPC algorithm \r
-*/\r
-\r
-/*  Current frame, Unstable frames, Output clip count, Max onset buffer, \r
-*/\r
-/*    Debug listing detail level, Line count on listing page */\r
-\r
-/* nframe is not needed for an embedded LPC10 at all. */\r
-/* nunsfm is initialized to 0 in SETUP, and incremented in subroutine */\r
-/* ERROR, which is only called from RCCHK.  When LPC10 is embedded into */\r
-/* an application, I would recommend removing the call to ERROR in RCCHK, \r
-*/\r
-/* and remove ERROR and nunsfm completely. */\r
-/* iclip is initialized to 0 in SETUP, and incremented in entry SWRITE in \r
-*/\r
-/* sread.f.  When LPC10 is embedded into an application, one might want */\r
-/* to cause it to be incremented in a routine that takes the output of */\r
-/* SYNTHS and sends it to an audio device.  It could be optionally */\r
-/* displayed, for those that might want to know what it is. */\r
-/* maxosp is never initialized to 0 in SETUP, although it probably should \r
-*/\r
-/* be, and it is updated in subroutine ANALYS.  I doubt that its value */\r
-/* would be of much interest to an application in which LPC10 is */\r
-/* embedded. */\r
-/* listl and lincnt are not needed for an embedded LPC10 at all. */\r
-/*     integer nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*     common /contrl/ fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*     common /contrl/ quant, nbits */\r
-/*     common /contrl/ nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*     Parameters/constants */\r
-/*       Local variables that need not be saved */\r
-/*       Note that PATH is only used for debugging purposes, and can be */\r
-/*       removed. */\r
-/*       Local state */\r
-/*       It would be a bit more "general" to define S(LTAU), if Fortran */\r
-/*       allows the argument of a function to be used as the dimension of \r
-*/\r
-/*       a local array variable. */\r
-/*       IPOINT is always in the range 0 to DEPTH-1. */\r
-/*       WARNING! */\r
-\r
-/*       In the original version of this subroutine, IPOINT, ALPHAX, */\r
-/*       every element of S, and potentially any element of P with the */\r
-/*       second index value .NE. IPTR were read without being given */\r
-/*       initial values (all indices of P with second index equal to */\r
-/*       IPTR are all written before being read in this subroutine). */\r
-\r
-/*       From examining the code carefully, it appears that all of these \r
-*/\r
-/*       should be saved from one invocation to the next. */\r
-\r
-/*       I've run lpcsim with the "-l 6" option to see all of the */\r
-/*       debugging information that is printed out by this subroutine */\r
-/*       below, and it appears that S, P, IPOINT, and ALPHAX are all */\r
-/*       initialized to 0 (these initial values would likely be different \r
-*/\r
-/*       on different platforms, compilers, etc.).  Given that the output \r
-*/\r
-/*       of the coder sounds reasonable, I'm going to initialize these */\r
-/*       variables to 0 explicitly. */\r
-\r
-    s = &(st->s[0]);\r
-    p = &(st->p[0]);\r
-    ipoint = &(st->ipoint);\r
-    alphax = &(st->alphax);\r
-\r
-\r
-    /* Parameter adjustments */\r
-    if (amdf) {\r
-       --amdf;\r
-       }\r
-\r
-    /* Function Body */\r
-\r
-/*   Calculate the confidence factor ALPHA, used as a threshold slope in \r
-*/\r
-/*   SEESAW.  If unvoiced, set high slope so that every point in P array \r
-*/\r
-/*  is marked as a potential pitch frequency.  A scaled up version (ALPHAX\r
-)*/\r
-/*   is used to maintain arithmetic precision. */\r
-    if (*voice == 1) {\r
-       *alphax = *alphax * .75f + amdf[*minptr] / 2.f;\r
-    } else {\r
-       *alphax *= .984375f;\r
-    }\r
-    alpha = *alphax / 16;\r
-    if (*voice == 0 && *alphax < 128.f) {\r
-       alpha = 8.f;\r
-    }\r
-/* SEESAW: Construct a pitch pointer array and intermediate winner functio\r
-n*/\r
-/*   Left to right pass: */\r
-    iptr = *ipoint + 1;\r
-    p[iptr * 60 - 60] = 1;\r
-    i__ = 1;\r
-    pbar = 1;\r
-    sbar = s[0];\r
-    i__1 = *ltau;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       sbar += alpha;\r
-       if (sbar < s[i__ - 1]) {\r
-           s[i__ - 1] = sbar;\r
-           p[i__ + iptr * 60 - 61] = pbar;\r
-       } else {\r
-           sbar = s[i__ - 1];\r
-           p[i__ + iptr * 60 - 61] = i__;\r
-           pbar = i__;\r
-       }\r
-    }\r
-/*   Right to left pass: */\r
-    i__ = pbar - 1;\r
-    sbar = s[i__];\r
-    while(i__ >= 1) {\r
-       sbar += alpha;\r
-       if (sbar < s[i__ - 1]) {\r
-           s[i__ - 1] = sbar;\r
-           p[i__ + iptr * 60 - 61] = pbar;\r
-       } else {\r
-           pbar = p[i__ + iptr * 60 - 61];\r
-           i__ = pbar;\r
-           sbar = s[i__ - 1];\r
-       }\r
-       --i__;\r
-    }\r
-/*   Update S using AMDF */\r
-/*   Find maximum, minimum, and location of minimum */\r
-    s[0] += amdf[1] / 2;\r
-    minsc = s[0];\r
-    maxsc = minsc;\r
-    *midx = 1;\r
-    i__1 = *ltau;\r
-    for (i__ = 2; i__ <= i__1; ++i__) {\r
-       s[i__ - 1] += amdf[i__] / 2;\r
-       if (s[i__ - 1] > maxsc) {\r
-           maxsc = s[i__ - 1];\r
-       }\r
-       if (s[i__ - 1] < minsc) {\r
-           *midx = i__;\r
-           minsc = s[i__ - 1];\r
-       }\r
-    }\r
-/*   Subtract MINSC from S to prevent overflow */\r
-    i__1 = *ltau;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       s[i__ - 1] -= minsc;\r
-    }\r
-    maxsc -= minsc;\r
-/*   Use higher octave pitch if significant null there */\r
-    j = 0;\r
-    for (i__ = 20; i__ <= 40; i__ += 10) {\r
-       if (*midx > i__) {\r
-           if (s[*midx - i__ - 1] < maxsc / 4) {\r
-               j = i__;\r
-           }\r
-       }\r
-    }\r
-    *midx -= j;\r
-/*   TRACE: look back two frames to find minimum cost pitch estimate */\r
-    j = *ipoint;\r
-    *pitch = *midx;\r
-    for (i__ = 1; i__ <= 2; ++i__) {\r
-       j = j % 2 + 1;\r
-       *pitch = p[*pitch + j * 60 - 61];\r
-       path[i__ - 1] = *pitch;\r
-    }\r
-\r
-/*       The following statement subtracts one from IPOINT, mod DEPTH.  I \r
-*/\r
-/*       think the author chose to add DEPTH-1, instead of subtracting 1, \r
-*/\r
-/*       because then it will work even if MOD doesn't work as desired on \r
-*/\r
-/*       negative arguments. */\r
-\r
-    *ipoint = (*ipoint + 1) % 2;\r
-    return 0;\r
-} /* dyptrk_ */\r
diff --git a/libs/codecs/lpc10/encode.c b/libs/codecs/lpc10/encode.c
deleted file mode 100644 (file)
index cfe1ef7..0000000
+++ /dev/null
@@ -1,373 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:32:21  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int encode_(integer *voice, integer *pitch, real *rms, real *rc, integer *ipitch, integer *irms, integer *irc);\r
-/* comlen contrl_ 12 */\r
-#endif\r
-\r
-/* Common Block Declarations */\r
-\r
-extern struct {\r
-    integer order, lframe;\r
-    logical corrp;\r
-} contrl_;\r
-\r
-#define contrl_1 contrl_\r
-\r
-/* Table of constant values */\r
-\r
-static integer c__2 = 2;\r
-\r
-/* ***************************************************************** */\r
-\r
-/*     ENCODE Version 54 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:32:21  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.5  1996/03/26  19:35:50  jaf */\r
-/* Commented out trace statements. */\r
-\r
-/* Revision 1.4  1996/03/21  00:26:29  jaf */\r
-/* Added the comment that this subroutine has no local state. */\r
-\r
-/* In the last check-in, I forgot to mention that I had added comments */\r
-/* explaining which indices of array arguments are read or written. */\r
-\r
-/* Revision 1.3  1996/03/21  00:22:39  jaf */\r
-/* Added comments explaining that all local arrays are effectively */\r
-/* constants. */\r
-\r
-/* Revision 1.2  1996/03/13  18:48:33  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:45:29  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ***************************************************************** */\r
-\r
-/*  Quantize LPC parameters for transmission */\r
-\r
-/* INPUTS: */\r
-/*  VOICE  - Half frame voicing decisions */\r
-/*           Indices 1 through 2 read. */\r
-/*  PITCH  - Pitch */\r
-/*  RMS    - Energy */\r
-/*  RC     - Reflection coefficients */\r
-/*           Indices 1 through ORDER read. */\r
-/*  CORRP  - Error Correction: TRUE = yes, FALSE = none */\r
-/*           (this is defined in file control.fh) */\r
-/* OUTPUTS: */\r
-/*  IPITCH - Coded pitch and voicing */\r
-/*  IRMS   - Quantized energy */\r
-/*  IRC    - Quantized reflection coefficients */\r
-/*           Indices 1 through MAX(ORDER,2) written. */\r
-/*           If CORRP is .TRUE., then indices 1 through 10 written */\r
-/*           for unvoiced frames. */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int encode_(integer *voice, integer *pitch, real *rms, real *\r
-       rc, integer *ipitch, integer *irms, integer *irc)\r
-{\r
-    /* Initialized data */\r
-\r
-    static integer enctab[16] = { 0,7,11,12,13,10,6,1,14,9,5,2,3,4,8,15 };\r
-    static integer entau[60] = { 19,11,27,25,29,21,23,22,30,14,15,7,39,38,46,\r
-           42,43,41,45,37,53,49,51,50,54,52,60,56,58,26,90,88,92,84,86,82,83,\r
-           81,85,69,77,73,75,74,78,70,71,67,99,97,113,112,114,98,106,104,108,\r
-           100,101,76 };\r
-    static integer enadd[8] = { 1920,-768,2432,1280,3584,1536,2816,-1152 };\r
-    static real enscl[8] = { .0204f,.0167f,.0145f,.0147f,.0143f,.0135f,.0125f,\r
-           .0112f };\r
-    static integer enbits[8] = { 6,5,4,4,4,4,3,3 };\r
-    static integer entab6[64] = { 0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,\r
-           3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,\r
-           9,10,10,11,11,12,13,14,15 };\r
-    static integer rmst[64] = { 1024,936,856,784,718,656,600,550,502,460,420,\r
-           384,352,328,294,270,246,226,206,188,172,158,144,132,120,110,102,\r
-           92,84,78,70,64,60,54,50,46,42,38,34,32,30,26,24,22,20,18,17,16,15,\r
-           14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 };\r
-\r
-    /* System generated locals */\r
-    integer i__1, i__2;\r
-\r
-    /* Builtin functions */\r
-    integer pow_ii(integer *, integer *);\r
-\r
-    /* Local variables */\r
-    integer idel, nbit, i__, j, i2, i3, mrk;\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:32:21  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:03:47  jaf */\r
-/* Removed definitions for any constants that were no longer used. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:33  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:43:51  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Configuration parameters: */\r
-/* Frame size, Prediction order, Pitch period */\r
-/*       Arguments */\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:32:21  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:05:55  jaf */\r
-/* Commented out the common block variables that are not needed by the */\r
-/* embedded version. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:50  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:44:09  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Processing control variables: */\r
-\r
-/* *** Read-only: initialized in setup */\r
-\r
-/*  Files for Speech, Parameter, and Bitstream Input & Output, */\r
-/*    and message and debug outputs. */\r
-\r
-/* Here are the only files which use these variables: */\r
-\r
-/* lpcsim.f setup.f trans.f error.f vqsetup.f */\r
-\r
-/* Many files which use fdebug are not listed, since it is only used in */\r
-/* those other files conditionally, to print trace statements. */\r
-/*     integer fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*  LPC order, Frame size, Quantization rate, Bits per frame, */\r
-/*    Error correction */\r
-/* Subroutine SETUP is the only place where order is assigned a value, */\r
-/* and that value is 10.  It could increase efficiency 1% or so to */\r
-/* declare order as a constant (i.e., a Fortran PARAMETER) instead of as \r
-*/\r
-/* a variable in a COMMON block, since it is used in many places in the */\r
-/* core of the coding and decoding routines.  Actually, I take that back. \r
-*/\r
-/* At least when compiling with f2c, the upper bound of DO loops is */\r
-/* stored in a local variable before the DO loop begins, and then that is \r
-*/\r
-/* compared against on each iteration. */\r
-/* Similarly for lframe, which is given a value of MAXFRM in SETUP. */\r
-/* Similarly for quant, which is given a value of 2400 in SETUP.  quant */\r
-/* is used in only a few places, and never in the core coding and */\r
-/* decoding routines, so it could be eliminated entirely. */\r
-/* nbits is similar to quant, and is given a value of 54 in SETUP. */\r
-/* corrp is given a value of .TRUE. in SETUP, and is only used in the */\r
-/* subroutines ENCODE and DECODE.  It doesn't affect the speed of the */\r
-/* coder significantly whether it is .TRUE. or .FALSE., or whether it is \r
-*/\r
-/* a constant or a variable, since it is only examined once per frame. */\r
-/* Leaving it as a variable that is set to .TRUE.  seems like a good */\r
-/* idea, since it does enable some error-correction capability for */\r
-/* unvoiced frames, with no change in the coding rate, and no noticeable \r
-*/\r
-/* quality difference in the decoded speech. */\r
-/*     integer quant, nbits */\r
-/* *** Read/write: variables for debugging, not needed for LPC algorithm \r
-*/\r
-\r
-/*  Current frame, Unstable frames, Output clip count, Max onset buffer, \r
-*/\r
-/*    Debug listing detail level, Line count on listing page */\r
-\r
-/* nframe is not needed for an embedded LPC10 at all. */\r
-/* nunsfm is initialized to 0 in SETUP, and incremented in subroutine */\r
-/* ERROR, which is only called from RCCHK.  When LPC10 is embedded into */\r
-/* an application, I would recommend removing the call to ERROR in RCCHK, \r
-*/\r
-/* and remove ERROR and nunsfm completely. */\r
-/* iclip is initialized to 0 in SETUP, and incremented in entry SWRITE in \r
-*/\r
-/* sread.f.  When LPC10 is embedded into an application, one might want */\r
-/* to cause it to be incremented in a routine that takes the output of */\r
-/* SYNTHS and sends it to an audio device.  It could be optionally */\r
-/* displayed, for those that might want to know what it is. */\r
-/* maxosp is never initialized to 0 in SETUP, although it probably should \r
-*/\r
-/* be, and it is updated in subroutine ANALYS.  I doubt that its value */\r
-/* would be of much interest to an application in which LPC10 is */\r
-/* embedded. */\r
-/* listl and lincnt are not needed for an embedded LPC10 at all. */\r
-/*     integer nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*     common /contrl/ fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*     common /contrl/ quant, nbits */\r
-/*     common /contrl/ nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*       Parameters/constants */\r
-/*       These arrays are not Fortran PARAMETER's, but they are defined */\r
-/*       by DATA statements below, and their contents are never altered. \r
-*/\r
-/*       Local variables that need not be saved */\r
-    /* Parameter adjustments */\r
-    --irc;\r
-    --rc;\r
-    --voice;\r
-\r
-    /* Function Body */\r
-/*  Scale RMS and RC's to integers */\r
-    *irms = *rms;\r
-    i__1 = contrl_1.order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       irc[i__] = rc[i__] * 32768.f;\r
-    }\r
-/*     IF(LISTL.GE.3)WRITE(FDEBUG,800)VOICE,PITCH,IRMS,(IRC(I),I=1,ORDER) */\r
-/* 800 FORMAT(1X,/,' <<ENCODE IN>>',T32,2I3,I6,I5,T50,10I8) */\r
-/*  Encode pitch and voicing */\r
-    if (voice[1] != 0 && voice[2] != 0) {\r
-       *ipitch = entau[*pitch - 1];\r
-    } else {\r
-       if (contrl_1.corrp) {\r
-           *ipitch = 0;\r
-           if (voice[1] != voice[2]) {\r
-               *ipitch = 127;\r
-           }\r
-       } else {\r
-           *ipitch = (voice[1] << 1) + voice[2];\r
-       }\r
-    }\r
-/*  Encode RMS by binary table search */\r
-    j = 32;\r
-    idel = 16;\r
-    *irms = min(*irms,1023);\r
-    while(idel > 0) {\r
-       if (*irms > rmst[j - 1]) {\r
-           j -= idel;\r
-       }\r
-       if (*irms < rmst[j - 1]) {\r
-           j += idel;\r
-       }\r
-       idel /= 2;\r
-    }\r
-    if (*irms > rmst[j - 1]) {\r
-       --j;\r
-    }\r
-    *irms = 31 - j / 2;\r
-/*  Encode RC(1) and (2) as log-area-ratios */\r
-    for (i__ = 1; i__ <= 2; ++i__) {\r
-       i2 = irc[i__];\r
-       mrk = 0;\r
-       if (i2 < 0) {\r
-           i2 = -i2;\r
-           mrk = 1;\r
-       }\r
-       i2 /= 512;\r
-       i2 = min(i2,63);\r
-       i2 = entab6[i2];\r
-       if (mrk != 0) {\r
-           i2 = -i2;\r
-       }\r
-       irc[i__] = i2;\r
-    }\r
-/*  Encode RC(3) - (10) linearly, remove bias then scale */\r
-    i__1 = contrl_1.order;\r
-    for (i__ = 3; i__ <= i__1; ++i__) {\r
-       i2 = irc[i__] / 2;\r
-       i2 = (i2 + enadd[contrl_1.order + 1 - i__ - 1]) * enscl[\r
-               contrl_1.order + 1 - i__ - 1];\r
-/* Computing MIN */\r
-       i__2 = max(i2,-127);\r
-       i2 = min(i__2,127);\r
-       nbit = enbits[contrl_1.order + 1 - i__ - 1];\r
-       i3 = 0;\r
-       if (i2 < 0) {\r
-           i3 = -1;\r
-       }\r
-       i2 /= pow_ii(&c__2, &nbit);\r
-       if (i3 == -1) {\r
-           --i2;\r
-       }\r
-       irc[i__] = i2;\r
-    }\r
-/*          Protect the most significant bits of the most */\r
-/*     important parameters during non-voiced frames. */\r
-/*     RC(1) - RC(4) are protected using 20 parity bits */\r
-/*     replacing RC(5) - RC(10). */\r
-    if (contrl_1.corrp) {\r
-       if (*ipitch == 0 || *ipitch == 127) {\r
-           irc[5] = enctab[(irc[1] & 30) / 2];\r
-           irc[6] = enctab[(irc[2] & 30) / 2];\r
-           irc[7] = enctab[(irc[3] & 30) / 2];\r
-           irc[8] = enctab[(*irms & 30) / 2];\r
-           irc[9] = enctab[(irc[4] & 30) / 2] / 2;\r
-           irc[10] = enctab[(irc[4] & 30) / 2] & 1;\r
-       }\r
-    }\r
-/*     IF(LISTL.GE.3)WRITE(FDEBUG,801)VOICE,IPITCH,IRMS,(IRC(J),J=1,ORDER) */\r
-/* 801 FORMAT(1X,'<<ENCODE OUT>>',T32,2I3,I6,I5,T50,10I8) */\r
-    return 0;\r
-} /* encode_ */\r
-\r
diff --git a/libs/codecs/lpc10/energy.c b/libs/codecs/lpc10/energy.c
deleted file mode 100644 (file)
index c5594b8..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:32:17  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int energy_(integer *len, real *speech, real *rms);\r
-#endif\r
-\r
-/* ********************************************************************* */\r
-\r
-/*     ENERGY Version 50 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:32:17  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/18  21:17:41  jaf */\r
-/* Just added a few comments about which array indices of the arguments */\r
-/* are used, and mentioning that this subroutine has no local state. */\r
-\r
-/* Revision 1.2  1996/03/13  16:46:02  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:45:40  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ********************************************************************* */\r
-\r
-/* Compute RMS energy. */\r
-\r
-/* Input: */\r
-/*  LEN    - Length of speech buffer */\r
-/*  SPEECH - Speech buffer */\r
-/*           Indices 1 through LEN read. */\r
-/* Output: */\r
-/*  RMS    - Root Mean Square energy */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int energy_(integer *len, real *speech, real *rms)\r
-{\r
-    /* System generated locals */\r
-    integer i__1;\r
-\r
-    /* Builtin functions */\r
-    double sqrt(doublereal);\r
-\r
-    /* Local variables */\r
-    integer i__;\r
-\r
-/*       Arguments */\r
-/*       Local variables that need not be saved */\r
-    /* Parameter adjustments */\r
-    --speech;\r
-\r
-    /* Function Body */\r
-    *rms = 0.f;\r
-    i__1 = *len;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       *rms += speech[i__] * speech[i__];\r
-    }\r
-    *rms = sqrt(*rms / *len);\r
-    return 0;\r
-} /* energy_ */\r
-\r
diff --git a/libs/codecs/lpc10/f2c.h b/libs/codecs/lpc10/f2c.h
deleted file mode 100644 (file)
index 71946f0..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:26:28  jaf\r
- * Any typedef defining a type that was used in lpc10_encoder_state or\r
- * lpc10_decoder_state struct's was commented out here and added to\r
- * lpc10.h.\r
- *\r
- * Revision 1.1  1996/08/19  22:32:13  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*\r
- * f2c.h\r
- *\r
- * SCCS ID:  @(#)f2c.h 1.2 96/05/19\r
- */\r
-\r
-/* f2c.h  --  Standard Fortran to C header file */\r
-\r
-/**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed."\r
-\r
-       - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */\r
-\r
-#ifndef F2C_INCLUDE\r
-#define F2C_INCLUDE\r
-\r
-#include "lpc10.h"\r
-\r
-/*typedef long int integer;*/\r
-/*typedef INT32 integer;*/\r
-/*typedef short int shortint;*/\r
-/*typedef INT16 shortint;*/\r
-/*typedef float real;*/\r
-/* doublereal only used for function arguments to sqrt, exp, etc. */\r
-typedef double doublereal;\r
-/* 32 bits seems wasteful, but there really aren't that many logical\r
- * variables around, and making them 32 bits could avoid word\r
- * alignment problems, perhaps.  */\r
-/*typedef long int logical;*/\r
-/*typedef INT32 logical;*/\r
-/* The following types are not used in the translated C code for the\r
- * LPC-10 coder, but they might be needed by the definitions down\r
- * below, so they don't cause compilation errors.  */\r
-typedef char *address;\r
-typedef struct { real r, i; } complex;\r
-typedef struct { doublereal r, i; } doublecomplex;\r
-typedef short int shortlogical;\r
-typedef char logical1;\r
-typedef char integer1;\r
-/* typedef long long longint; */ /* system-dependent */\r
-\r
-#define TRUE_ (1)\r
-#define FALSE_ (0)\r
-\r
-/* Extern is for use with -E */\r
-#ifndef Extern\r
-#define Extern extern\r
-#endif\r
-\r
-/* I/O stuff */\r
-\r
-#ifdef f2c_i2\r
-/* for -i2 */\r
-typedef short flag;\r
-typedef short ftnlen;\r
-typedef short ftnint;\r
-#else\r
-typedef long int flag;\r
-typedef long int ftnlen;\r
-typedef long int ftnint;\r
-#endif\r
-\r
-/*external read, write*/\r
-typedef struct\r
-{      flag cierr;\r
-       ftnint ciunit;\r
-       flag ciend;\r
-       char *cifmt;\r
-       ftnint cirec;\r
-} cilist;\r
-\r
-/*internal read, write*/\r
-typedef struct\r
-{      flag icierr;\r
-       char *iciunit;\r
-       flag iciend;\r
-       char *icifmt;\r
-       ftnint icirlen;\r
-       ftnint icirnum;\r
-} icilist;\r
-\r
-/*open*/\r
-typedef struct\r
-{      flag oerr;\r
-       ftnint ounit;\r
-       char *ofnm;\r
-       ftnlen ofnmlen;\r
-       char *osta;\r
-       char *oacc;\r
-       char *ofm;\r
-       ftnint orl;\r
-       char *oblnk;\r
-} olist;\r
-\r
-/*close*/\r
-typedef struct\r
-{      flag cerr;\r
-       ftnint cunit;\r
-       char *csta;\r
-} cllist;\r
-\r
-/*rewind, backspace, endfile*/\r
-typedef struct\r
-{      flag aerr;\r
-       ftnint aunit;\r
-} alist;\r
-\r
-/* inquire */\r
-typedef struct\r
-{      flag inerr;\r
-       ftnint inunit;\r
-       char *infile;\r
-       ftnlen infilen;\r
-       ftnint  *inex;  /*parameters in standard's order*/\r
-       ftnint  *inopen;\r
-       ftnint  *innum;\r
-       ftnint  *innamed;\r
-       char    *inname;\r
-       ftnlen  innamlen;\r
-       char    *inacc;\r
-       ftnlen  inacclen;\r
-       char    *inseq;\r
-       ftnlen  inseqlen;\r
-       char    *indir;\r
-       ftnlen  indirlen;\r
-       char    *infmt;\r
-       ftnlen  infmtlen;\r
-       char    *inform;\r
-       ftnint  informlen;\r
-       char    *inunf;\r
-       ftnlen  inunflen;\r
-       ftnint  *inrecl;\r
-       ftnint  *innrec;\r
-       char    *inblank;\r
-       ftnlen  inblanklen;\r
-} inlist;\r
-\r
-#define VOID void\r
-\r
-union Multitype {      /* for multiple entry points */\r
-       integer1 g;\r
-       shortint h;\r
-       integer i;\r
-       /* longint j; */\r
-       real r;\r
-       doublereal d;\r
-       complex c;\r
-       doublecomplex z;\r
-       };\r
-\r
-typedef union Multitype Multitype;\r
-\r
-/*typedef long int Long;*/     /* No longer used; formerly in Namelist */\r
-\r
-struct Vardesc {       /* for Namelist */\r
-       char *name;\r
-       char *addr;\r
-       ftnlen *dims;\r
-       int  type;\r
-       };\r
-typedef struct Vardesc Vardesc;\r
-\r
-struct Namelist {\r
-       char *name;\r
-       Vardesc **vars;\r
-       int nvars;\r
-       };\r
-typedef struct Namelist Namelist;\r
-\r
-#define abs(x) ((x) >= 0 ? (x) : -(x))\r
-#define dabs(x) (doublereal)abs(x)\r
-#define min(a,b) ((a) <= (b) ? (a) : (b))\r
-#define max(a,b) ((a) >= (b) ? (a) : (b))\r
-#define dmin(a,b) (doublereal)min(a,b)\r
-#define dmax(a,b) (doublereal)max(a,b)\r
-\r
-/* procedure parameter types for -A and -C++ */\r
-\r
-#define F2C_proc_par_types 1\r
-#ifdef __cplusplus\r
-typedef int /* Unknown procedure type */ (*U_fp)(...);\r
-typedef shortint (*J_fp)(...);\r
-typedef integer (*I_fp)(...);\r
-typedef real (*R_fp)(...);\r
-typedef doublereal (*D_fp)(...), (*E_fp)(...);\r
-typedef /* Complex */ VOID (*C_fp)(...);\r
-typedef /* Double Complex */ VOID (*Z_fp)(...);\r
-typedef logical (*L_fp)(...);\r
-typedef shortlogical (*K_fp)(...);\r
-typedef /* Character */ VOID (*H_fp)(...);\r
-typedef /* Subroutine */ int (*S_fp)(...);\r
-#else\r
-typedef int /* Unknown procedure type */ (*U_fp)(VOID);\r
-typedef shortint (*J_fp)(VOID);\r
-typedef integer (*I_fp)(VOID);\r
-typedef real (*R_fp)(VOID);\r
-typedef doublereal (*D_fp)(VOID), (*E_fp)(VOID);\r
-typedef /* Complex */ VOID (*C_fp)(VOID);\r
-typedef /* Double Complex */ VOID (*Z_fp)(VOID);\r
-typedef logical (*L_fp)(VOID);\r
-typedef shortlogical (*K_fp)(VOID);\r
-typedef /* Character */ VOID (*H_fp)(VOID);\r
-typedef /* Subroutine */ int (*S_fp)(VOID);\r
-#endif\r
-/* E_fp is for real functions when -R is not specified */\r
-typedef VOID C_f;      /* complex function */\r
-typedef VOID H_f;      /* character function */\r
-typedef VOID Z_f;      /* double complex function */\r
-typedef doublereal E_f;        /* real function with -R not specified */\r
-\r
-/* undef any lower-case symbols that your C compiler predefines, e.g.: */\r
-\r
-#ifndef Skip_f2c_Undefs\r
-#undef cray\r
-#undef gcos\r
-#undef mc68010\r
-#undef mc68020\r
-#undef mips\r
-#undef pdp11\r
-#undef sgi\r
-#undef sparc\r
-#undef sun\r
-#undef sun2\r
-#undef sun3\r
-#undef sun4\r
-#undef u370\r
-#undef u3b\r
-#undef u3b2\r
-#undef u3b5\r
-#undef unix\r
-#undef vax\r
-#endif\r
-\r
-#ifdef KR_headers\r
-extern integer pow_ii(ap, bp);\r
-extern double r_sign(a,b);\r
-extern integer i_nint(x);\r
-#else\r
-extern integer pow_ii(integer *ap, integer *bp);\r
-extern double r_sign(real *a, real *b);\r
-extern integer i_nint(real *x);\r
-\r
-#endif\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int bsynz_(real *coef, integer *ip, integer *iv, \r
-                  real *sout, real *rms, real *ratio, real *g2pass,\r
-                  struct lpc10_decoder_state *st);\r
-extern int chanwr_(integer *order, integer *ipitv, integer *irms,\r
-                   integer *irc, integer *ibits, struct lpc10_encoder_state *st);\r
-extern int chanrd_(integer *order, integer *ipitv, integer *irms,\r
-                   integer *irc, integer *ibits);\r
-extern int chanwr_0_(int n__, integer *order, integer *ipitv, \r
-                     integer *irms, integer *irc, integer *ibits,\r
-                     struct lpc10_encoder_state *st);\r
-extern int dcbias_(integer *len, real *speech, real *sigout);\r
-extern int decode_(integer *ipitv, integer *irms, integer *irc, \r
-                   integer *voice, integer *pitch, real *rms,\r
-                   real *rc, struct lpc10_decoder_state *st);\r
-extern int deemp_(real *x, integer *n, struct lpc10_decoder_state *st);\r
-extern int difmag_(real *speech, integer *lpita, integer *tau, integer *ltau,\r
-                   integer *maxlag, real *amdf, integer *minptr, integer *maxptr);\r
-extern int dyptrk_(real *amdf, integer *ltau, integer *\r
-                   minptr, integer *voice, integer *pitch, integer *midx,\r
-                   struct lpc10_encoder_state *st);\r
-extern int encode_(integer *voice, integer *pitch, real *rms, real *rc,\r
-                   integer *ipitch, integer *irms, integer *irc);\r
-extern int energy_(integer *len, real *speech, real *rms);\r
-extern int ham84_(integer *input, integer *output, integer *errcnt);\r
-extern int hp100_(real *speech, integer *start, integer *end,\r
-                 struct lpc10_encoder_state *st);\r
-extern int inithp100_(void);\r
-extern int invert_(integer *order, real *phi, real *psi, real *rc);\r
-extern int irc2pc_(real *rc, real *pc, integer *order, real *gprime, real *g2pass);\r
-extern int ivfilt_(real *lpbuf, real *ivbuf, integer *len, integer *nsamp, real *ivrc);\r
-extern int lpcdec_(integer *bits, real *speech);\r
-extern int initlpcdec_(void);\r
-extern int lpcenc_(real *speech, integer *bits);\r
-extern int initlpcenc_(void);\r
-extern int lpfilt_(real *inbuf, real *lpbuf, integer *len, integer *nsamp);\r
-extern integer median_(integer *d1, integer *d2, integer *d3);\r
-extern int mload_(integer *order, integer *awins, integer *awinf, real *speech, real *phi, real *psi);\r
-extern int onset_(real *pebuf, integer *osbuf, integer *osptr, integer *oslen, integer *sbufl, integer *sbufh, integer *lframe, struct lpc10_encoder_state *st);\r
-extern int pitsyn_(integer *order, integer *voice, integer *pitch, real *rms, real *rc, integer *lframe, integer *ivuv, integer *ipiti, real *rmsi, real *rci, integer *nout, real *ratio, struct lpc10_decoder_state *st);\r
-extern int placea_(integer *ipitch, integer *voibuf, integer *obound, integer *af, integer *vwin, integer *awin, integer *ewin, integer *lframe, integer *maxwin);\r
-extern int placev_(integer *osbuf, integer *osptr, integer *oslen, integer *obound, integer *vwin, integer *af, integer *lframe, integer *minwin, integer *maxwin, integer *dvwinl, integer *dvwinh);\r
-extern int preemp_(real *inbuf, real *pebuf, integer *nsamp, real *coef, real *z__);\r
-extern int prepro_(real *speech, integer *length,\r
-                  struct lpc10_encoder_state *st);\r
-extern int decode_(integer *ipitv, integer *irms, integer *irc, integer *voice, integer *pitch, real *rms, real *rc, struct lpc10_decoder_state *st);\r
-extern integer random_(struct lpc10_decoder_state *st);\r
-extern int rcchk_(integer *order, real *rc1f, real *rc2f);\r
-extern int synths_(integer *voice, integer *pitch, real *rms, real *rc, real *speech, integer *k, struct lpc10_decoder_state *st);\r
-extern int tbdm_(real *speech, integer *lpita, integer *tau, integer *ltau, real *amdf, integer *minptr, integer *maxptr, integer *mintau);\r
-extern int voicin_(integer *vwin, real *inbuf, real *lpbuf, integer *buflim, integer *half, real *minamd, real *maxamd, integer *mintau, real *ivrc, integer *obound, integer *voibuf, integer *af, struct lpc10_encoder_state *st);\r
-extern int vparms_(integer *vwin, real *inbuf, real *lpbuf, integer *buflim, integer *half, real *dither, integer *mintau, integer *zc, integer *lbe, integer *fbe, real *qs, real *rc1, real *ar_b__, real *ar_f__);\r
-\r
-#endif\r
-\r
-\r
-#endif /* ! defined F2C_INCLUDE */\r
diff --git a/libs/codecs/lpc10/f2clib.c b/libs/codecs/lpc10/f2clib.c
deleted file mode 100644 (file)
index aaee644..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:32:10  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*\r
- * f2clib.c\r
- *\r
- * SCCS ID:  @(#)f2clib.c 1.2 96/05/19\r
- */\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef KR_headers\r
-integer pow_ii(ap, bp) integer *ap, *bp;\r
-#else\r
-integer pow_ii(integer *ap, integer *bp)\r
-#endif\r
-{\r
-       integer pow, x, n;\r
-       unsigned long u;\r
-\r
-       x = *ap;\r
-       n = *bp;\r
-\r
-       if (n <= 0) {\r
-               if (n == 0 || x == 1)\r
-                       return 1;\r
-               if (x != -1)\r
-                       return x == 0 ? 1/x : 0;\r
-               n = -n;\r
-               }\r
-       u = n;\r
-       for(pow = 1; ; )\r
-               {\r
-               if(u & 01)\r
-                       pow *= x;\r
-               if(u >>= 1)\r
-                       x *= x;\r
-               else\r
-                       break;\r
-               }\r
-       return(pow);\r
-       }\r
-\r
-\r
-\r
-#ifdef KR_headers\r
-double r_sign(a,b) real *a, *b;\r
-#else\r
-double r_sign(real *a, real *b)\r
-#endif\r
-{\r
-double x;\r
-x = (*a >= 0 ? *a : - *a);\r
-return( *b >= 0 ? x : -x);\r
-}\r
-\r
-\r
-\r
-#ifdef KR_headers\r
-double floor();\r
-integer i_nint(x) real *x;\r
-#else\r
-#undef abs\r
-#include "math.h"\r
-integer i_nint(real *x)\r
-#endif\r
-{\r
-return( (*x)>=0 ?\r
-       floor(*x + .5) : -floor(.5 - *x) );\r
-}\r
diff --git a/libs/codecs/lpc10/ham84.c b/libs/codecs/lpc10/ham84.c
deleted file mode 100644 (file)
index d6a1351..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:32:07  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int ham84_(integer *input, integer *output, integer *errcnt);\r
-#endif\r
-\r
-/* ***************************************************************** */\r
-\r
-/*     HAM84 Version 45G */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:32:07  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/21  15:26:00  jaf */\r
-/* Put comment header in standard form. */\r
-\r
-/* Revision 1.2  1996/03/13  22:00:13  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:47:04  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ***************************************************************** */\r
-\r
-/*  Hamming 8,4 Decoder - can correct 1 out of seven bits */\r
-/*   and can detect up to two errors. */\r
-\r
-/* Input: */\r
-/*  INPUT  - Seven bit data word, 4 bits parameter and */\r
-/*           4 bits parity information */\r
-/* Input/Output: */\r
-/*  ERRCNT - Sums errors detected by Hamming code */\r
-/* Output: */\r
-/*  OUTPUT - 4 corrected parameter bits */\r
-\r
-/* This subroutine is entered with an eight bit word in INPUT.  The 8th */\r
-/* bit is parity and is stripped off.  The remaining 7 bits address the */\r
-/* hamming 8,4 table and the output OUTPUT from the table gives the 4 */\r
-/* bits of corrected data.  If bit 4 is set, no error was detected. */\r
-/* ERRCNT is the number of errors counted. */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int ham84_(integer *input, integer *output, integer *errcnt)\r
-{\r
-    /* Initialized data */\r
-\r
-    static integer dactab[128] = { 16,0,0,3,0,5,14,7,0,9,14,11,14,13,30,14,0,\r
-           9,2,7,4,7,7,23,9,25,10,9,12,9,14,7,0,5,2,11,5,21,6,5,8,11,11,27,\r
-           12,5,14,11,2,1,18,2,12,5,2,7,12,9,2,11,28,12,12,15,0,3,3,19,4,13,\r
-           6,3,8,13,10,3,13,29,14,13,4,1,10,3,20,4,4,7,10,9,26,10,4,13,10,15,\r
-           8,1,6,3,6,5,22,6,24,8,8,11,8,13,6,15,1,17,2,1,4,1,6,15,8,1,10,15,\r
-           12,15,15,31 };\r
-\r
-    integer i__, j, parity;\r
-\r
-/*       Arguments */\r
-/*       Parameters/constants */\r
-/*       Local variables that need not be saved */\r
-/*  Determine parity of input word */\r
-    parity = *input & 255;\r
-    parity ^= parity / 16;\r
-    parity ^= parity / 4;\r
-    parity ^= parity / 2;\r
-    parity &= 1;\r
-    i__ = dactab[*input & 127];\r
-    *output = i__ & 15;\r
-    j = i__ & 16;\r
-    if (j != 0) {\r
-/*          No errors detected in seven bits */\r
-       if (parity != 0) {\r
-           ++(*errcnt);\r
-       }\r
-    } else {\r
-/*          One or two errors detected */\r
-       ++(*errcnt);\r
-       if (parity == 0) {\r
-/*             Two errors detected */\r
-           ++(*errcnt);\r
-           *output = -1;\r
-       }\r
-    }\r
-    return 0;\r
-} /* ham84_ */\r
-\r
diff --git a/libs/codecs/lpc10/hp100.c b/libs/codecs/lpc10/hp100.c
deleted file mode 100644 (file)
index 7c2798e..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:28:05  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:04  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int hp100_(real *speech, integer *start, integer *end,\r
-                 struct lpc10_encoder_state *st);\r
-extern int inithp100_(void);\r
-#endif\r
-\r
-/* ********************************************************************* */\r
-\r
-/*      HP100 Version 55 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:28:05  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:32:04  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.6  1996/03/15  16:45:25  jaf */\r
-/* Rearranged a few comments. */\r
-\r
-/* Revision 1.5  1996/03/14  23:20:54  jaf */\r
-/* Added comments about when INITHP100 should be used. */\r
-\r
-/* Revision 1.4  1996/03/14  23:08:08  jaf */\r
-/* Added an entry named INITHP100 that initializes the local state of */\r
-/* subroutine HP100. */\r
-\r
-/* Revision 1.3  1996/03/14  22:09:20  jaf */\r
-/* Comments added explaining which of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next, and which */\r
-/* do not. */\r
-\r
-/* Revision 1.2  1996/02/12  15:05:54  jaf */\r
-/* Added lots of comments explaining why I changed one line, which was a */\r
-/* declaration with initializations. */\r
-\r
-/* Revision 1.1  1996/02/07 14:47:12  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ********************************************************************* */\r
-\r
-/*    100 Hz High Pass Filter */\r
-\r
-/* Jan 92 - corrected typo (1.937148 to 1.935715), */\r
-/*          rounded coefficients to 7 places, */\r
-/*          corrected and merged gain (.97466**4), */\r
-/*          merged numerator into first two sections. */\r
-\r
-/* Input: */\r
-/*  start, end - Range of samples to filter */\r
-/* Input/Output: */\r
-/*  speech(end) - Speech data. */\r
-/*                Indices start through end are read and modified. */\r
-\r
-/* This subroutine maintains local state from one call to the next.  If */\r
-/* you want to switch to using a new audio stream for this filter, or */\r
-/* reinitialize its state for any other reason, call the ENTRY */\r
-/* INITHP100. */\r
-/* Subroutine */ int hp100_(real *speech, integer *start, integer *end,\r
-       struct lpc10_encoder_state *st)\r
-{\r
-    /* Temporary local copies of variables in lpc10_encoder_state.\r
-       I've only created these because it might cause the loop below\r
-       to execute a bit faster to access local variables, rather than\r
-       variables in the lpc10_encoder_state structure.  It is just a\r
-       guess that it will be faster. */\r
-\r
-    real z11;\r
-    real z21;\r
-    real z12;\r
-    real z22;\r
-\r
-    /* System generated locals */\r
-    integer i__1;\r
-\r
-    /* Local variables */\r
-    integer i__;\r
-    real si, err;\r
-\r
-/*       Arguments */\r
-/*       Local variables that need not be saved */\r
-/*       Local state */\r
-    /* Parameter adjustments */\r
-    if (speech) {\r
-       --speech;\r
-       }\r
-\r
-    /* Function Body */\r
-\r
-    z11 = st->z11;\r
-    z21 = st->z21;\r
-    z12 = st->z12;\r
-    z22 = st->z22;\r
-\r
-    i__1 = *end;\r
-    for (i__ = *start; i__ <= i__1; ++i__) {\r
-       si = speech[i__];\r
-       err = si + z11 * 1.859076f - z21 * .8648249f;\r
-       si = err - z11 * 2.f + z21;\r
-       z21 = z11;\r
-       z11 = err;\r
-       err = si + z12 * 1.935715f - z22 * .9417004f;\r
-       si = err - z12 * 2.f + z22;\r
-       z22 = z12;\r
-       z12 = err;\r
-       speech[i__] = si * .902428f;\r
-    }\r
-\r
-    st->z11 = z11;\r
-    st->z21 = z21;\r
-    st->z12 = z12;\r
-    st->z22 = z22;\r
-\r
-    return 0;\r
-} /* hp100_ */\r
diff --git a/libs/codecs/lpc10/invert.c b/libs/codecs/lpc10/invert.c
deleted file mode 100644 (file)
index 8891d1c..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:32:00  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int invert_(integer *order, real *phi, real *psi, real *rc);\r
-#endif\r
-\r
-/* **************************************************************** */\r
-\r
-/*     INVERT Version 45G */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:32:00  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/18  20:52:47  jaf */\r
-/* Just added a few comments about which array indices of the arguments */\r
-/* are used, and mentioning that this subroutine has no local state. */\r
-\r
-/* Revision 1.2  1996/03/13  16:51:32  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Eliminated a comment from the original, describing a local array X */\r
-/* that appeared nowhere in the code. */\r
-\r
-/* Revision 1.1  1996/02/07 14:47:20  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* **************************************************************** */\r
-\r
-/*  Invert a covariance matrix using Choleski decomposition method. */\r
-\r
-/* Input: */\r
-/*  ORDER            - Analysis order */\r
-/*  PHI(ORDER,ORDER) - Covariance matrix */\r
-/*                    Indices (I,J) read, where ORDER .GE. I .GE. J .GE. 1.*/\r
-/*                     All other indices untouched. */\r
-/*  PSI(ORDER)       - Column vector to be predicted */\r
-/*                     Indices 1 through ORDER read. */\r
-/* Output: */\r
-/*  RC(ORDER)        - Pseudo reflection coefficients */\r
-/*                    Indices 1 through ORDER written, and then possibly read.\r
-*/\r
-/* Internal: */\r
-/*  V(ORDER,ORDER)   - Temporary matrix */\r
-/*                     Same indices written as read from PHI. */\r
-/*                     Many indices may be read and written again after */\r
-/*                     initially being copied from PHI, but all indices */\r
-/*                     are written before being read. */\r
-\r
-/*  NOTE: Temporary matrix V is not needed and may be replaced */\r
-/*    by PHI if the original PHI values do not need to be preserved. */\r
-\r
-/* Subroutine */ int invert_(integer *order, real *phi, real *psi, real *rc)\r
-{\r
-    /* System generated locals */\r
-    integer phi_dim1, phi_offset, i__1, i__2, i__3;\r
-    real r__1, r__2;\r
-\r
-    /* Local variables */\r
-    real save;\r
-    integer i__, j, k;\r
-    real v[100]        /* was [10][10] */;\r
-\r
-/*       Arguments */\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:32:00  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:03:47  jaf */\r
-/* Removed definitions for any constants that were no longer used. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:33  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:43:51  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Configuration parameters: */\r
-/* Frame size, Prediction order, Pitch period */\r
-/*     Parameters/constants */\r
-/*       Local variables that need not be saved */\r
-/*  Decompose PHI into V * D * V' where V is a triangular matrix whose */\r
-/*   main diagonal elements are all 1, V' is the transpose of V, and */\r
-/*   D is a vector.  Here D(n) is stored in location V(n,n). */\r
-    /* Parameter adjustments */\r
-    --rc;\r
-    --psi;\r
-    phi_dim1 = *order;\r
-    phi_offset = phi_dim1 + 1;\r
-    phi -= phi_offset;\r
-\r
-    /* Function Body */\r
-    i__1 = *order;\r
-    for (j = 1; j <= i__1; ++j) {\r
-       i__2 = *order;\r
-       for (i__ = j; i__ <= i__2; ++i__) {\r
-           v[i__ + j * 10 - 11] = phi[i__ + j * phi_dim1];\r
-       }\r
-       i__2 = j - 1;\r
-       for (k = 1; k <= i__2; ++k) {\r
-           save = v[j + k * 10 - 11] * v[k + k * 10 - 11];\r
-           i__3 = *order;\r
-           for (i__ = j; i__ <= i__3; ++i__) {\r
-               v[i__ + j * 10 - 11] -= v[i__ + k * 10 - 11] * save;\r
-           }\r
-       }\r
-/*  Compute intermediate results, which are similar to RC's */\r
-       if ((r__1 = v[j + j * 10 - 11], abs(r__1)) < 1e-10f) {\r
-           goto L100;\r
-       }\r
-       rc[j] = psi[j];\r
-       i__2 = j - 1;\r
-       for (k = 1; k <= i__2; ++k) {\r
-           rc[j] -= rc[k] * v[j + k * 10 - 11];\r
-       }\r
-       v[j + j * 10 - 11] = 1.f / v[j + j * 10 - 11];\r
-       rc[j] *= v[j + j * 10 - 11];\r
-/* Computing MAX */\r
-/* Computing MIN */\r
-       r__2 = rc[j];\r
-       r__1 = min(r__2,.999f);\r
-       rc[j] = max(r__1,-.999f);\r
-    }\r
-    return 0;\r
-/*  Zero out higher order RC's if algorithm terminated early */\r
-L100:\r
-    i__1 = *order;\r
-    for (i__ = j; i__ <= i__1; ++i__) {\r
-       rc[i__] = 0.f;\r
-    }\r
-/*  Back substitute for PC's (if needed) */\r
-/* 110 DO J = ORDER,1,-1 */\r
-/*        PC(J) = RC(J) */\r
-/*        DO I = 1,J-1 */\r
-/*           PC(J) = PC(J) - PC(I)*V(J,I) */\r
-/*        END DO */\r
-/*     END DO */\r
-    return 0;\r
-} /* invert_ */\r
-\r
diff --git a/libs/codecs/lpc10/irc2pc.c b/libs/codecs/lpc10/irc2pc.c
deleted file mode 100644 (file)
index 2a62881..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:31:56  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int irc2pc_(real *rc, real *pc, integer *order, real *gprime, real *g2pass);\r
-#endif\r
-\r
-/* ***************************************************************** */\r
-\r
-/*     IRC2PC Version 48 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:31:56  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/20  15:47:19  jaf */\r
-/* Added comments about which indices of array arguments are read or */\r
-/* written. */\r
-\r
-/* Revision 1.2  1996/03/14  16:59:04  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:47:27  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ***************************************************************** */\r
-\r
-/*   Convert Reflection Coefficients to Predictor Coeficients */\r
-\r
-/* Inputs: */\r
-/*  RC     - Reflection coefficients */\r
-/*           Indices 1 through ORDER read. */\r
-/*  ORDER  - Number of RC's */\r
-/*  GPRIME - Excitation modification gain */\r
-/* Outputs: */\r
-/*  PC     - Predictor coefficients */\r
-/*           Indices 1 through ORDER written. */\r
-/*           Indices 1 through ORDER-1 are read after being written. */\r
-/*  G2PASS - Excitation modification sharpening factor */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int irc2pc_(real *rc, real *pc, integer *order, real *gprime,\r
-        real *g2pass)\r
-{\r
-    /* System generated locals */\r
-    integer i__1, i__2;\r
-\r
-    /* Builtin functions */\r
-    double sqrt(doublereal);\r
-\r
-    /* Local variables */\r
-    real temp[10];\r
-    integer i__, j;\r
-\r
-/*     Arguments */\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:31:56  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:03:47  jaf */\r
-/* Removed definitions for any constants that were no longer used. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:33  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:43:51  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Configuration parameters: */\r
-/* Frame size, Prediction order, Pitch period */\r
-/*       Local variables that need not be saved */\r
-    /* Parameter adjustments */\r
-    --pc;\r
-    --rc;\r
-\r
-    /* Function Body */\r
-    *g2pass = 1.f;\r
-    i__1 = *order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       *g2pass *= 1.f - rc[i__] * rc[i__];\r
-    }\r
-    *g2pass = *gprime * sqrt(*g2pass);\r
-    pc[1] = rc[1];\r
-    i__1 = *order;\r
-    for (i__ = 2; i__ <= i__1; ++i__) {\r
-       i__2 = i__ - 1;\r
-       for (j = 1; j <= i__2; ++j) {\r
-           temp[j - 1] = pc[j] - rc[i__] * pc[i__ - j];\r
-       }\r
-       i__2 = i__ - 1;\r
-       for (j = 1; j <= i__2; ++j) {\r
-           pc[j] = temp[j - 1];\r
-       }\r
-       pc[i__] = rc[i__];\r
-    }\r
-    return 0;\r
-} /* irc2pc_ */\r
-\r
diff --git a/libs/codecs/lpc10/ivfilt.c b/libs/codecs/lpc10/ivfilt.c
deleted file mode 100644 (file)
index 625dd3e..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.16  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.15  2003/09/19 01:20:22  markster\r
-Code cleanups (bug #66)\r
-\r
-Revision 1.2  2003/09/19 01:20:22  markster\r
-Code cleanups (bug #66)\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:31:53  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int ivfilt_(real *lpbuf, real *ivbuf, integer *len, integer *nsamp, real *ivrc);\r
-#endif\r
-\r
-/* ********************************************************************* */\r
-\r
-/*     IVFILT Version 48 */\r
-\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.2  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:31:53  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/15  21:36:29  jaf */\r
-/* Just added a few comments about which array indices of the arguments */\r
-/* are used, and mentioning that this subroutine has no local state. */\r
-\r
-/* Revision 1.2  1996/03/13  00:01:00  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:47:34  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ********************************************************************* */\r
-\r
-/*   2nd order inverse filter, speech is decimated 4:1 */\r
-\r
-/* Input: */\r
-/*  LEN    - Length of speech buffers */\r
-/*  NSAMP  - Number of samples to filter */\r
-/*  LPBUF  - Low pass filtered speech buffer */\r
-/*           Indices LEN-NSAMP-7 through LEN read. */\r
-/* Output: */\r
-/*  IVBUF  - Inverse filtered speech buffer */\r
-/*           Indices LEN-NSAMP+1 through LEN written. */\r
-/*  IVRC   - Inverse filter reflection coefficients (for voicing) */\r
-/*          Indices 1 and 2 both written (also read, but only after writing).\r
-*/\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int ivfilt_(real *lpbuf, real *ivbuf, integer *len, integer *\r
-       nsamp, real *ivrc)\r
-{\r
-    /* System generated locals */\r
-    integer i__1;\r
-\r
-    /* Local variables */\r
-    integer i__, j, k;\r
-    real r__[3], pc1, pc2;\r
-\r
-/*     Arguments */\r
-/*       Local variables that need not be saved */\r
-/*       Local state */\r
-/*       None */\r
-/*  Calculate Autocorrelations */\r
-    /* Parameter adjustments */\r
-    --ivbuf;\r
-    --lpbuf;\r
-    --ivrc;\r
-\r
-    /* Function Body */\r
-    for (i__ = 1; i__ <= 3; ++i__) {\r
-       r__[i__ - 1] = 0.f;\r
-       k = (i__ - 1) << 2;\r
-       i__1 = *len;\r
-       for (j = (i__ << 2) + *len - *nsamp; j <= i__1; j += 2) {\r
-           r__[i__ - 1] += lpbuf[j] * lpbuf[j - k];\r
-       }\r
-    }\r
-/*  Calculate predictor coefficients */\r
-    pc1 = 0.f;\r
-    pc2 = 0.f;\r
-    ivrc[1] = 0.f;\r
-    ivrc[2] = 0.f;\r
-    if (r__[0] > 1e-10f) {\r
-       ivrc[1] = r__[1] / r__[0];\r
-       ivrc[2] = (r__[2] - ivrc[1] * r__[1]) / (r__[0] - ivrc[1] * r__[1]);\r
-       pc1 = ivrc[1] - ivrc[1] * ivrc[2];\r
-       pc2 = ivrc[2];\r
-    }\r
-/*  Inverse filter LPBUF into IVBUF */\r
-    i__1 = *len;\r
-    for (i__ = *len + 1 - *nsamp; i__ <= i__1; ++i__) {\r
-       ivbuf[i__] = lpbuf[i__] - pc1 * lpbuf[i__ - 4] - pc2 * lpbuf[i__ - 8];\r
-    }\r
-    return 0;\r
-} /* ivfilt_ */\r
-\r
diff --git a/libs/codecs/lpc10/lpc10.h b/libs/codecs/lpc10/lpc10.h
deleted file mode 100644 (file)
index 17d0491..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.18  2004/08/31 13:32:11  markster\r
-Merge NetBSD and Courtesty tone with modifications (bug #2329)\r
-\r
-Revision 1.17  2003/10/26 18:50:49  markster\r
-Make it build and run on MacOS X\r
-\r
-Revision 1.3  2003/10/26 18:50:49  markster\r
-Make it build and run on MacOS X\r
-\r
-Revision 1.2  2003/04/23 19:13:35  markster\r
-More OpenBSD patches\r
-\r
-Revision 1.1.1.2  2003/03/16 22:37:30  matteo\r
-dom mar 16 23:37:23 CET 2003\r
-\r
-Revision 1.2  2003/03/16 16:09:48  markster\r
-Mere James's cleanups for fewer build warnings\r
-\r
-Revision 1.1  2000/01/05 00:20:06  markster\r
-Add broken lpc10 code...  It's not too far from working I don't think...\r
-\r
- * Revision 1.1  1996/08/19  22:47:31  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-#ifndef __LPC10_H__\r
-#define __LPC10_H__\r
-\r
-#define LPC10_SAMPLES_PER_FRAME 180\r
-#define LPC10_BITS_IN_COMPRESSED_FRAME 54\r
-\r
-\r
-/*\r
-\r
-  The "#if defined"'s in this file are by no means intended to be\r
-  complete.  They are what Nautilus uses, which has been successfully\r
-  compiled under DOS with the Microsoft C compiler, and under a few\r
-  versions of Unix with the GNU C compiler.\r
-\r
- */\r
-\r
-#if defined(unix) || defined(__unix__) || defined(__NetBSD__)\r
-typedef short          INT16;\r
-typedef int            INT32;\r
-#endif\r
-\r
-\r
-#if defined(__MSDOS__) || defined(MSDOS)\r
-typedef int            INT16;\r
-typedef long           INT32;\r
-#endif\r
-\r
-#if defined(__APPLE__)\r
-typedef short          INT16;\r
-typedef int            INT32;\r
-#endif\r
-\r
-\r
-/* The initial values for every member of this structure is 0, except\r
-   where noted in comments. */\r
-\r
-/* These two lines are copied from f2c.h.  There should be a more\r
-   elegant way of doing this than having the same declarations in two\r
-   files. */\r
-\r
-typedef float real;\r
-typedef INT32 integer;\r
-typedef INT32 logical;\r
-typedef INT16 shortint;\r
-\r
-struct lpc10_encoder_state {\r
-    /* State used only by function hp100 */\r
-    real z11;\r
-    real z21;\r
-    real z12;\r
-    real z22;\r
-    \r
-    /* State used by function analys */\r
-    real inbuf[540], pebuf[540];\r
-    real lpbuf[696], ivbuf[312];\r
-    real bias;\r
-    integer osbuf[10];  /* no initial value necessary */\r
-    integer osptr;     /* initial value 1 */\r
-    integer obound[3];\r
-    integer vwin[6]    /* was [2][3] */;   /* initial value vwin[4] = 307; vwin[5] = 462; */\r
-    integer awin[6]    /* was [2][3] */;   /* initial value awin[4] = 307; awin[5] = 462; */\r
-    integer voibuf[8]  /* was [2][4] */;\r
-    real rmsbuf[3];\r
-    real rcbuf[30]     /* was [10][3] */;\r
-    real zpre;\r
-\r
-\r
-    /* State used by function onset */\r
-    real n;\r
-    real d__;   /* initial value 1.f */\r
-    real fpc;   /* no initial value necessary */\r
-    real l2buf[16];\r
-    real l2sum1;\r
-    integer l2ptr1;   /* initial value 1 */\r
-    integer l2ptr2;   /* initial value 9 */\r
-    integer lasti;    /* no initial value necessary */\r
-    logical hyst;   /* initial value FALSE_ */\r
-\r
-    /* State used by function voicin */\r
-    real dither;   /* initial value 20.f */\r
-    real snr;\r
-    real maxmin;\r
-    real voice[6]      /* was [2][3] */;   /* initial value is probably unnecessary */\r
-    integer lbve, lbue, fbve, fbue;\r
-    integer ofbue, sfbue;\r
-    integer olbue, slbue;\r
-    /* Initial values:\r
-       lbve = 3000;\r
-       fbve = 3000;\r
-       fbue = 187;\r
-       ofbue = 187;\r
-       sfbue = 187;\r
-       lbue = 93;\r
-       olbue = 93;\r
-       slbue = 93;\r
-       snr = (real) (fbve / fbue << 6);\r
-       */\r
-\r
-    /* State used by function dyptrk */\r
-    real s[60];\r
-    integer p[120]     /* was [60][2] */;\r
-    integer ipoint;\r
-    real alphax;\r
-\r
-    /* State used by function chanwr */\r
-    integer isync;\r
-\r
-};\r
-\r
-\r
-struct lpc10_decoder_state {\r
-\r
-    /* State used by function decode */\r
-    integer iptold;   /* initial value 60 */\r
-    logical first;   /* initial value TRUE_ */\r
-    integer ivp2h;\r
-    integer iovoic;\r
-    integer iavgp;   /* initial value 60 */\r
-    integer erate;\r
-    integer drc[30]    /* was [3][10] */;\r
-    integer dpit[3];\r
-    integer drms[3];\r
-\r
-    /* State used by function synths */\r
-    real buf[360];\r
-    integer buflen;   /* initial value 180 */\r
-\r
-    /* State used by function pitsyn */\r
-    integer ivoico;   /* no initial value necessary as long as first_pitsyn is initially TRUE_ */\r
-    integer ipito;   /* no initial value necessary as long as first_pitsyn is initially TRUE_ */\r
-    real rmso;   /* initial value 1.f */\r
-    real rco[10];   /* no initial value necessary as long as first_pitsyn is initially TRUE_ */\r
-    integer jsamp;   /* no initial value necessary as long as first_pitsyn is initially TRUE_ */\r
-    logical first_pitsyn;   /* initial value TRUE_ */\r
-\r
-    /* State used by function bsynz */\r
-    integer ipo;\r
-    real exc[166];\r
-    real exc2[166];\r
-    real lpi1;\r
-    real lpi2;\r
-    real lpi3;\r
-    real hpi1;\r
-    real hpi2;\r
-    real hpi3;\r
-    real rmso_bsynz;\r
-\r
-    /* State used by function random */\r
-    integer j;   /* initial value 2 */\r
-    integer k;   /* initial value 5 */\r
-    shortint y[5];  /* initial value { -21161,-8478,30892,-10216,16950 } */\r
-\r
-    /* State used by function deemp */\r
-    real dei1;\r
-    real dei2;\r
-    real deo1;\r
-    real deo2;\r
-    real deo3;\r
-\r
-};\r
-\r
-\r
-\r
-/*\r
-\r
-  Calling sequence:\r
-\r
-  Call create_lpc10_encoder_state(), which returns a pointer to an\r
-  already initialized lpc10_encoder_state structure.\r
-\r
-  lpc10_encode reads indices 0 through (LPC10_SAMPLES_PER_FRAME-1) of\r
-  array speech[], and writes indices 0 through\r
-  (LPC10_BITS_IN_COMPRESSED_FRAME-1) of array bits[], and both reads\r
-  and writes the lpc10_encoder_state structure contents.  The\r
-  lpc10_encoder_state structure should *not* be initialized for every\r
-  frame of encoded speech.  Once at the beginning of execution, done\r
-  automatically for you by create_lpc10_encoder_state(), is enough.\r
-\r
-  init_lpc10_encoder_state() reinitializes the lpc10_encoder_state\r
-  structure.  This might be useful if you are finished processing one\r
-  sound sample, and want to reuse the same lpc10_encoder_state\r
-  structure to process another sound sample.  There might be other\r
-  uses as well.\r
-\r
-  Note that the comments in the lpc10/lpcenc.c file imply that indices\r
-  1 through 180 of array speech[] are read.  These comments were\r
-  written for the Fortran version of the code, before it was\r
-  automatically converted to C by the conversion program f2c.  f2c\r
-  seems to use the convention that the pointers to arrays passed as\r
-  function arguments point to the first index used in the Fortran\r
-  code, whatever index that might be (usually 1), and then it modifies\r
-  the pointer inside of the function, like so:\r
-\r
-  if (speech) {\r
-      --speech;\r
-  }\r
-\r
-  So that the code can access the first value at index 1 and the last\r
-  at index 180.  This makes the translated C code "closer" to the\r
-  original Fortran code.\r
-\r
-  The calling sequence for the decoder is similar to the encoder.  The\r
-  only significant difference is that the array bits[] is read\r
-  (indices 0 through (LPC10_BITS_IN_COMPRESSED_FRAME-1)), and the\r
-  array speech[] is written (indices 0 through\r
-  (LPC10_SAMPLES_PER_FRAME-1)).\r
-  \r
-  */\r
-\r
-struct lpc10_encoder_state * create_lpc10_encoder_state (void);\r
-void init_lpc10_encoder_state (struct lpc10_encoder_state *st);\r
-int lpc10_encode (real *speech, INT32 *bits, struct lpc10_encoder_state *st);\r
-\r
-struct lpc10_decoder_state * create_lpc10_decoder_state (void);\r
-void init_lpc10_decoder_state (struct lpc10_decoder_state *st);\r
-int lpc10_decode (INT32 *bits, real *speech, struct lpc10_decoder_state *st);\r
-\r
-#endif /* __LPC10_H__ */\r
diff --git a/libs/codecs/lpc10/lpcdec.c b/libs/codecs/lpc10/lpcdec.c
deleted file mode 100644 (file)
index 095f6f7..0000000
+++ /dev/null
@@ -1,297 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:30:11  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Changed name of function from lpcenc_ to lpc10_encode, simply to make\r
- * all lpc10 functions have more consistent naming with each other.\r
- *\r
- * Revision 1.1  1996/08/19  22:31:48  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int lpcdec_(integer *bits, real *speech);\r
-extern int initlpcdec_(void);\r
-/* comlen contrl_ 12 */\r
-/*:ref: chanrd_ 14 5 4 4 4 4 4 */\r
-/*:ref: decode_ 14 7 4 4 4 4 4 6 6 */\r
-/*:ref: synths_ 14 6 4 4 6 6 6 4 */\r
-/*:ref: initdecode_ 14 0 */\r
-/*:ref: initsynths_ 14 0 */\r
-#endif\r
-\r
-/* Common Block Declarations */\r
-\r
-extern struct {\r
-    integer order, lframe;\r
-    logical corrp;\r
-} contrl_;\r
-\r
-#define contrl_1 contrl_\r
-\r
-/* Table of constant values */\r
-\r
-static integer c__10 = 10;\r
-\r
-/* ***************************************************************** */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:30:11  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Changed name of function from lpcenc_ to lpc10_encode, simply to make\r
- * all lpc10 functions have more consistent naming with each other.\r
- *\r
- * Revision 1.1  1996/08/19  22:31:48  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.1  1996/03/28  00:03:00  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ***************************************************************** */\r
-\r
-/* Decode 54 bits to one frame of 180 speech samples. */\r
-\r
-/* Input: */\r
-/*  BITS   - 54 encoded bits, stored 1 per array element. */\r
-/*           Indices 1 through 53 read (SYNC bit ignored). */\r
-/* Output: */\r
-/*  SPEECH - Speech encoded as real values in the range [-1,+1]. */\r
-/*           Indices 1 through 180 written. */\r
-\r
-/* This subroutine maintains local state from one call to the next.  If */\r
-/* you want to switch to using a new audio stream for this filter, or */\r
-/* reinitialize its state for any other reason, call the ENTRY */\r
-/* INITLPCDEC. */\r
-\r
-/* Subroutine */ int lpc10_decode(integer *bits, real *speech,\r
-                                 struct lpc10_decoder_state *st)\r
-{\r
-    integer irms, voice[2], pitch, ipitv;\r
-    extern /* Subroutine */ int decode_(integer *, integer *, integer *, \r
-           integer *, integer *, real *, real *, struct lpc10_decoder_state *);\r
-    real rc[10];\r
-    extern /* Subroutine */ int chanrd_(integer *, integer *, integer *, \r
-           integer *, integer *), synths_(integer *, \r
-           integer *, real *, real *, real *, integer *,\r
-                                          struct lpc10_decoder_state *);\r
-    integer irc[10], len;\r
-    real rms;\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:30:11  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Changed name of function from lpcenc_ to lpc10_encode, simply to make\r
- * all lpc10 functions have more consistent naming with each other.\r
- *\r
- * Revision 1.1  1996/08/19  22:31:48  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:03:47  jaf */\r
-/* Removed definitions for any constants that were no longer used. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:33  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:43:51  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Configuration parameters: */\r
-/* Frame size, Prediction order, Pitch period */\r
-/*       Arguments */\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:30:11  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Changed name of function from lpcenc_ to lpc10_encode, simply to make\r
- * all lpc10 functions have more consistent naming with each other.\r
- *\r
- * Revision 1.1  1996/08/19  22:31:48  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:05:55  jaf */\r
-/* Commented out the common block variables that are not needed by the */\r
-/* embedded version. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:50  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:44:09  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Processing control variables: */\r
-\r
-/* *** Read-only: initialized in setup */\r
-\r
-/*  Files for Speech, Parameter, and Bitstream Input & Output, */\r
-/*    and message and debug outputs. */\r
-\r
-/* Here are the only files which use these variables: */\r
-\r
-/* lpcsim.f setup.f trans.f error.f vqsetup.f */\r
-\r
-/* Many files which use fdebug are not listed, since it is only used in */\r
-/* those other files conditionally, to print trace statements. */\r
-/*     integer fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*  LPC order, Frame size, Quantization rate, Bits per frame, */\r
-/*    Error correction */\r
-/* Subroutine SETUP is the only place where order is assigned a value, */\r
-/* and that value is 10.  It could increase efficiency 1% or so to */\r
-/* declare order as a constant (i.e., a Fortran PARAMETER) instead of as \r
-*/\r
-/* a variable in a COMMON block, since it is used in many places in the */\r
-/* core of the coding and decoding routines.  Actually, I take that back. \r
-*/\r
-/* At least when compiling with f2c, the upper bound of DO loops is */\r
-/* stored in a local variable before the DO loop begins, and then that is \r
-*/\r
-/* compared against on each iteration. */\r
-/* Similarly for lframe, which is given a value of MAXFRM in SETUP. */\r
-/* Similarly for quant, which is given a value of 2400 in SETUP.  quant */\r
-/* is used in only a few places, and never in the core coding and */\r
-/* decoding routines, so it could be eliminated entirely. */\r
-/* nbits is similar to quant, and is given a value of 54 in SETUP. */\r
-/* corrp is given a value of .TRUE. in SETUP, and is only used in the */\r
-/* subroutines ENCODE and DECODE.  It doesn't affect the speed of the */\r
-/* coder significantly whether it is .TRUE. or .FALSE., or whether it is \r
-*/\r
-/* a constant or a variable, since it is only examined once per frame. */\r
-/* Leaving it as a variable that is set to .TRUE.  seems like a good */\r
-/* idea, since it does enable some error-correction capability for */\r
-/* unvoiced frames, with no change in the coding rate, and no noticeable \r
-*/\r
-/* quality difference in the decoded speech. */\r
-/*     integer quant, nbits */\r
-/* *** Read/write: variables for debugging, not needed for LPC algorithm \r
-*/\r
-\r
-/*  Current frame, Unstable frames, Output clip count, Max onset buffer, \r
-*/\r
-/*    Debug listing detail level, Line count on listing page */\r
-\r
-/* nframe is not needed for an embedded LPC10 at all. */\r
-/* nunsfm is initialized to 0 in SETUP, and incremented in subroutine */\r
-/* ERROR, which is only called from RCCHK.  When LPC10 is embedded into */\r
-/* an application, I would recommend removing the call to ERROR in RCCHK, \r
-*/\r
-/* and remove ERROR and nunsfm completely. */\r
-/* iclip is initialized to 0 in SETUP, and incremented in entry SWRITE in \r
-*/\r
-/* sread.f.  When LPC10 is embedded into an application, one might want */\r
-/* to cause it to be incremented in a routine that takes the output of */\r
-/* SYNTHS and sends it to an audio device.  It could be optionally */\r
-/* displayed, for those that might want to know what it is. */\r
-/* maxosp is never initialized to 0 in SETUP, although it probably should \r
-*/\r
-/* be, and it is updated in subroutine ANALYS.  I doubt that its value */\r
-/* would be of much interest to an application in which LPC10 is */\r
-/* embedded. */\r
-/* listl and lincnt are not needed for an embedded LPC10 at all. */\r
-/*     integer nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*     common /contrl/ fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*     common /contrl/ quant, nbits */\r
-/*     common /contrl/ nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*       Local variables that need not be saved */\r
-/*       Uncoded speech parameters */\r
-/*       Coded speech parameters */\r
-/*       Others */\r
-/*       Local state */\r
-/*       None */\r
-    /* Parameter adjustments */\r
-    if (bits) {\r
-       --bits;\r
-       }\r
-    if (speech) {\r
-       --speech;\r
-       }\r
-\r
-    /* Function Body */\r
-\r
-    chanrd_(&c__10, &ipitv, &irms, irc, &bits[1]);\r
-    decode_(&ipitv, &irms, irc, voice, &pitch, &rms, rc, st);\r
-    synths_(voice, &pitch, &rms, rc, &speech[1], &len, st);\r
-    return 0;\r
-} /* lpcdec_ */\r
diff --git a/libs/codecs/lpc10/lpcenc.c b/libs/codecs/lpc10/lpcenc.c
deleted file mode 100644 (file)
index cb90d21..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:31:21  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Changed name of function from lpcenc_ to lpc10_encode, simply to make\r
- * all lpc10 functions have more consistent naming with each other.\r
- *\r
- * Revision 1.1  1996/08/19  22:31:44  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int lpcenc_(real *speech, integer *bits);\r
-extern int initlpcenc_(void);\r
-/*:ref: prepro_ 14 2 6 4 */\r
-/*:ref: analys_ 14 5 6 4 4 6 6 */\r
-/*:ref: encode_ 14 7 4 4 6 6 4 4 4 */\r
-/*:ref: chanwr_ 14 5 4 4 4 4 4 */\r
-/*:ref: initprepro_ 14 0 */\r
-/*:ref: initanalys_ 14 0 */\r
-#endif\r
-\r
-/* Table of constant values */\r
-\r
-static integer c__180 = 180;\r
-static integer c__10 = 10;\r
-\r
-/* ***************************************************************** */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:31:21  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Changed name of function from lpcenc_ to lpc10_encode, simply to make\r
- * all lpc10 functions have more consistent naming with each other.\r
- *\r
- * Revision 1.1  1996/08/19  22:31:44  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.2  1996/03/28  00:01:22  jaf */\r
-/* Commented out some trace statements. */\r
-\r
-/* Revision 1.1  1996/03/28  00:00:27  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ***************************************************************** */\r
-\r
-/* Encode one frame of 180 speech samples to 54 bits. */\r
-\r
-/* Input: */\r
-/*  SPEECH - Speech encoded as real values in the range [-1,+1]. */\r
-/*           Indices 1 through 180 read, and modified (by PREPRO). */\r
-/* Output: */\r
-/*  BITS   - 54 encoded bits, stored 1 per array element. */\r
-/*           Indices 1 through 54 written. */\r
-\r
-/* This subroutine maintains local state from one call to the next.  If */\r
-/* you want to switch to using a new audio stream for this filter, or */\r
-/* reinitialize its state for any other reason, call the ENTRY */\r
-/* INITLPCENC. */\r
-\r
-/* Subroutine */ int lpc10_encode(real *speech, integer *bits,\r
-                                 struct lpc10_encoder_state *st)\r
-{\r
-    integer irms, voice[2], pitch, ipitv;\r
-    real rc[10];\r
-    extern /* Subroutine */ int encode_(integer *, integer *, real *, real *, \r
-           integer *, integer *, integer *), chanwr_(integer *, integer *, \r
-           integer *, integer *, integer *, struct lpc10_encoder_state *),\r
-            analys_(real *, integer *, \r
-           integer *, real *, real *, struct lpc10_encoder_state *),\r
-            prepro_(real *, integer *, struct lpc10_encoder_state *);\r
-    integer irc[10];\r
-    real rms;\r
-\r
-/*       Arguments */\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:31:21  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Changed name of function from lpcenc_ to lpc10_encode, simply to make\r
- * all lpc10 functions have more consistent naming with each other.\r
- *\r
- * Revision 1.1  1996/08/19  22:31:44  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:03:47  jaf */\r
-/* Removed definitions for any constants that were no longer used. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:33  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:43:51  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Configuration parameters: */\r
-/* Frame size, Prediction order, Pitch period */\r
-/*       Local variables that need not be saved */\r
-/*       Uncoded speech parameters */\r
-/*       Coded speech parameters */\r
-/*       Local state */\r
-/*       None */\r
-    /* Parameter adjustments */\r
-    if (speech) {\r
-       --speech;\r
-       }\r
-    if (bits) {\r
-       --bits;\r
-       }\r
-\r
-    /* Function Body */\r
-    prepro_(&speech[1], &c__180, st);\r
-    analys_(&speech[1], voice, &pitch, &rms, rc, st);\r
-    encode_(voice, &pitch, &rms, rc, &ipitv, &irms, irc);\r
-    chanwr_(&c__10, &ipitv, &irms, irc, &bits[1], st);\r
-    return 0;\r
-} /* lpcenc_ */\r
diff --git a/libs/codecs/lpc10/lpcini.c b/libs/codecs/lpc10/lpcini.c
deleted file mode 100644 (file)
index fbaf2f6..0000000
+++ /dev/null
@@ -1,446 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.18  2003/10/21 18:08:11  markster\r
-Fix include order\r
-\r
-Revision 1.5  2003/10/21 18:08:11  markster\r
-Fix include order\r
-\r
-Revision 1.4  2003/10/21 02:57:29  markster\r
-FreeBSD patch, take 2\r
-\r
-Revision 1.3  2003/10/16 21:11:30  martinp\r
-Revert the previous patch since it's braking compilation\r
-\r
-Revision 1.1  2003/02/12 13:59:15  matteo\r
-Initial revision\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:35:41  jaf\r
- * Added functions for allocating and initializing lpc10_encoder_state\r
- * and lpc10_decoder_state structures.\r
- *\r
- * Revision 1.1  1996/08/19  22:31:40  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int lpcini_(void);\r
-/* comlen contrl_ 12 */\r
-/*:ref: initlpcenc_ 14 0 */\r
-/*:ref: initlpcdec_ 14 0 */\r
-#endif\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include <stdlib.h>\r
-#include "f2c.h"\r
-\r
-/* Common Block Declarations */\r
-\r
-struct {\r
-    integer order, lframe;\r
-    logical corrp;\r
-} contrl_;\r
-\r
-#define contrl_1 contrl_\r
-\r
-/* ***************************************************************** */\r
-\r
-/* $Log$\r
- * Revision 1.18  2003/10/21 18:08:11  markster\r
- * Fix include order\r
- *\r
-/* Revision 1.5  2003/10/21 18:08:11  markster\r
-/* Fix include order\r
-/*\r
-/* Revision 1.4  2003/10/21 02:57:29  markster\r
-/* FreeBSD patch, take 2\r
-/*\r
-/* Revision 1.3  2003/10/16 21:11:30  martinp\r
-/* Revert the previous patch since it's braking compilation\r
-/*\r
-/* Revision 1.1  2003/02/12 13:59:15  matteo\r
-/* Initial revision\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:35:41  jaf\r
- * Added functions for allocating and initializing lpc10_encoder_state\r
- * and lpc10_decoder_state structures.\r
- *\r
- * Revision 1.1  1996/08/19  22:31:40  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.1  1996/03/28  00:04:05  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ***************************************************************** */\r
-\r
-/* Initialize COMMON block variables used by LPC-10 encoder and decoder, */\r
-/* and call initialization routines for both of them. */\r
-\r
-/* Subroutine */ int lpcini_(void)\r
-{\r
-\r
-/* $Log$\r
- * Revision 1.18  2003/10/21 18:08:11  markster\r
- * Fix include order\r
- *\r
-/* Revision 1.5  2003/10/21 18:08:11  markster\r
-/* Fix include order\r
-/*\r
-/* Revision 1.4  2003/10/21 02:57:29  markster\r
-/* FreeBSD patch, take 2\r
-/*\r
-/* Revision 1.3  2003/10/16 21:11:30  martinp\r
-/* Revert the previous patch since it's braking compilation\r
-/*\r
-/* Revision 1.1  2003/02/12 13:59:15  matteo\r
-/* Initial revision\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:35:41  jaf\r
- * Added functions for allocating and initializing lpc10_encoder_state\r
- * and lpc10_decoder_state structures.\r
- *\r
- * Revision 1.1  1996/08/19  22:31:40  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:03:47  jaf */\r
-/* Removed definitions for any constants that were no longer used. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:33  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:43:51  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Configuration parameters: */\r
-/* Frame size, Prediction order, Pitch period */\r
-/* $Log$\r
- * Revision 1.18  2003/10/21 18:08:11  markster\r
- * Fix include order\r
- *\r
-/* Revision 1.5  2003/10/21 18:08:11  markster\r
-/* Fix include order\r
-/*\r
-/* Revision 1.4  2003/10/21 02:57:29  markster\r
-/* FreeBSD patch, take 2\r
-/*\r
-/* Revision 1.3  2003/10/16 21:11:30  martinp\r
-/* Revert the previous patch since it's braking compilation\r
-/*\r
-/* Revision 1.1  2003/02/12 13:59:15  matteo\r
-/* Initial revision\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:35:41  jaf\r
- * Added functions for allocating and initializing lpc10_encoder_state\r
- * and lpc10_decoder_state structures.\r
- *\r
- * Revision 1.1  1996/08/19  22:31:40  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:05:55  jaf */\r
-/* Commented out the common block variables that are not needed by the */\r
-/* embedded version. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:50  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:44:09  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Processing control variables: */\r
-\r
-/* *** Read-only: initialized in setup */\r
-\r
-/*  Files for Speech, Parameter, and Bitstream Input & Output, */\r
-/*    and message and debug outputs. */\r
-\r
-/* Here are the only files which use these variables: */\r
-\r
-/* lpcsim.f setup.f trans.f error.f vqsetup.f */\r
-\r
-/* Many files which use fdebug are not listed, since it is only used in */\r
-/* those other files conditionally, to print trace statements. */\r
-/*     integer fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*  LPC order, Frame size, Quantization rate, Bits per frame, */\r
-/*    Error correction */\r
-/* Subroutine SETUP is the only place where order is assigned a value, */\r
-/* and that value is 10.  It could increase efficiency 1% or so to */\r
-/* declare order as a constant (i.e., a Fortran PARAMETER) instead of as \r
-*/\r
-/* a variable in a COMMON block, since it is used in many places in the */\r
-/* core of the coding and decoding routines.  Actually, I take that back. \r
-*/\r
-/* At least when compiling with f2c, the upper bound of DO loops is */\r
-/* stored in a local variable before the DO loop begins, and then that is \r
-*/\r
-/* compared against on each iteration. */\r
-/* Similarly for lframe, which is given a value of MAXFRM in SETUP. */\r
-/* Similarly for quant, which is given a value of 2400 in SETUP.  quant */\r
-/* is used in only a few places, and never in the core coding and */\r
-/* decoding routines, so it could be eliminated entirely. */\r
-/* nbits is similar to quant, and is given a value of 54 in SETUP. */\r
-/* corrp is given a value of .TRUE. in SETUP, and is only used in the */\r
-/* subroutines ENCODE and DECODE.  It doesn't affect the speed of the */\r
-/* coder significantly whether it is .TRUE. or .FALSE., or whether it is \r
-*/\r
-/* a constant or a variable, since it is only examined once per frame. */\r
-/* Leaving it as a variable that is set to .TRUE.  seems like a good */\r
-/* idea, since it does enable some error-correction capability for */\r
-/* unvoiced frames, with no change in the coding rate, and no noticeable \r
-*/\r
-/* quality difference in the decoded speech. */\r
-/*     integer quant, nbits */\r
-/* *** Read/write: variables for debugging, not needed for LPC algorithm \r
-*/\r
-\r
-/*  Current frame, Unstable frames, Output clip count, Max onset buffer, \r
-*/\r
-/*    Debug listing detail level, Line count on listing page */\r
-\r
-/* nframe is not needed for an embedded LPC10 at all. */\r
-/* nunsfm is initialized to 0 in SETUP, and incremented in subroutine */\r
-/* ERROR, which is only called from RCCHK.  When LPC10 is embedded into */\r
-/* an application, I would recommend removing the call to ERROR in RCCHK, \r
-*/\r
-/* and remove ERROR and nunsfm completely. */\r
-/* iclip is initialized to 0 in SETUP, and incremented in entry SWRITE in \r
-*/\r
-/* sread.f.  When LPC10 is embedded into an application, one might want */\r
-/* to cause it to be incremented in a routine that takes the output of */\r
-/* SYNTHS and sends it to an audio device.  It could be optionally */\r
-/* displayed, for those that might want to know what it is. */\r
-/* maxosp is never initialized to 0 in SETUP, although it probably should \r
-*/\r
-/* be, and it is updated in subroutine ANALYS.  I doubt that its value */\r
-/* would be of much interest to an application in which LPC10 is */\r
-/* embedded. */\r
-/* listl and lincnt are not needed for an embedded LPC10 at all. */\r
-/*     integer nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*     common /contrl/ fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*     common /contrl/ quant, nbits */\r
-/*     common /contrl/ nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-    contrl_1.order = 10;\r
-    contrl_1.lframe = 180;\r
-    contrl_1.corrp = TRUE_;\r
-    return 0;\r
-} /* lpcini_ */\r
-\r
-\r
-\r
-/* Allocate memory for, and initialize, the state that needs to be\r
-   kept from encoding one frame to the next for a single\r
-   LPC-10-compressed audio stream.  Return 0 if malloc fails,\r
-   otherwise return pointer to new structure. */\r
-\r
-struct lpc10_encoder_state *\r
-create_lpc10_encoder_state()\r
-{\r
-    struct lpc10_encoder_state *st;\r
-\r
-    st = (struct lpc10_encoder_state *)\r
-       malloc((unsigned) sizeof (struct lpc10_encoder_state));\r
-    if (st != 0) {\r
-       init_lpc10_encoder_state(st);\r
-    }\r
-    return (st);\r
-}\r
-\r
-\r
-\r
-void init_lpc10_encoder_state(struct lpc10_encoder_state *st)\r
-{\r
-    int i;\r
-\r
-    lpcini_();\r
-\r
-    /* State used only by function hp100 */\r
-    st->z11 = 0.0f;\r
-    st->z21 = 0.0f;\r
-    st->z12 = 0.0f;\r
-    st->z22 = 0.0f;\r
-    \r
-    /* State used by function analys */\r
-    for (i = 0; i < 540; i++) {\r
-       st->inbuf[i] = 0.0f;\r
-       st->pebuf[i] = 0.0f;\r
-    }\r
-    for (i = 0; i < 696; i++) {\r
-       st->lpbuf[i] = 0.0f;\r
-    }\r
-    for (i = 0; i < 312; i++) {\r
-       st->ivbuf[i] = 0.0f;\r
-    }\r
-    st->bias = 0.0f;\r
-    /* integer osbuf[10];  /* no initial value necessary */\r
-    st->osptr = 1;\r
-    for (i = 0; i < 3; i++) {\r
-       st->obound[i] = 0;\r
-    }\r
-    st->vwin[4] = 307;\r
-    st->vwin[5] = 462;\r
-    st->awin[4] = 307;\r
-    st->awin[5] = 462;\r
-    for (i = 0; i < 8; i++) {\r
-       st->voibuf[i] = 0;\r
-    }\r
-    for (i = 0; i < 3; i++) {\r
-       st->rmsbuf[i] = 0.0f;\r
-    }\r
-    for (i = 0; i < 30; i++) {\r
-       st->rcbuf[i] = 0.0f;\r
-    }\r
-    st->zpre = 0.0f;\r
-\r
-\r
-    /* State used by function onset */\r
-    st->n = 0.0f;\r
-    st->d__ = 1.0f;\r
-    /* real fpc;   /* no initial value necessary */\r
-    for (i = 0; i < 16; i++) {\r
-       st->l2buf[i] = 0.0f;\r
-    }\r
-    st->l2sum1 = 0.0f;\r
-    st->l2ptr1 = 1;\r
-    st->l2ptr2 = 9;\r
-    /* integer lasti;    /* no initial value necessary */\r
-    st->hyst = FALSE_;\r
-\r
-    /* State used by function voicin */\r
-    st->dither = 20.0f;\r
-    st->maxmin = 0.0f;\r
-    for (i = 0; i < 6; i++) {\r
-       st->voice[i] = 0.0f;\r
-    }\r
-    st->lbve = 3000;\r
-    st->fbve = 3000;\r
-    st->fbue = 187;\r
-    st->ofbue = 187;\r
-    st->sfbue = 187;\r
-    st->lbue = 93;\r
-    st->olbue = 93;\r
-    st->slbue = 93;\r
-    st->snr = (real) (st->fbve / st->fbue << 6);\r
-\r
-    /* State used by function dyptrk */\r
-    for (i = 0; i < 60; i++) {\r
-       st->s[i] = 0.0f;\r
-    }\r
-    for (i = 0; i < 120; i++) {\r
-       st->p[i] = 0;\r
-    }\r
-    st->ipoint = 0;\r
-    st->alphax = 0.0f;\r
-\r
-    /* State used by function chanwr */\r
-    st->isync = 0;\r
-\r
-}\r
-\r
-\r
-\r
-/* Allocate memory for, and initialize, the state that needs to be\r
-   kept from decoding one frame to the next for a single\r
-   LPC-10-compressed audio stream.  Return 0 if malloc fails,\r
-   otherwise return pointer to new structure. */\r
-\r
-struct lpc10_decoder_state *\r
-create_lpc10_decoder_state()\r
-{\r
-    struct lpc10_decoder_state *st;\r
-\r
-    st = (struct lpc10_decoder_state *)\r
-       malloc((unsigned) sizeof (struct lpc10_decoder_state));\r
-    if (st != 0) {\r
-       init_lpc10_decoder_state(st);\r
-    }\r
-    return (st);\r
-}\r
-\r
-\r
-\r
-void init_lpc10_decoder_state(struct lpc10_decoder_state *st)\r
-{\r
-    int i;\r
-\r
-    lpcini_();\r
-\r
-    /* State used by function decode */\r
-    st->iptold = 60;\r
-    st->first = TRUE_;\r
-    st->ivp2h = 0;\r
-    st->iovoic = 0;\r
-    st->iavgp = 60;\r
-    st->erate = 0;\r
-    for (i = 0; i < 30; i++) {\r
-       st->drc[i] = 0;\r
-    }\r
-    for (i = 0; i < 3; i++) {\r
-       st->dpit[i] = 0;\r
-       st->drms[i] = 0;\r
-    }\r
-\r
-    /* State used by function synths */\r
-    for (i = 0; i < 360; i++) {\r
-       st->buf[i] = 0.0f;\r
-    }\r
-    st->buflen = 180;\r
-\r
-    /* State used by function pitsyn */\r
-    /* ivoico;   /* no initial value necessary as long as first_pitsyn is initially TRUE_ */\r
-    /* ipito;   /* no initial value necessary as long as first_pitsyn is initially TRUE_ */\r
-    st->rmso = 1.0f;\r
-    /* rco[10];   /* no initial value necessary as long as first_pitsyn is initially TRUE_ */\r
-    /* integer jsamp;   /* no initial value necessary as long as first_pitsyn is initially TRUE_ */\r
-    st->first_pitsyn = TRUE_;\r
-\r
-    /* State used by function bsynz */\r
-    st->ipo = 0;\r
-    for (i = 0; i < 166; i++) {\r
-       st->exc[i] = 0.0f;\r
-       st->exc2[i] = 0.0f;\r
-    }\r
-    st->lpi1 = 0.0f;\r
-    st->lpi2 = 0.0f;\r
-    st->lpi3 = 0.0f;\r
-    st->hpi1 = 0.0f;\r
-    st->hpi2 = 0.0f;\r
-    st->hpi3 = 0.0f;\r
-    st->rmso_bsynz = 0.0f;\r
-\r
-    /* State used by function random */\r
-    st->j = 2;\r
-    st->k = 5;\r
-    st->y[0] = (shortint) -21161;\r
-    st->y[1] = (shortint) -8478;\r
-    st->y[2] = (shortint) 30892;\r
-    st->y[3] = (shortint) -10216;\r
-    st->y[4] = (shortint) 16950;\r
-\r
-    /* State used by function deemp */\r
-    st->dei1 = 0.0f;\r
-    st->dei2 = 0.0f;\r
-    st->deo1 = 0.0f;\r
-    st->deo2 = 0.0f;\r
-    st->deo3 = 0.0f;\r
-}\r
diff --git a/libs/codecs/lpc10/lpfilt.c b/libs/codecs/lpc10/lpfilt.c
deleted file mode 100644 (file)
index 35ff5a4..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:31:35  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int lpfilt_(real *inbuf, real *lpbuf, integer *len, integer *nsamp);\r
-#endif\r
-\r
-/* *********************************************************************** */\r
-\r
-/*     LPFILT Version 55 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:31:35  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/15  16:53:49  jaf */\r
-/* Just put comment header in standard form. */\r
-\r
-/* Revision 1.2  1996/03/12  23:58:06  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:47:44  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* *********************************************************************** */\r
-\r
-/*   31 Point Equiripple FIR Low-Pass Filter */\r
-/*     Linear phase, delay = 15 samples */\r
-\r
-/*     Passband:  ripple = 0.25 dB, cutoff =  800 Hz */\r
-/*     Stopband:  atten. =  40. dB, cutoff = 1240 Hz */\r
-\r
-/* Inputs: */\r
-/*  LEN    - Length of speech buffers */\r
-/*  NSAMP  - Number of samples to filter */\r
-/*  INBUF  - Input speech buffer */\r
-/*           Indices len-nsamp-29 through len are read. */\r
-/* Output: */\r
-/*  LPBUF  - Low passed speech buffer (must be different array than INBUF) */\r
-/*           Indices len+1-nsamp through len are written. */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int lpfilt_(real *inbuf, real *lpbuf, integer *len, integer *\r
-       nsamp)\r
-{\r
-    /* System generated locals */\r
-    integer i__1;\r
-\r
-    /* Local variables */\r
-    integer j;\r
-    real t;\r
-\r
-/*     Arguments */\r
-/*     Parameters/constants */\r
-/*       Local variables that need not be saved */\r
-/*       Local state */\r
-/*       None */\r
-    /* Parameter adjustments */\r
-    --lpbuf;\r
-    --inbuf;\r
-\r
-    /* Function Body */\r
-    i__1 = *len;\r
-    for (j = *len + 1 - *nsamp; j <= i__1; ++j) {\r
-       t = (inbuf[j] + inbuf[j - 30]) * -.0097201988f;\r
-       t += (inbuf[j - 1] + inbuf[j - 29]) * -.0105179986f;\r
-       t += (inbuf[j - 2] + inbuf[j - 28]) * -.0083479648f;\r
-       t += (inbuf[j - 3] + inbuf[j - 27]) * 5.860774e-4f;\r
-       t += (inbuf[j - 4] + inbuf[j - 26]) * .0130892089f;\r
-       t += (inbuf[j - 5] + inbuf[j - 25]) * .0217052232f;\r
-       t += (inbuf[j - 6] + inbuf[j - 24]) * .0184161253f;\r
-       t += (inbuf[j - 7] + inbuf[j - 23]) * 3.39723e-4f;\r
-       t += (inbuf[j - 8] + inbuf[j - 22]) * -.0260797087f;\r
-       t += (inbuf[j - 9] + inbuf[j - 21]) * -.0455563702f;\r
-       t += (inbuf[j - 10] + inbuf[j - 20]) * -.040306855f;\r
-       t += (inbuf[j - 11] + inbuf[j - 19]) * 5.029835e-4f;\r
-       t += (inbuf[j - 12] + inbuf[j - 18]) * .0729262903f;\r
-       t += (inbuf[j - 13] + inbuf[j - 17]) * .1572008878f;\r
-       t += (inbuf[j - 14] + inbuf[j - 16]) * .2247288674f;\r
-       t += inbuf[j - 15] * .250535965f;\r
-       lpbuf[j] = t;\r
-    }\r
-    return 0;\r
-} /* lpfilt_ */\r
-\r
diff --git a/libs/codecs/lpc10/median.c b/libs/codecs/lpc10/median.c
deleted file mode 100644 (file)
index a40dd1e..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:31:31  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern integer median_(integer *d1, integer *d2, integer *d3);\r
-#endif\r
-\r
-/* ********************************************************************* */\r
-\r
-/*     MEDIAN Version 45G */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:31:31  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.2  1996/03/14  22:30:22  jaf */\r
-/* Just rearranged the comments and local variable declarations a bit. */\r
-\r
-/* Revision 1.1  1996/02/07 14:47:53  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ********************************************************************* */\r
-\r
-/*  Find median of three values */\r
-\r
-/* Input: */\r
-/*  D1,D2,D3 - Three input values */\r
-/* Output: */\r
-/*  MEDIAN - Median value */\r
-\r
-integer median_(integer *d1, integer *d2, integer *d3)\r
-{\r
-    /* System generated locals */\r
-    integer ret_val;\r
-\r
-/*       Arguments */\r
-    ret_val = *d2;\r
-    if (*d2 > *d1 && *d2 > *d3) {\r
-       ret_val = *d1;\r
-       if (*d3 > *d1) {\r
-           ret_val = *d3;\r
-       }\r
-    } else if (*d2 < *d1 && *d2 < *d3) {\r
-       ret_val = *d1;\r
-       if (*d3 < *d1) {\r
-           ret_val = *d3;\r
-       }\r
-    }\r
-    return ret_val;\r
-} /* median_ */\r
-\r
diff --git a/libs/codecs/lpc10/mload.c b/libs/codecs/lpc10/mload.c
deleted file mode 100644 (file)
index 0847374..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:31:25  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int mload_(integer *order, integer *awins, integer *awinf, real *speech, real *phi, real *psi);\r
-#endif\r
-\r
-/* ***************************************************************** */\r
-\r
-/*     MLOAD Version 48 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:31:25  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.5  1996/03/27  23:59:51  jaf */\r
-/* Added some more accurate comments about which indices of the argument */\r
-/* array SPEECH are read.  I thought that this might be the cause of a */\r
-/* problem I've been having, but it isn't. */\r
-\r
-/* Revision 1.4  1996/03/26  19:16:53  jaf */\r
-/* Commented out the code at the end that copied the lower triangular */\r
-/* half of PHI into the upper triangular half (making the resulting */\r
-/* matrix symmetric).  The upper triangular half was never used by later */\r
-/* code in subroutine ANALYS. */\r
-\r
-/* Revision 1.3  1996/03/18  21:16:00  jaf */\r
-/* Just added a few comments about which array indices of the arguments */\r
-/* are used, and mentioning that this subroutine has no local state. */\r
-\r
-/* Revision 1.2  1996/03/13  16:47:41  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:48:01  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ***************************************************************** */\r
-\r
-/* Load a covariance matrix. */\r
-\r
-/* Input: */\r
-/*  ORDER            - Analysis order */\r
-/*  AWINS            - Analysis window start */\r
-/*  AWINF            - Analysis window finish */\r
-/*  SPEECH(AWINF)    - Speech buffer */\r
-/*                     Indices MIN(AWINS, AWINF-(ORDER-1)) through */\r
-/*                             MAX(AWINF, AWINS+(ORDER-1)) read. */\r
-/*                     As long as (AWINF-AWINS) .GE. (ORDER-1), */\r
-/*                     this is just indices AWINS through AWINF. */\r
-/* Output: */\r
-/*  PHI(ORDER,ORDER) - Covariance matrix */\r
-/*                    Lower triangular half and diagonal written, and read.*/\r
-/*                     Upper triangular half untouched. */\r
-/*  PSI(ORDER)       - Prediction vector */\r
-/*                     Indices 1 through ORDER written, */\r
-/*                     and most are read after that. */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int mload_(integer *order, integer *awins, integer *awinf, \r
-       real *speech, real *phi, real *psi)\r
-{\r
-    /* System generated locals */\r
-    integer phi_dim1, phi_offset, i__1, i__2;\r
-\r
-    /* Local variables */\r
-    integer c__, i__, r__, start;\r
-\r
-/*       Arguments */\r
-/*       Local variables that need not be saved */\r
-/*   Load first column of triangular covariance matrix PHI */\r
-    /* Parameter adjustments */\r
-    --psi;\r
-    phi_dim1 = *order;\r
-    phi_offset = phi_dim1 + 1;\r
-    phi -= phi_offset;\r
-    --speech;\r
-\r
-    /* Function Body */\r
-    start = *awins + *order;\r
-    i__1 = *order;\r
-    for (r__ = 1; r__ <= i__1; ++r__) {\r
-       phi[r__ + phi_dim1] = 0.f;\r
-       i__2 = *awinf;\r
-       for (i__ = start; i__ <= i__2; ++i__) {\r
-           phi[r__ + phi_dim1] += speech[i__ - 1] * speech[i__ - r__];\r
-       }\r
-    }\r
-/*   Load last element of vector PSI */\r
-    psi[*order] = 0.f;\r
-    i__1 = *awinf;\r
-    for (i__ = start; i__ <= i__1; ++i__) {\r
-       psi[*order] += speech[i__] * speech[i__ - *order];\r
-    }\r
-/*   End correct to get additional columns of PHI */\r
-    i__1 = *order;\r
-    for (r__ = 2; r__ <= i__1; ++r__) {\r
-       i__2 = r__;\r
-       for (c__ = 2; c__ <= i__2; ++c__) {\r
-           phi[r__ + c__ * phi_dim1] = phi[r__ - 1 + (c__ - 1) * phi_dim1] - \r
-                   speech[*awinf + 1 - r__] * speech[*awinf + 1 - c__] + \r
-                   speech[start - r__] * speech[start - c__];\r
-       }\r
-    }\r
-/*   End correct to get additional elements of PSI */\r
-    i__1 = *order - 1;\r
-    for (c__ = 1; c__ <= i__1; ++c__) {\r
-       psi[c__] = phi[c__ + 1 + phi_dim1] - speech[start - 1] * speech[start \r
-               - 1 - c__] + speech[*awinf] * speech[*awinf - c__];\r
-    }\r
-/*   Copy lower triangular section into upper (why bother?) */\r
-/*       I'm commenting this out, since the upper triangular half of PHI \r
-*/\r
-/*       is never used by later code, unless a sufficiently high level of \r
-*/\r
-/*       tracing is turned on. */\r
-/*     DO R = 1,ORDER */\r
-/*        DO C = 1,R-1 */\r
-/*           PHI(C,R) = PHI(R,C) */\r
-/*        END DO */\r
-/*     END DO */\r
-    return 0;\r
-} /* mload_ */\r
-\r
diff --git a/libs/codecs/lpc10/onset.c b/libs/codecs/lpc10/onset.c
deleted file mode 100644 (file)
index 1d682c1..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:37:55  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:31:18  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int onset_(real *pebuf, integer *osbuf, integer *osptr, integer *oslen, integer *sbufl, integer *sbufh, integer *lframe, struct lpc10_encoder_state *st);\r
-#endif\r
-\r
-/* Table of constant values */\r
-\r
-static real c_b2 = 1.f;\r
-\r
-/* ****************************************************************** */\r
-\r
-/*     ONSET Version 49 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:37:55  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:31:18  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.5  1996/03/15  16:41:01  jaf */\r
-/* Just rearranged INITONSET assignment orders to be consistent with */\r
-/* order of DATA statements in ONSET. */\r
-\r
-/* Revision 1.4  1996/03/15  15:48:27  jaf */\r
-/* Changed some comments, and only reordered the DATA statements (their */\r
-/* meaning wasn't changed). */\r
-\r
-/* Revision 1.3  1996/03/14  23:53:06  jaf */\r
-/* Added an entry INITONSET that reinitializes the local state variables */\r
-/* of subroutine ONSET. */\r
-\r
-/* Rearranged quite a few comments, adding more explaining which */\r
-/* arguments were inputs, and how the modified ones can be changed. */\r
-\r
-/* Revision 1.2  1996/03/12  23:53:00  jaf */\r
-/* Lots of comments added about the local state of this subroutine that */\r
-/* must be saved from one invocation to the next. */\r
-\r
-/* One constant 180 replaced with LFRAME, which should be "more general", */\r
-/* even though it would probably require many more changes than this to */\r
-/* get this coder to work for other frame sizes. */\r
-\r
-/* Revision 1.1  1996/02/07 14:48:09  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ****************************************************************** */\r
-\r
-/*     Floating point version */\r
-\r
-\r
-/*   Detection of onsets in (or slightly preceding) the futuremost frame */\r
-/*   of speech. */\r
-\r
-\r
-/* Input: */\r
-/*  PEBUF(SBUFL:SBUFH)  - Preemphasized speech */\r
-/*                        Indices SBUFH-LFRAME through SBUFH are read. */\r
-/*  OSLEN  - Maximum number of onsets that can be stored in OSBUF. */\r
-/*  SBUFL, SBUFH        - Range of PEBUF */\r
-/*  LFRAME              - length of a frame, in samples */\r
-/* Input/Output: */\r
-/*  OSBUF(OSLEN) - Buffer which holds sorted indexes of onsets */\r
-/*                 Indices A through B are modified, where A */\r
-/*                 is the original value of OSPTR, and B is the final */\r
-/*                 value of OSPTR-1.  B is at most OSLEN. */\r
-/*  OSPTR        - Free pointer into OSBUF */\r
-/*                 Initial value should be .LE. OSLEN+1. */\r
-/*                 If so, final value grows by one for each new onset */\r
-/*                 found, and final value will be .LE. OSLEN+1. */\r
-\r
-/* This subroutine maintains local state from one call to the next.  If */\r
-/* you want to switch to using a new audio stream for this subroutine, or */\r
-/* reinitialize its state for any other reason, call the ENTRY INITONSET. */\r
-\r
-/* Subroutine */ int onset_(real *pebuf, integer *osbuf, integer *\r
-       osptr, integer *oslen, integer *sbufl, integer *sbufh, integer *\r
-       lframe, struct lpc10_encoder_state *st)\r
-{\r
-    /* Initialized data */\r
-\r
-    real *n;\r
-    real *d__;\r
-    real *l2buf;\r
-    real *l2sum1;\r
-    integer *l2ptr1;\r
-    integer *l2ptr2;\r
-    logical *hyst;\r
-\r
-    /* System generated locals */\r
-    integer pebuf_offset, i__1;\r
-    real r__1;\r
-\r
-    /* Builtin functions */\r
-    double r_sign(real *, real *);\r
-\r
-    /* Local variables */\r
-    integer i__;\r
-    integer *lasti;\r
-    real l2sum2;\r
-    real *fpc;\r
-\r
-/*       Arguments */\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:37:55  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:31:18  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:03:47  jaf */\r
-/* Removed definitions for any constants that were no longer used. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:33  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:43:51  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Configuration parameters: */\r
-/* Frame size, Prediction order, Pitch period */\r
-/*       Parameters/constants */\r
-/*   Parameters for onset detection algorithm: */\r
-/*    L2               Threshold for filtered slope of FPC (function of L2WID!) */\r
-/*    L2LAG    Lag due to both filters which compute filtered slope of FPC */\r
-/*    L2WID    Width of the filter which computes the slope of FPC */\r
-/*    OSHYST   The number of samples of slope(FPC) which must be below */\r
-/*             the threshold before a new onset may be declared. */\r
-/*       Local variables that need not be saved */\r
-/*       Local state */\r
-/*   Variables */\r
-/*    N, D       Numerator and denominator of prediction filters */\r
-/*    FPC        Current prediction coefs */\r
-/*    L2BUF, L2SUM1, L2SUM2    State of slope filter */\r
-/*       The only "significant" change I've made is to change L2SUM2 out \r
-*/\r
-/*       of the list of local variables that need to be saved, since it */\r
-/*       didn't need to be. */\r
-/*       L2SUM1 need not be, but avoiding saving it would require a small \r
-*/\r
-/*       change to the body of the code.  See comments below for an */\r
-/*       example of how the code could be changed to avoid saving L2SUM1. \r
-*/\r
-/*       FPC and LASTI are saved from one invocation to the next, but */\r
-/*       they are not given initial values.  This is acceptable, because \r
-*/\r
-/*       FPC will be assigned a value the first time that this function */\r
-/*       is called after D is initialized to 1, since the formula to */\r
-/*       change D will not change it to 0 in one step, and the IF (D */\r
-/*       .NE. 0) statement will execute its THEN part, initializing FPC. \r
-*/\r
-\r
-/*       LASTI's value will not be used until HYST is .TRUE., and */\r
-/*       whenever HYST is changed from its initial value of .FALSE., */\r
-/*       LASTI is assigned a value. */\r
-/*       In a C version of this coder, it would be nice if all of these */\r
-/*       saved things, in this and all other subroutines, could be stored \r
-*/\r
-/*       in a single struct lpc10_coder_state_t, initialized with a call \r
-*/\r
-/*       to a function like lpc10_init(&lpc10_coder_state).  In this way, \r
-*/\r
-/*       a program that used these functions could conveniently alternate \r
-*/\r
-/*       coding more than one distinct audio stream. */\r
-\r
-    n = &(st->n);\r
-    d__ = &(st->d__);\r
-    fpc = &(st->fpc);\r
-    l2buf = &(st->l2buf[0]);\r
-    l2sum1 = &(st->l2sum1);\r
-    l2ptr1 = &(st->l2ptr1);\r
-    l2ptr2 = &(st->l2ptr2);\r
-    lasti = &(st->lasti);\r
-    hyst = &(st->hyst);\r
-\r
-    /* Parameter adjustments */\r
-    if (osbuf) {\r
-       --osbuf;\r
-       }\r
-    if (pebuf) {\r
-       pebuf_offset = *sbufl;\r
-       pebuf -= pebuf_offset;\r
-       }\r
-\r
-    /* Function Body */\r
-\r
-/*       The following line subtracted a hard-coded "180" from LASTI, */\r
-/*       instead of using a variable like LFRAME or a constant like */\r
-/*       MAXFRM.  I changed it to LFRAME, for "generality". */\r
-    if (*hyst) {\r
-       *lasti -= *lframe;\r
-    }\r
-    i__1 = *sbufh;\r
-    for (i__ = *sbufh - *lframe + 1; i__ <= i__1; ++i__) {\r
-/*   Compute FPC; Use old FPC on divide by zero; Clamp FPC to +/- 1. \r
-*/\r
-       *n = (pebuf[i__] * pebuf[i__ - 1] + (*n) * 63.f) / 64.f;\r
-/* Computing 2nd power */\r
-       r__1 = pebuf[i__ - 1];\r
-       *d__ = (r__1 * r__1 + (*d__) * 63.f) / 64.f;\r
-       if ((*d__) != 0.f) {\r
-           if (abs(*n) > (*d__)) {\r
-               *fpc = r_sign(&c_b2, n);\r
-           } else {\r
-               *fpc = (*n) / (*d__);\r
-           }\r
-       }\r
-/*   Filter FPC */\r
-/*       In order to allow L2SUM1 not to be saved from one invocation \r
-of */\r
-/*       this subroutine to the next, one could change the sequence of\r
- */\r
-/*       assignments below, up to the IF statement, to the following. \r
- In */\r
-/*       addition, the initial value of L2PTR2 should be changed to */\r
-/*       L2WID/2 instead of L2WID/2+1. */\r
-\r
-/*       L2SUM1 = L2BUF(L2PTR2) */\r
-/*       L2PTR2 = MOD(L2PTR2,L2WID)+1 */\r
-/*       L2SUM1 = L2SUM1 - L2BUF(L2PTR2) + FPC */\r
-/*       L2BUF(L2PTR2) = L2SUM1 */\r
-\r
-/* *       The following lines didn't change from the original: */\r
-/*       L2SUM2 = L2BUF(L2PTR1) */\r
-/*       L2BUF(L2PTR1) = FPC */\r
-/*       L2PTR1 = MOD(L2PTR1,L2WID)+1 */\r
-\r
-       l2sum2 = l2buf[*l2ptr1 - 1];\r
-       *l2sum1 = *l2sum1 - l2buf[*l2ptr2 - 1] + *fpc;\r
-       l2buf[*l2ptr2 - 1] = *l2sum1;\r
-       l2buf[*l2ptr1 - 1] = *fpc;\r
-       *l2ptr1 = *l2ptr1 % 16 + 1;\r
-       *l2ptr2 = *l2ptr2 % 16 + 1;\r
-       if ((r__1 = *l2sum1 - l2sum2, abs(r__1)) > 1.7f) {\r
-           if (! (*hyst)) {\r
-/*   Ignore if buffer full */\r
-               if (*osptr <= *oslen) {\r
-                   osbuf[*osptr] = i__ - 9;\r
-                   ++(*osptr);\r
-               }\r
-               *hyst = TRUE_;\r
-           }\r
-           *lasti = i__;\r
-/*       After one onset detection, at least OSHYST sample times m\r
-ust go */\r
-/*       by before another is allowed to occur. */\r
-       } else if ((*hyst) && i__ - *lasti >= 10) {\r
-           *hyst = FALSE_;\r
-       }\r
-    }\r
-    return 0;\r
-} /* onset_ */\r
diff --git a/libs/codecs/lpc10/pitsyn.c b/libs/codecs/lpc10/pitsyn.c
deleted file mode 100644 (file)
index 30d6063..0000000
+++ /dev/null
@@ -1,583 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.16  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.15  2003/11/23 22:14:32  markster\r
-Various warning cleanups\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:40:12  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:31:12  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int pitsyn_(integer *order, integer *voice, integer *pitch, real *rms, real *rc, integer *lframe, integer *ivuv, integer *ipiti, real *rmsi, real *rci, integer *nout, real *ratio, struct lpc10_decoder_state *st);\r
-#endif\r
-\r
-/* ***************************************************************** */\r
-\r
-/*     PITSYN Version 53 */\r
-\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/11/23 22:14:32  markster\r
-/* Various warning cleanups\r
-/*\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:40:12  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:31:12  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.2  1996/03/25  18:49:07  jaf */\r
-/* Added commments about which indices of array arguments are read or */\r
-/* written. */\r
-\r
-/* Rearranged local variable declarations to indicate which need to be */\r
-/* saved from one invocation to the next.  Added entry INITPITSYN to */\r
-/* reinitialize local state variables, if desired. */\r
-\r
-/* Added lots of comments about proving that the maximum number of pitch */\r
-/* periods (NOUT) that can be returned is 16.  The call to STOP that */\r
-/* could happen if NOUT got too large was removed as a result. */\r
-\r
-/* Also proved that the total number of samples returned from N calls, */\r
-/* each with identical values of LFRAME, will always be in the range */\r
-/* N*LFRAME-MAXPIT+1 to N*LFRAME. */\r
-\r
-/* Revision 1.1  1996/02/07 14:48:18  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ***************************************************************** */\r
-\r
-/*   Synthesize a single pitch epoch */\r
-\r
-/* Input: */\r
-/*  ORDER  - Synthesis order (number of RC's) */\r
-/*  VOICE  - Half frame voicing decisions */\r
-/*           Indices 1 through 2 read. */\r
-/*  LFRAME - Length of speech buffer */\r
-/* Input/Output: */\r
-/*  PITCH  - Pitch */\r
-/*           This value should be in the range MINPIT (20) to MAXPIT */\r
-/*           (156), inclusive. */\r
-/*           PITCH can be modified under some conditions. */\r
-/*  RMS    - Energy  (can be modified) */\r
-/*           RMS is changed to 1 if the value passed in is less than 1. */\r
-/*  RC     - Reflection coefficients */\r
-/*           Indices 1 through ORDER can be temporarily overwritten with */\r
-/*           RCO, and then replaced with original values, under some */\r
-/*           conditions. */\r
-/* Output: */\r
-/*  IVUV   - Pitch epoch voicing decisions */\r
-/*           Indices (I) of IVUV, IPITI, and RMSI are written, */\r
-/*           and indices (J,I) of RCI are written, */\r
-/*           where I ranges from 1 to NOUT, and J ranges from 1 to ORDER. */\r
-/*  IPITI  - Pitch epoch length */\r
-/*  RMSI   - Pitch epoch energy */\r
-/*  RCI    - Pitch epoch RC's */\r
-/*  NOUT   - Number of pitch periods in this frame */\r
-/*           This is at least 0, at least 1 if MAXPIT .LT. LFRAME (this */\r
-/*           is currently true on every call), and can never be more than */\r
-/*           (LFRAME+MAXPIT-1)/PITCH, which is currently 16 with */\r
-/*           LFRAME=180, MAXPIT=156, and PITCH .GE. 20, as SYNTHS */\r
-/*           guarantees when it calls this subroutine. */\r
-/*  RATIO  - Previous to present energy ratio */\r
-/*           Always assigned a value. */\r
-\r
-/* Subroutine */ int pitsyn_(integer *order, integer *voice, \r
-       integer *pitch, real *rms, real *rc, integer *lframe, integer *ivuv, \r
-       integer *ipiti, real *rmsi, real *rci, integer *nout, real *ratio,\r
-                              struct lpc10_decoder_state *st)\r
-{\r
-    /* Initialized data */\r
-\r
-    real *rmso;\r
-    logical *first;\r
-\r
-    /* System generated locals */\r
-    integer rci_dim1 = 0, rci_offset, i__1, i__2;\r
-    real r__1;\r
-\r
-    /* Builtin functions */\r
-    double log(doublereal), exp(doublereal);\r
-\r
-    /* Local variables */\r
-    real alrn, alro, yarc[10], prop;\r
-    integer i__, j, vflag, jused, lsamp;\r
-    integer *jsamp;\r
-    real slope;\r
-    integer *ipito;\r
-    real uvpit;\r
-    integer ip, nl, ivoice;\r
-    integer *ivoico;\r
-    integer istart;\r
-    real *rco;\r
-    real xxy;\r
-\r
-/*       Arguments */\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/11/23 22:14:32  markster\r
-/* Various warning cleanups\r
-/*\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:40:12  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:31:12  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:03:47  jaf */\r
-/* Removed definitions for any constants that were no longer used. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:33  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:43:51  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Configuration parameters: */\r
-/* Frame size, Prediction order, Pitch period */\r
-/*       Local variables that need not be saved */\r
-/*       LSAMP is initialized in the IF (FIRST) THEN clause, but it is */\r
-/*       not used the first time through, and it is given a value before \r
-*/\r
-/*       use whenever FIRST is .FALSE., so it appears unnecessary to */\r
-/*       assign it a value when FIRST is .TRUE. */\r
-/*       Local state */\r
-/* FIRST  - .TRUE. only on first call to PITSYN. */\r
-/* IVOICO - Previous VOICE(2) value. */\r
-/* IPITO  - Previous PITCH value. */\r
-/* RMSO   - Previous RMS value. */\r
-/* RCO    - Previous RC values. */\r
-\r
-/* JSAMP  - If this routine is called N times with identical values of */\r
-/*          LFRAME, then the total length of all pitch periods returned */\r
-/*          is always N*LFRAME-JSAMP, and JSAMP is always in the range 0 \r
-*/\r
-/*          to MAXPIT-1 (see below for why this is so).  Thus JSAMP is */\r
-/*          the number of samples "left over" from the previous call to */\r
-/*          PITSYN, that haven't been "used" in a pitch period returned */\r
-/*          from this subroutine.  Every time this subroutine is called, \r
-*/\r
-/*          it returns pitch periods with a total length of at most */\r
-/*          LFRAME+JSAMP. */\r
-\r
-/* IVOICO, IPITO, RCO, and JSAMP need not be assigned an initial value */\r
-/* with a DATA statement, because they are always initialized on the */\r
-/* first call to PITSYN. */\r
-\r
-/* FIRST and RMSO should be initialized with DATA statements, because */\r
-/* even on the first call, they are used before being initialized. */\r
-    /* Parameter adjustments */\r
-    if (rc) {\r
-       --rc;\r
-       }\r
-    if (rci) {\r
-       rci_dim1 = *order;\r
-       rci_offset = rci_dim1 + 1;\r
-       rci -= rci_offset;\r
-       }\r
-    if (voice) {\r
-       --voice;\r
-       }\r
-    if (ivuv) {\r
-       --ivuv;\r
-       }\r
-    if (ipiti) {\r
-       --ipiti;\r
-       }\r
-    if (rmsi) {\r
-       --rmsi;\r
-       }\r
-\r
-    /* Function Body */\r
-    ivoico = &(st->ivoico);\r
-    ipito = &(st->ipito);\r
-    rmso = &(st->rmso);\r
-    rco = &(st->rco[0]);\r
-    jsamp = &(st->jsamp);\r
-    first = &(st->first_pitsyn);\r
-\r
-    if (*rms < 1.f) {\r
-       *rms = 1.f;\r
-    }\r
-    if (*rmso < 1.f) {\r
-       *rmso = 1.f;\r
-    }\r
-    uvpit = 0.f;\r
-    *ratio = *rms / (*rmso + 8.f);\r
-    if (*first) {\r
-       lsamp = 0;\r
-       ivoice = voice[2];\r
-       if (ivoice == 0) {\r
-           *pitch = *lframe / 4;\r
-       }\r
-       *nout = *lframe / *pitch;\r
-       *jsamp = *lframe - *nout * *pitch;\r
-\r
-/*          SYNTHS only calls this subroutine with PITCH in the range \r
-20 */\r
-/*          to 156.  LFRAME = MAXFRM = 180, so NOUT is somewhere in th\r
-e */\r
-/*          range 1 to 9. */\r
-\r
-/*          JSAMP is "LFRAME mod PITCH", so it is in the range 0 to */\r
-/*          (PITCH-1), or 0 to MAXPIT-1=155, after the first call. */\r
-\r
-       i__1 = *nout;\r
-       for (i__ = 1; i__ <= i__1; ++i__) {\r
-           i__2 = *order;\r
-           for (j = 1; j <= i__2; ++j) {\r
-               rci[j + i__ * rci_dim1] = rc[j];\r
-           }\r
-           ivuv[i__] = ivoice;\r
-           ipiti[i__] = *pitch;\r
-           rmsi[i__] = *rms;\r
-       }\r
-       *first = FALSE_;\r
-    } else {\r
-       vflag = 0;\r
-       lsamp = *lframe + *jsamp;\r
-       slope = (*pitch - *ipito) / (real) lsamp;\r
-       *nout = 0;\r
-       jused = 0;\r
-       istart = 1;\r
-       if (voice[1] == *ivoico && voice[2] == voice[1]) {\r
-           if (voice[2] == 0) {\r
-/* SSUV - -   0  ,  0  ,  0 */\r
-               *pitch = *lframe / 4;\r
-               *ipito = *pitch;\r
-               if (*ratio > 8.f) {\r
-                   *rmso = *rms;\r
-               }\r
-           }\r
-/* SSVC - -   1  ,  1  ,  1 */\r
-           slope = (*pitch - *ipito) / (real) lsamp;\r
-           ivoice = voice[2];\r
-       } else {\r
-           if (*ivoico != 1) {\r
-               if (*ivoico == voice[1]) {\r
-/* UV2VC2 - -  0  ,  0  ,  1 */\r
-                   nl = lsamp - *lframe / 4;\r
-               } else {\r
-/* UV2VC1 - -  0  ,  1  ,  1 */\r
-                   nl = lsamp - *lframe * 3 / 4;\r
-               }\r
-               ipiti[1] = nl / 2;\r
-               ipiti[2] = nl - ipiti[1];\r
-               ivuv[1] = 0;\r
-               ivuv[2] = 0;\r
-               rmsi[1] = *rmso;\r
-               rmsi[2] = *rmso;\r
-               i__1 = *order;\r
-               for (i__ = 1; i__ <= i__1; ++i__) {\r
-                   rci[i__ + rci_dim1] = rco[i__ - 1];\r
-                   rci[i__ + (rci_dim1 << 1)] = rco[i__ - 1];\r
-                   rco[i__ - 1] = rc[i__];\r
-               }\r
-               slope = 0.f;\r
-               *nout = 2;\r
-               *ipito = *pitch;\r
-               jused = nl;\r
-               istart = nl + 1;\r
-               ivoice = 1;\r
-           } else {\r
-               if (*ivoico != voice[1]) {\r
-/* VC2UV1 - -   1  ,  0  ,  0 */\r
-                   lsamp = *lframe / 4 + *jsamp;\r
-               } else {\r
-/* VC2UV2 - -   1  ,  1  ,  0 */\r
-                   lsamp = *lframe * 3 / 4 + *jsamp;\r
-               }\r
-               i__1 = *order;\r
-               for (i__ = 1; i__ <= i__1; ++i__) {\r
-                   yarc[i__ - 1] = rc[i__];\r
-                   rc[i__] = rco[i__ - 1];\r
-               }\r
-               ivoice = 1;\r
-               slope = 0.f;\r
-               vflag = 1;\r
-           }\r
-       }\r
-/* Here is the value of most variables that are used below, depending \r
-on */\r
-/* the values of IVOICO, VOICE(1), and VOICE(2).  VOICE(1) and VOICE(2\r
-) */\r
-/* are input arguments, and IVOICO is the value of VOICE(2) on the */\r
-/* previous call (see notes for the IF (NOUT .NE. 0) statement near th\r
-e */\r
-/* end).  Each of these three values is either 0 or 1.  These three */\r
-/* values below are given as 3-bit long strings, in the order IVOICO, \r
-*/\r
-/* VOICE(1), and VOICE(2).  It appears that the code above assumes tha\r
-t */\r
-/* the bit sequences 010 and 101 never occur, but I wonder whether a \r
-*/\r
-/* large enough number of bit errors in the channel could cause such a\r
- */\r
-/* thing to happen, and if so, could that cause NOUT to ever go over 1\r
-1? */\r
-\r
-/* Note that all of the 180 values in the table are really LFRAME, but\r
- */\r
-/* 180 has fewer characters, and it makes the table a little more */\r
-/* concrete.  If LFRAME is ever changed, keep this in mind.  Similarly\r
-, */\r
-/* 135's are 3*LFRAME/4, and 45's are LFRAME/4.  If LFRAME is not a */\r
-/* multiple of 4, then the 135 for NL-JSAMP is actually LFRAME-LFRAME/\r
-4, */\r
-/* and the 45 for NL-JSAMP is actually LFRAME-3*LFRAME/4. */\r
-\r
-/* Note that LSAMP-JSAMP is given as the variable.  This was just for \r
-*/\r
-/* brevity, to avoid adding "+JSAMP" to all of the column entries. */\r
-/* Similarly for NL-JSAMP. */\r
-\r
-/* Variable    | 000  001    011,010  111       110       100,101 */\r
-/* ------------+-------------------------------------------------- */\r
-/* ISTART      | 1    NL+1   NL+1     1         1         1 */\r
-/* LSAMP-JSAMP | 180  180    180      180       135       45 */\r
-/* IPITO       | 45   PITCH  PITCH    oldPITCH  oldPITCH  oldPITCH */\r
-/* SLOPE       | 0    0      0        seebelow  0         0 */\r
-/* JUSED       | 0    NL     NL       0         0         0 */\r
-/* PITCH       | 45   PITCH  PITCH    PITCH     PITCH     PITCH */\r
-/* NL-JSAMP    | --   135    45       --        --        -- */\r
-/* VFLAG       | 0    0      0        0         1         1 */\r
-/* NOUT        | 0    2      2        0         0         0 */\r
-/* IVOICE      | 0    1      1        1         1         1 */\r
-\r
-/* while_loop  | once once   once     once      twice     twice */\r
-\r
-/* ISTART      | --   --     --       --        JUSED+1   JUSED+1 */\r
-/* LSAMP-JSAMP | --   --     --       --        180       180 */\r
-/* IPITO       | --   --     --       --        oldPITCH  oldPITCH */\r
-/* SLOPE       | --   --     --       --        0         0 */\r
-/* JUSED       | --   --     --       --        ??        ?? */\r
-/* PITCH       | --   --     --       --        PITCH     PITCH */\r
-/* NL-JSAMP    | --   --     --       --        --        -- */\r
-/* VFLAG       | --   --     --       --        0         0 */\r
-/* NOUT        | --   --     --       --        ??        ?? */\r
-/* IVOICE      | --   --     --       --        0         0 */\r
-\r
-\r
-/* UVPIT is always 0.0 on the first pass through the DO WHILE (.TRUE.)\r
- */\r
-/* loop below. */\r
-\r
-/* The only possible non-0 value of SLOPE (in column 111) is */\r
-/* (PITCH-IPITO)/FLOAT(LSAMP) */\r
-\r
-/* Column 101 is identical to 100.  Any good properties we can prove \r
-*/\r
-/* for 100 will also hold for 101.  Similarly for 010 and 011. */\r
-\r
-/* SYNTHS calls this subroutine with PITCH restricted to the range 20 \r
-to */\r
-/* 156.  IPITO is similarly restricted to this range, after the first \r
-*/\r
-/* call.  IP below is also restricted to this range, given the */\r
-/* definitions of IPITO, SLOPE, UVPIT, and that I is in the range ISTA\r
-RT */\r
-/* to LSAMP. */\r
-\r
-       while(TRUE_) {\r
-\r
-/*             JUSED is the total length of all pitch periods curr\r
-ently */\r
-/*             in the output arrays, in samples. */\r
-\r
-/*             An invariant of the DO I = ISTART,LSAMP loop below,\r
- under */\r
-/*             the condition that IP is always in the range 1 thro\r
-ugh */\r
-/*             MAXPIT, is: */\r
-\r
-/*             (I - MAXPIT) .LE. JUSED .LE. (I-1) */\r
-\r
-/*             Note that the final value of I is LSAMP+1, so that \r
-after */\r
-/*             the DO loop is complete, we know: */\r
-\r
-/*             (LSAMP - MAXPIT + 1) .LE. JUSED .LE. LSAMP */\r
-\r
-           i__1 = lsamp;\r
-           for (i__ = istart; i__ <= i__1; ++i__) {\r
-               r__1 = *ipito + slope * i__;\r
-               ip = r__1 + .5f;\r
-               if (uvpit != 0.f) {\r
-                   ip = uvpit;\r
-               }\r
-               if (ip <= i__ - jused) {\r
-                   ++(*nout);\r
-\r
-/*                   The following check is no longer nece\r
-ssary, now that */\r
-/*                   we can prove that NOUT will never go \r
-over 16. */\r
-\r
-/*                 IF (NOUT .GT. 16) STOP 'PITSYN: too many epochs' \r
-*/\r
-\r
-                   ipiti[*nout] = ip;\r
-                   *pitch = ip;\r
-                   ivuv[*nout] = ivoice;\r
-                   jused += ip;\r
-                   prop = (jused - ip / 2) / (real) lsamp;\r
-                   i__2 = *order;\r
-                   for (j = 1; j <= i__2; ++j) {\r
-                       alro = log((rco[j - 1] + 1) / (1 - rco[j - 1]));\r
-                       alrn = log((rc[j] + 1) / (1 - rc[j]));\r
-                       xxy = alro + prop * (alrn - alro);\r
-                       xxy = exp(xxy);\r
-                       rci[j + *nout * rci_dim1] = (xxy - 1) / (xxy + 1);\r
-                   }\r
-                   rmsi[*nout] = log(*rmso) + prop * (log(*rms) - log(*rmso));\r
-                   rmsi[*nout] = exp(rmsi[*nout]);\r
-               }\r
-           }\r
-           if (vflag != 1) {\r
-               goto L100;\r
-           }\r
-\r
-/*             I want to prove what range UVPIT must lie in after \r
-the */\r
-/*             assignments to it below.  To do this, I must determ\r
-ine */\r
-/*             what range (LSAMP-ISTART) must lie in, after the */\r
-/*             assignments to ISTART and LSAMP below. */\r
-\r
-/*             Let oldLSAMP be the value of LSAMP at this point in\r
- the */\r
-/*             execution.  This is 135+JSAMP in state 110, or 45+J\r
-SAMP in */\r
-/*             states 100 or 101. */\r
-\r
-/*             Given the loop invariant on JUSED above, we know th\r
-at: */\r
-\r
-/*             (oldLSAMP - MAXPIT + 1) .LE. JUSED .LE. oldLSAMP */\r
-\r
-/*             ISTART is one more than this. */\r
-\r
-/*             Let newLSAMP be the value assigned to LSAMP below. \r
- This */\r
-/*             is 180+JSAMP.  Thus (newLSAMP-oldLSAMP) is either 4\r
-5 or */\r
-/*             135, depending on the state. */\r
-\r
-/*             Thus, the range of newLSAMP-ISTART is: */\r
-\r
-/*             (newLSAMP-(oldLSAMP+1)) .LE. newLSAMP-ISTART */\r
-/*             .LE. (newLSAMP-(oldLSAMP - MAXPIT + 2)) */\r
-\r
-/*             or: */\r
-\r
-/*             46 .LE. newLSAMP-ISTART .LE. 133+MAXPIT .EQ. 289 */\r
-\r
-/*             Therefore, UVPIT is in the range 23 to 144 after th\r
-e first */\r
-/*             assignment to UVPIT below, and after the conditiona\r
-l */\r
-/*             assignment, it is in the range 23 to 90. */\r
-\r
-/*             The important thing is that it is in the range 20 t\r
-o 156, */\r
-/*             so that in the loop above, IP is always in this ran\r
-ge. */\r
-\r
-           vflag = 0;\r
-           istart = jused + 1;\r
-           lsamp = *lframe + *jsamp;\r
-           slope = 0.f;\r
-           ivoice = 0;\r
-           uvpit = (real) ((lsamp - istart) / 2);\r
-           if (uvpit > 90.f) {\r
-               uvpit /= 2;\r
-           }\r
-           *rmso = *rms;\r
-           i__1 = *order;\r
-           for (i__ = 1; i__ <= i__1; ++i__) {\r
-               rc[i__] = yarc[i__ - 1];\r
-               rco[i__ - 1] = yarc[i__ - 1];\r
-           }\r
-       }\r
-L100:\r
-       *jsamp = lsamp - jused;\r
-    }\r
-/*       Given that the maximum pitch period MAXPIT .LT. LFRAME (this is \r
-*/\r
-/*       currently true on every call, since SYNTHS always sets */\r
-/*       LFRAME=180), NOUT will always be .GE. 1 at this point. */\r
-    if (*nout != 0) {\r
-       *ivoico = voice[2];\r
-       *ipito = *pitch;\r
-       *rmso = *rms;\r
-       i__1 = *order;\r
-       for (i__ = 1; i__ <= i__1; ++i__) {\r
-           rco[i__ - 1] = rc[i__];\r
-       }\r
-    }\r
-    return 0;\r
-} /* pitsyn_ */\r
diff --git a/libs/codecs/lpc10/placea.c b/libs/codecs/lpc10/placea.c
deleted file mode 100644 (file)
index c0c7fa0..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.16  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.15  2003/09/19 01:20:22  markster\r
-Code cleanups (bug #66)\r
-\r
-Revision 1.2  2003/09/19 01:20:22  markster\r
-Code cleanups (bug #66)\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.3  2001/04/12 21:27:53  markh\r
-app_record now supports wildcards of sort so your output file is not overwritten every time it's run.  File.h got a documentation update on the ast_fileexists to include the return call.  Watch out for the placea.c placev.c code, it's updates have not been tested yet.  Just a few parenthesis to make it compile nicer on newer gcc versions with all the -W flags set.\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:31:07  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int placea_(integer *ipitch, integer *voibuf, integer *obound, integer *af, integer *vwin, integer *awin, integer *ewin, integer *lframe, integer *maxwin);\r
-#endif\r
-\r
-/* *********************************************************************** */\r
-\r
-/*     PLACEA Version 48 */\r
-\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.2  2003/09/19 01:20:22  markster\r
-/* Code cleanups (bug #66)\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.3  2001/04/12 21:27:53  markh\r
-/* app_record now supports wildcards of sort so your output file is not overwritten every time it's run.  File.h got a documentation update on the ast_fileexists to include the return call.  Watch out for the placea.c placev.c code, it's updates have not been tested yet.  Just a few parenthesis to make it compile nicer on newer gcc versions with all the -W flags set.\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:31:07  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.5  1996/03/19  20:41:55  jaf */\r
-/* Added some conditions satisfied by the output values in EWIN. */\r
-\r
-/* Revision 1.4  1996/03/19  20:24:17  jaf */\r
-/* Added some conditions satisfied by the output values in AWIN. */\r
-\r
-/* Revision 1.3  1996/03/18  21:40:04  jaf */\r
-/* Just added a few comments about which array indices of the arguments */\r
-/* are used, and mentioning that this subroutine has no local state. */\r
-\r
-/* Revision 1.2  1996/03/13  16:43:09  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:48:31  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* *********************************************************************** */\r
-/* Input: */\r
-/*  IPITCH */\r
-/*  VOIBUF */\r
-/*          Indices (2,AF-2), (1,AF-1), (2,AF-1), (1,AF), and (2,AF) read.*/\r
-/*           All other indices untouched. */\r
-/*  OBOUND */\r
-/*  AF */\r
-/*  VWIN */\r
-/*           Indices (1,AF) and (2,AF) read. */\r
-/*           All other indices untouched. */\r
-/*  LFRAME */\r
-/*  MAXWIN */\r
-/* Input/Output: */\r
-/*  AWIN */\r
-/*           Index (1,AF-1) read. */\r
-/*           Indices (1,AF) and (2,AF) written, and then read. */\r
-/*           All other indices untouched. */\r
-/*           In all cases (except possibly one), the final values will */\r
-/*           satisfy the condition: AWIN(2,AF)-AWIN(1,AF)+1 = MAXWIN. */\r
-/*           In that other case, */\r
-/*           AWIN(1,AF)=VWIN(1,AF) and AWIN(2,AF)=VWIN(2,AF). */\r
-/* Output: */\r
-/*  EWIN */\r
-/*           Indices (1,AF) and (2,AF) written. */\r
-/*           All other indices untouched. */\r
-/*           In all cases, the final values will satisfy the condition: */\r
-/*           AWIN(1,AF) .LE. EWIN(1,AF) .LE. EWIN(2,AF) .LE. AWIN(2,AF) */\r
-/*           In other words, the energy window is a sub-window of */\r
-/*           the analysis window. */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int placea_(integer *ipitch, integer *voibuf, integer *\r
-       obound, integer *af, integer *vwin, integer *awin, integer *ewin, \r
-       integer *lframe, integer *maxwin)\r
-{\r
-    /* System generated locals */\r
-    real r__1;\r
-\r
-    /* Builtin functions */\r
-    integer i_nint(real *);\r
-\r
-    /* Local variables */\r
-    logical allv, winv;\r
-    integer i__, j, k, l, hrange;\r
-    logical ephase;\r
-    integer lrange;\r
-\r
-/*       Arguments */\r
-/*       Local variables that need not be saved */\r
-    /* Parameter adjustments */\r
-    ewin -= 3;\r
-    awin -= 3;\r
-    vwin -= 3;\r
-    --voibuf;\r
-\r
-    /* Function Body */\r
-    lrange = (*af - 2) * *lframe + 1;\r
-    hrange = *af * *lframe;\r
-/*   Place the Analysis window based on the voicing window */\r
-/*   placement, onsets, tentative voicing decision, and pitch. */\r
-\r
-/*   Case 1:  Sustained Voiced Speech */\r
-/*   If the five most recent voicing decisions are */\r
-/*   voiced, then the window is placed phase-synchronously with the */\r
-/*   previous window, as close to the present voicing window if possible. \r
-*/\r
-/*   If onsets bound the voicing window, then preference is given to */\r
-/*   a phase-synchronous placement which does not overlap these onsets. */\r
-\r
-/*   Case 2:  Voiced Transition */\r
-/*   If at least one voicing decision in AF is voicied, and there are no \r
-*/\r
-/*   onsets, then the window is placed as in case 1. */\r
-\r
-/*   Case 3:  Unvoiced Speech or Onsets */\r
-/*   If both voicing decisions in AF are unvoiced, or there are onsets, */\r
-/*   then the window is placed coincident with the voicing window. */\r
-\r
-/*   Note:  During phase-synchronous placement of windows, the length */\r
-/*   is not altered from MAXWIN, since this would defeat the purpose */\r
-/*   of phase-synchronous placement. */\r
-/* Check for case 1 and case 2 */\r
-    allv = voibuf[((*af - 2) << 1) + 2] == 1;\r
-    allv = allv && voibuf[((*af - 1) << 1) + 1] == 1;\r
-    allv = allv && voibuf[((*af - 1) << 1) + 2] == 1;\r
-    allv = allv && voibuf[(*af << 1) + 1] == 1;\r
-    allv = allv && voibuf[(*af << 1) + 2] == 1;\r
-    winv = voibuf[(*af << 1) + 1] == 1 || voibuf[(*af << 1) + 2] == 1;\r
-    if (allv || (winv && *obound == 0)) {\r
-/* APHASE:  Phase synchronous window placement. */\r
-/* Get minimum lower index of the window. */\r
-       i__ = (lrange + *ipitch - 1 - awin[((*af - 1) << 1) + 1]) / *ipitch;\r
-       i__ *= *ipitch;\r
-       i__ += awin[((*af - 1) << 1) + 1];\r
-/* L = the actual length of this frame's analysis window. */\r
-       l = *maxwin;\r
-/* Calculate the location where a perfectly centered window would star\r
-t. */\r
-       k = (vwin[(*af << 1) + 1] + vwin[(*af << 1) + 2] + 1 - l) / 2;\r
-/* Choose the actual location to be the pitch multiple closest to this\r
-. */\r
-       r__1 = (real) (k - i__) / *ipitch;\r
-       awin[(*af << 1) + 1] = i__ + i_nint(&r__1) * *ipitch;\r
-       awin[(*af << 1) + 2] = awin[(*af << 1) + 1] + l - 1;\r
-/* If there is an onset bounding the right of the voicing window and t\r
-he */\r
-/* analysis window overlaps that, then move the analysis window backwa\r
-rd */\r
-/* to avoid this onset. */\r
-       if (*obound >= 2 && awin[(*af << 1) + 2] > vwin[(*af << 1) + 2]) {\r
-           awin[(*af << 1) + 1] -= *ipitch;\r
-           awin[(*af << 1) + 2] -= *ipitch;\r
-       }\r
-/* Similarly for the left of the voicing window. */\r
-       if ((*obound == 1 || *obound == 3) && awin[(*af << 1) + 1] < vwin[(*\r
-               af << 1) + 1]) {\r
-           awin[(*af << 1) + 1] += *ipitch;\r
-           awin[(*af << 1) + 2] += *ipitch;\r
-       }\r
-/* If this placement puts the analysis window above HRANGE, then */\r
-/* move it backward an integer number of pitch periods. */\r
-       while(awin[(*af << 1) + 2] > hrange) {\r
-           awin[(*af << 1) + 1] -= *ipitch;\r
-           awin[(*af << 1) + 2] -= *ipitch;\r
-       }\r
-/* Similarly if the placement puts the analysis window below LRANGE. \r
-*/\r
-       while(awin[(*af << 1) + 1] < lrange) {\r
-           awin[(*af << 1) + 1] += *ipitch;\r
-           awin[(*af << 1) + 2] += *ipitch;\r
-       }\r
-/* Make Energy window be phase-synchronous. */\r
-       ephase = TRUE_;\r
-/* Case 3 */\r
-    } else {\r
-       awin[(*af << 1) + 1] = vwin[(*af << 1) + 1];\r
-       awin[(*af << 1) + 2] = vwin[(*af << 1) + 2];\r
-       ephase = FALSE_;\r
-    }\r
-/* RMS is computed over an integer number of pitch periods in the analysis\r
- */\r
-/*window.  When it is not placed phase-synchronously, it is placed as clos\r
-e*/\r
-/* as possible to onsets. */\r
-    j = (awin[(*af << 1) + 2] - awin[(*af << 1) + 1] + 1) / *ipitch * *ipitch;\r
-    if (j == 0 || ! winv) {\r
-       ewin[(*af << 1) + 1] = vwin[(*af << 1) + 1];\r
-       ewin[(*af << 1) + 2] = vwin[(*af << 1) + 2];\r
-    } else if (! ephase && *obound == 2) {\r
-       ewin[(*af << 1) + 1] = awin[(*af << 1) + 2] - j + 1;\r
-       ewin[(*af << 1) + 2] = awin[(*af << 1) + 2];\r
-    } else {\r
-       ewin[(*af << 1) + 1] = awin[(*af << 1) + 1];\r
-       ewin[(*af << 1) + 2] = awin[(*af << 1) + 1] + j - 1;\r
-    }\r
-    return 0;\r
-} /* placea_ */\r
-\r
diff --git a/libs/codecs/lpc10/placev.c b/libs/codecs/lpc10/placev.c
deleted file mode 100644 (file)
index 11fadb4..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.3  2001/04/12 21:27:53  markh\r
-app_record now supports wildcards of sort so your output file is not overwritten every time it's run.  File.h got a documentation update on the ast_fileexists to include the return call.  Watch out for the placea.c placev.c code, it's updates have not been tested yet.  Just a few parenthesis to make it compile nicer on newer gcc versions with all the -W flags set.\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:31:02  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int placev_(integer *osbuf, integer *osptr, integer *oslen, integer *obound, integer *vwin, integer *af, integer *lframe, integer *minwin, integer *maxwin, integer *dvwinl, integer *dvwinh);\r
-#endif\r
-\r
-/* ****************************************************************** */\r
-\r
-/*     PLACEV Version 48 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.3  2001/04/12 21:27:53  markh\r
-/* app_record now supports wildcards of sort so your output file is not overwritten every time it's run.  File.h got a documentation update on the ast_fileexists to include the return call.  Watch out for the placea.c placev.c code, it's updates have not been tested yet.  Just a few parenthesis to make it compile nicer on newer gcc versions with all the -W flags set.\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:31:02  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.6  1996/03/19  20:42:19  jaf */\r
-/* Added some conditions satisfied by the output values in VWIN. */\r
-\r
-/* Revision 1.5  1996/03/19  18:37:56  jaf */\r
-/* Strengthened the specification of which indices of VWIN are read and */\r
-/* written. */\r
-\r
-/* Revision 1.4  1996/03/15  16:38:33  jaf */\r
-/* One tiny comment added. */\r
-\r
-/* Revision 1.3  1996/03/15  16:36:13  jaf */\r
-/* Added comments giving In/Out status of arguments. */\r
-\r
-/* Revision 1.2  1996/03/12  23:56:01  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:48:39  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ****************************************************************** */\r
-\r
-/* Input: */\r
-/*  OSBUF      Buffer which holds sorted indexes of onsets */\r
-/*             I believe that only indices 1 through OSPTR-1 can be read. */\r
-/*  OSLEN */\r
-/*  OSPTR      Free pointer into OSBUF */\r
-/*  AF */\r
-/*  LFRAME */\r
-/*  MINWIN */\r
-/*  MAXWIN */\r
-/*  DVWINL */\r
-/*  DVWINH     (This argument is never used.  Should it be?) */\r
-/* Input/Output: */\r
-/*  VWIN               Buffer of Voicing Window Positions (Modified) */\r
-/*             Index (2,AF-1) is read. */\r
-/*             Indices (1,AF) and (2,AF) are written, */\r
-/*             and then possibly read. */\r
-/*             All other indices are unused. */\r
-/*              In all cases, the final values will satsify the condition:*/\r
-/*               VWIN(2,AF)-VWIN(1,AF)+1 .LE. MAXWIN */\r
-/*               I'm not certain yet, but they may also satisfy: */\r
-/*               MINWIN .LE. VWIN(2,AF)-VWIN(1,AF)+1 */\r
-/* Output: */\r
-/*  OBOUND     This variable is set by this procedure and used */\r
-/*             in placing analysis windows (PLACEA).  Bit 1 */\r
-/*             indicates whether an onset bounds the left side */\r
-/*             of the voicing window, and bit 2 indicates whether */\r
-/*             an onset bounds the right side of the voicing window. */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int placev_(integer *osbuf, integer *osptr, integer *oslen, \r
-       integer *obound, integer *vwin, integer *af, integer *lframe, integer \r
-       *minwin, integer *maxwin, integer *dvwinl, integer *dvwinh)\r
-{\r
-    /* System generated locals */\r
-    integer i__1, i__2;\r
-\r
-    /* Local variables */\r
-    logical crit;\r
-    integer i__, q, osptr1, hrange, lrange;\r
-\r
-/*       Arguments */\r
-/*       Local variables that need not be saved */\r
-/*   Variables */\r
-/*    LRANGE, HRANGE  Range in which window is placed */\r
-/*    OSPTR1     OSPTR excluding samples in 3F */\r
-/*       Local state */\r
-/*       None */\r
-/*   Voicing Window Placement */\r
-\r
-/*         __________________ __________________ ______________ */\r
-/*        |                  |                  | */\r
-/*        |        1F        |        2F        |        3F ... */\r
-/*        |__________________|__________________|______________ */\r
-\r
-/*    Previous | */\r
-/*      Window | */\r
-/*  ...________| */\r
-\r
-/*             |                                | */\r
-/*      ------>| This window's placement range  |<------ */\r
-/*             |                                | */\r
-\r
-/*   There are three cases.  Note that these are different from those */\r
-/*   given in the LPC-10e phase 1 report. */\r
-\r
-/*   1.  If there are no onsets in this range, then the voicing window */\r
-/*   is centered in the pitch window.  If such a placement is not within \r
-*/\r
-/*   the window's placement range, then the window is placed in the left- \r
-*/\r
-/*   most portion of the placement range.  Its length is always MAXWIN. */\r
-\r
-/*   2.  If the first onset is in 2F and there is sufficient room to place\r
- */\r
-/*   the window immediately before this onset, then the window is placed \r
-*/\r
-/*   there, and its length is set to the maximum possible under these */\r
-/*   constraints. */\r
-\r
-/*     "Critical Region Exception":  If there is another onset in 2F */\r
-/*     such that a window can be placed between the two onsets, the */\r
-/*     window is placed there (ie, as in case 3). */\r
-\r
-/*   3.  Otherwise, the window is placed immediately after the onset.  The\r
- */\r
-/*   window's length */\r
-/*  is the longest length that can fit in the range under these constraint\r
-s,*/\r
-/*  except that the window may be shortened even further to avoid overlapp\r
-ing*/\r
-/*  other onsets in the placement range.  In any case, the window's length\r
-*/\r
-/*   is at least MINWIN. */\r
-\r
-/*   Note that the values of MINWIN and LFRAME must be chosen such */\r
-/*   that case 2 = false implies case 3 = true.   This means that */\r
-/*   MINWIN <= LFRAME/2.  If this were not the case, then a fourth case */\r
-/*   would have to be added for when the window cannot fit either before \r
-*/\r
-/*   or after the onset. */\r
-\r
-/*   Note also that onsets which weren't in 2F last time may be in 1F this\r
- */\r
-/*  time, due to the filter delays in computing onsets.  The result is tha\r
-t*/\r
-/*   occasionally a voicing window will overlap that onset.  The only way \r
-*/\r
-/*   to circumvent this problem is to add more delay in processing input \r
-*/\r
-/*   speech.  In the trade-off between delay and window-placement, window \r
-*/\r
-/*   placement lost. */\r
-/* Compute the placement range */\r
-    /* Parameter adjustments */\r
-    --osbuf;\r
-    vwin -= 3;\r
-\r
-    /* Function Body */\r
-/* Computing MAX */\r
-    i__1 = vwin[((*af - 1) << 1) + 2] + 1, i__2 = (*af - 2) * *lframe + 1;\r
-    lrange = max(i__1,i__2);\r
-    hrange = *af * *lframe;\r
-/* Compute OSPTR1, so the following code only looks at relevant onsets. */\r
-    for (osptr1 = *osptr - 1; osptr1 >= 1; --osptr1) {\r
-       if (osbuf[osptr1] <= hrange) {\r
-           goto L90;\r
-       }\r
-    }\r
-L90:\r
-    ++osptr1;\r
-/* Check for case 1 first (fast case): */\r
-    if (osptr1 <= 1 || osbuf[osptr1 - 1] < lrange) {\r
-/* Computing MAX */\r
-       i__1 = vwin[((*af - 1) << 1) + 2] + 1;\r
-       vwin[(*af << 1) + 1] = max(i__1,*dvwinl);\r
-       vwin[(*af << 1) + 2] = vwin[(*af << 1) + 1] + *maxwin - 1;\r
-       *obound = 0;\r
-    } else {\r
-/* Search backward in OSBUF for first onset in range. */\r
-/* This code relies on the above check being performed first. */\r
-       for (q = osptr1 - 1; q >= 1; --q) {\r
-           if (osbuf[q] < lrange) {\r
-               goto L100;\r
-           }\r
-       }\r
-L100:\r
-       ++q;\r
-/* Check for case 2 (placement before onset): */\r
-/* Check for critical region exception: */\r
-       i__1 = osptr1 - 1;\r
-       for (i__ = q + 1; i__ <= i__1; ++i__) {\r
-           if (osbuf[i__] - osbuf[q] >= *minwin) {\r
-               crit = TRUE_;\r
-               goto L105;\r
-           }\r
-       }\r
-       crit = FALSE_;\r
-L105:\r
-/* Computing MAX */\r
-       i__1 = (*af - 1) * *lframe, i__2 = lrange + *minwin - 1;\r
-       if (! crit && osbuf[q] > max(i__1,i__2)) {\r
-           vwin[(*af << 1) + 2] = osbuf[q] - 1;\r
-/* Computing MAX */\r
-           i__1 = lrange, i__2 = vwin[(*af << 1) + 2] - *maxwin + 1;\r
-           vwin[(*af << 1) + 1] = max(i__1,i__2);\r
-           *obound = 2;\r
-/* Case 3 (placement after onset) */\r
-       } else {\r
-           vwin[(*af << 1) + 1] = osbuf[q];\r
-L110:\r
-           ++q;\r
-           if (q >= osptr1) {\r
-               goto L120;\r
-           }\r
-           if (osbuf[q] > vwin[(*af << 1) + 1] + *maxwin) {\r
-               goto L120;\r
-           }\r
-           if (osbuf[q] < vwin[(*af << 1) + 1] + *minwin) {\r
-               goto L110;\r
-           }\r
-           vwin[(*af << 1) + 2] = osbuf[q] - 1;\r
-           *obound = 3;\r
-           return 0;\r
-L120:\r
-/* Computing MIN */\r
-           i__1 = vwin[(*af << 1) + 1] + *maxwin - 1;\r
-           vwin[(*af << 1) + 2] = min(i__1,hrange);\r
-           *obound = 1;\r
-       }\r
-    }\r
-    return 0;\r
-} /* placev_ */\r
-\r
diff --git a/libs/codecs/lpc10/preemp.c b/libs/codecs/lpc10/preemp.c
deleted file mode 100644 (file)
index a1dfb30..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:30:58  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int preemp_(real *inbuf, real *pebuf, integer *nsamp, real *coef, real *z__);\r
-#endif\r
-\r
-/* ******************************************************************* */\r
-\r
-/*     PREEMP Version 55 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:30:58  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/14  23:16:29  jaf */\r
-/* Just added a few comments about which array indices of the arguments */\r
-/* are used, and mentioning that this subroutine has no local state. */\r
-\r
-/* Revision 1.2  1996/03/11  23:23:34  jaf */\r
-/* Added a bunch of comments to an otherwise simple subroutine. */\r
-\r
-/* Revision 1.1  1996/02/07 14:48:48  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ******************************************************************* */\r
-\r
-/*   Preemphasize speech with a single-zero filter. */\r
-/*  (When coef = .9375, preemphasis is as in LPC43.) */\r
-\r
-/* Inputs: */\r
-/*  NSAMP  - Number of samples to filter */\r
-/*  INBUF  - Input speech buffer */\r
-/*           Indices 1 through NSAMP are read. */\r
-/*  COEF   - Preemphasis coefficient */\r
-/* Input/Output: */\r
-/*  Z      - Filter state */\r
-/* Output: */\r
-/*  PEBUF  - Preemphasized speech buffer (can be equal to INBUF) */\r
-/*           Indices 1 through NSAMP are modified. */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int preemp_(real *inbuf, real *pebuf, integer *nsamp, real *\r
-       coef, real *z__)\r
-{\r
-    /* System generated locals */\r
-    integer i__1;\r
-\r
-    /* Local variables */\r
-    real temp;\r
-    integer i__;\r
-\r
-/*       Arguments */\r
-/*       Local variables */\r
-\r
-/*       None of these need to have their values saved from one */\r
-/*       invocation to the next. */\r
-\r
-/*       Logically, this subroutine computes the output sequence */\r
-/*       pebuf(1:nsamp) defined by: */\r
-\r
-/*       pebuf(i) = inbuf(i) - coef * inbuf(i-1) */\r
-\r
-/*       where inbuf(0) is defined by the value of z given as input to */\r
-/*       this subroutine. */\r
-\r
-/*       What is this filter's frequency response and phase response? */\r
-\r
-/*       Why is this filter applied to the speech? */\r
-\r
-/*       Could it be more efficient to apply multiple filters */\r
-/*       simultaneously, by combining them into one equivalent filter? */\r
-\r
-/*       Are there ever cases when "factoring" one high-order filter into \r
-*/\r
-/*       multiple smaller-order filter actually reduces the number of */\r
-/*       arithmetic operations needed to perform them? */\r
-/*       When I first read this subroutine, I didn't understand why the */\r
-/*       variable temp was used.  It seemed that the statements in the do \r
-*/\r
-/*       loop could be replaced with the following: */\r
-\r
-/*           pebuf(i) = inbuf(i) - coef * z */\r
-/*           z = inbuf(i) */\r
-\r
-/*       The reason for temp is so that even if pebuf and inbuf are the */\r
-/*       same arrays in memory (i.e., they are aliased), then this */\r
-/*       subroutine will still work correctly.  I didn't realize this */\r
-/*       until seeing the comment after PEBUF above that says "(can be */\r
-/*       equal to INBUF)". */\r
-    /* Parameter adjustments */\r
-    --pebuf;\r
-    --inbuf;\r
-\r
-    /* Function Body */\r
-    i__1 = *nsamp;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       temp = inbuf[i__] - *coef * *z__;\r
-       *z__ = inbuf[i__];\r
-       pebuf[i__] = temp;\r
-/* L10: */\r
-    }\r
-    return 0;\r
-} /* preemp_ */\r
-\r
diff --git a/libs/codecs/lpc10/prepro.c b/libs/codecs/lpc10/prepro.c
deleted file mode 100644 (file)
index d535a0b..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:40:51  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:30:54  jaf\r
- * Initial revision\r
- *\r
- */\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int prepro_(real *speech, integer *length,\r
-                  struct lpc10_encoder_state *st);\r
-/*:ref: hp100_ 14 3 6 4 4 */\r
-/*:ref: inithp100_ 14 0 */\r
-#endif\r
-\r
-/* Table of constant values */\r
-\r
-static integer c__1 = 1;\r
-\r
-/* ********************************************************************* */\r
-\r
-/*     PREPRO Version 48 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:40:51  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:30:54  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/14  23:22:56  jaf */\r
-/* Added comments about when INITPREPRO should be used. */\r
-\r
-/* Revision 1.2  1996/03/14  23:09:27  jaf */\r
-/* Added an entry named INITPREPRO that initializes the local state of */\r
-/* this subroutine, and those it calls (if any). */\r
-\r
-/* Revision 1.1  1996/02/07  14:48:54  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ********************************************************************* */\r
-\r
-/*    Pre-process input speech: */\r
-\r
-/* Inputs: */\r
-/*  LENGTH - Number of SPEECH samples */\r
-/* Input/Output: */\r
-/*  SPEECH(LENGTH) - Speech data. */\r
-/*                   Indices 1 through LENGTH are read and modified. */\r
-\r
-/* This subroutine has no local state maintained from one call to the */\r
-/* next, but HP100 does.  If you want to switch to using a new audio */\r
-/* stream for this filter, or reinitialize its state for any other */\r
-/* reason, call the ENTRY INITPREPRO. */\r
-\r
-/* Subroutine */ int prepro_(real *speech, integer *length,\r
-                            struct lpc10_encoder_state *st)\r
-{\r
-    extern /* Subroutine */ int hp100_(real *, integer *, integer *, struct lpc10_encoder_state *);\r
-\r
-/*       Arguments */\r
-/*   High Pass Filter at 100 Hz */\r
-    /* Parameter adjustments */\r
-    if (speech) {\r
-       --speech;\r
-       }\r
-\r
-    /* Function Body */\r
-    hp100_(&speech[1], &c__1, length, st);\r
-    return 0;\r
-} /* prepro_ */\r
diff --git a/libs/codecs/lpc10/random.c b/libs/codecs/lpc10/random.c
deleted file mode 100644 (file)
index 4b8b3fc..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:41:32  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:30:49  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern integer random_(struct lpc10_decoder_state *st);\r
-#endif\r
-\r
-/* ********************************************************************** */\r
-\r
-/*     RANDOM Version 49 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:41:32  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:30:49  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/20  16:13:54  jaf */\r
-/* Rearranged comments a little bit, and added comments explaining that */\r
-/* even though there is local state here, there is no need to create an */\r
-/* ENTRY for reinitializing it. */\r
-\r
-/* Revision 1.2  1996/03/14  22:25:29  jaf */\r
-/* Just rearranged the comments and local variable declarations a bit. */\r
-\r
-/* Revision 1.1  1996/02/07 14:49:01  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ********************************************************************* */\r
-\r
-/*  Pseudo random number generator based on Knuth, Vol 2, p. 27. */\r
-\r
-/* Function Return: */\r
-/*  RANDOM - Integer variable, uniformly distributed over -32768 to 32767 */\r
-\r
-/* This subroutine maintains local state from one call to the next. */\r
-/* In the context of the LPC10 coder, there is no reason to reinitialize */\r
-/* this local state when switching between audio streams, because its */\r
-/* results are only used to generate noise for unvoiced frames. */\r
-\r
-integer random_(struct lpc10_decoder_state *st)\r
-{\r
-    /* Initialized data */\r
-\r
-    integer *j;\r
-    integer *k;\r
-    shortint *y;\r
-\r
-    /* System generated locals */\r
-    integer ret_val;\r
-\r
-/*     Parameters/constants */\r
-/*       Local state */\r
-/*   The following is a 16 bit 2's complement addition, */\r
-/*   with overflow checking disabled */\r
-\r
-    j = &(st->j);\r
-    k = &(st->k);\r
-    y = &(st->y[0]);\r
-\r
-    y[*k - 1] += y[*j - 1];\r
-    ret_val = y[*k - 1];\r
-    --(*k);\r
-    if (*k <= 0) {\r
-       *k = 5;\r
-    }\r
-    --(*j);\r
-    if (*j <= 0) {\r
-       *j = 5;\r
-    }\r
-    return ret_val;\r
-} /* random_ */\r
-\r
diff --git a/libs/codecs/lpc10/rcchk.c b/libs/codecs/lpc10/rcchk.c
deleted file mode 100644 (file)
index 00ae8e4..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:30:41  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int rcchk_(integer *order, real *rc1f, real *rc2f);\r
-#endif\r
-\r
-/* ********************************************************************* */\r
-\r
-/*     RCCHK Version 45G */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:30:41  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.4  1996/03/27  18:13:47  jaf */\r
-/* Commented out a call to subroutine ERROR. */\r
-\r
-/* Revision 1.3  1996/03/18  15:48:53  jaf */\r
-/* Just added a few comments about which array indices of the arguments */\r
-/* are used, and mentioning that this subroutine has no local state. */\r
-\r
-/* Revision 1.2  1996/03/13  16:55:22  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:49:08  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ********************************************************************* */\r
-\r
-/*  Check RC's, repeat previous frame's RC's if unstable */\r
-\r
-/* Input: */\r
-/*  ORDER - Number of RC's */\r
-/*  RC1F  - Previous frame's RC's */\r
-/*          Indices 1 through ORDER may be read. */\r
-/* Input/Output: */\r
-/*  RC2F  - Present frame's RC's */\r
-/*          Indices 1 through ORDER may be read, and written. */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int rcchk_(integer *order, real *rc1f, real *rc2f)\r
-{\r
-    /* System generated locals */\r
-    integer i__1;\r
-    real r__1;\r
-\r
-    /* Local variables */\r
-    integer i__;\r
-\r
-/*       Arguments */\r
-/*       Local variables that need not be saved */\r
-    /* Parameter adjustments */\r
-    --rc2f;\r
-    --rc1f;\r
-\r
-    /* Function Body */\r
-    i__1 = *order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       if ((r__1 = rc2f[i__], abs(r__1)) > .99f) {\r
-           goto L10;\r
-       }\r
-    }\r
-    return 0;\r
-/*       Note: In version embedded in other software, all calls to ERROR \r
-*/\r
-/*       should probably be removed. */\r
-L10:\r
-\r
-/*       This call to ERROR is only needed for debugging purposes. */\r
-\r
-/*       CALL ERROR('RCCHK',2,I) */\r
-    i__1 = *order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-       rc2f[i__] = rc1f[i__];\r
-    }\r
-    return 0;\r
-} /* rcchk_ */\r
-\r
diff --git a/libs/codecs/lpc10/synths.c b/libs/codecs/lpc10/synths.c
deleted file mode 100644 (file)
index 722ceb5..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.16  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.15  2003/09/27 02:45:37  markster\r
-Fix various compiler warnings (bug #322)\r
-\r
-Revision 1.2  2003/09/27 02:45:37  markster\r
-Fix various compiler warnings (bug #322)\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:39  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:42:59  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:30:33  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int synths_(integer *voice, integer *pitch, real *rms, real *rc, real *speech, integer *k, struct lpc10_decoder_state *st);\r
-/* comlen contrl_ 12 */\r
-/*:ref: pitsyn_ 14 12 4 4 4 6 6 4 4 4 6 6 4 6 */\r
-/*:ref: irc2pc_ 14 5 6 6 4 6 6 */\r
-/*:ref: bsynz_ 14 7 6 4 4 6 6 6 6 */\r
-/*:ref: deemp_ 14 2 6 4 */\r
-/*:ref: initpitsyn_ 14 0 */\r
-/*:ref: initbsynz_ 14 0 */\r
-/*:ref: initdeemp_ 14 0 */\r
-#endif\r
-\r
-/* Common Block Declarations */\r
-\r
-extern struct {\r
-    integer order, lframe;\r
-    logical corrp;\r
-} contrl_;\r
-\r
-#define contrl_1 contrl_\r
-\r
-/* Table of constant values */\r
-\r
-static real c_b2 = .7f;\r
-\r
-/* ***************************************************************** */\r
-\r
-/*     SYNTHS Version 54 */\r
-\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/09/27 02:45:37  markster\r
-/* Fix various compiler warnings (bug #322)\r
-/*\r
-/* Revision 1.2  2003/09/27 02:45:37  markster\r
-/* Fix various compiler warnings (bug #322)\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:42:59  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:30:33  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.5  1996/03/26  19:31:58  jaf */\r
-/* Commented out trace statements. */\r
-\r
-/* Revision 1.4  1996/03/25  19:41:01  jaf */\r
-/* Changed so that MAXFRM samples are always returned in the output array */\r
-/* SPEECH. */\r
-\r
-/* This required delaying the returned samples by MAXFRM sample times, */\r
-/* and remembering any "left over" samples returned by PITSYN from one */\r
-/* call of SYNTHS to the next. */\r
-\r
-/* Changed size of SPEECH from 2*MAXFRM to MAXFRM.  Removed local */\r
-/* variable SOUT.  Added local state variables BUF and BUFLEN. */\r
-\r
-/* Revision 1.3  1996/03/25  19:20:10  jaf */\r
-/* Added comments about the range of possible return values for argument */\r
-/* K, and increased the size of the arrays filled in by PITSYN from 11 to */\r
-/* 16, as has been already done inside of PITSYN. */\r
-\r
-/* Revision 1.2  1996/03/22  00:18:18  jaf */\r
-/* Added comments explaining meanings of input and output parameters, and */\r
-/* indicating which array indices can be read or written. */\r
-\r
-/* Added entry INITSYNTHS, which does nothing except call the */\r
-/* corresponding initialization entries for subroutines PITSYN, BSYNZ, */\r
-/* and DEEMP. */\r
-\r
-/* Revision 1.1  1996/02/07 14:49:44  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ***************************************************************** */\r
-\r
-/* The note below is from the distributed version of the LPC10 coder. */\r
-/* The version of the code below has been modified so that SYNTHS always */\r
-/* has a constant frame length output of MAXFRM. */\r
-\r
-/* Also, BSYNZ and DEEMP need not be modified to work on variable */\r
-/* positions within an array.  It is only necessary to pass the first */\r
-/* index desired as the array argument.  What actually gets passed is the */\r
-/* address of that array position, which the subroutine treats as the */\r
-/* first index of the array. */\r
-\r
-/* This technique is used in subroutine ANALYS when calling PREEMP, so it */\r
-/* appears that multiple people wrote different parts of this LPC10 code, */\r
-/* and that they didn't necessarily have equivalent knowledge of Fortran */\r
-/* (not surprising). */\r
-\r
-/*  NOTE: There is excessive buffering here, BSYNZ and DEEMP should be */\r
-/*        changed to operate on variable positions within SOUT.  Also, */\r
-/*        the output length parameter is bogus, and PITSYN should be */\r
-/*        rewritten to allow a constant frame length output. */\r
-\r
-/* Input: */\r
-/*  VOICE  - Half frame voicing decisions */\r
-/*           Indices 1 through 2 read. */\r
-/* Input/Output: */\r
-/*  PITCH  - Pitch */\r
-/*           PITCH is restricted to range 20 to 156, inclusive, */\r
-/*           before calling subroutine PITSYN, and then PITSYN */\r
-/*           can modify it further under some conditions. */\r
-/*  RMS    - Energy */\r
-/*           Only use is for debugging, and passed to PITSYN. */\r
-/*           See comments there for how it can be modified. */\r
-/*  RC     - Reflection coefficients */\r
-/*           Indices 1 through ORDER restricted to range -.99 to .99, */\r
-/*           before calling subroutine PITSYN, and then PITSYN */\r
-/*           can modify it further under some conditions. */\r
-/* Output: */\r
-/*  SPEECH - Synthesized speech samples. */\r
-/*           Indices 1 through the final value of K are written. */\r
-/*  K      - Number of samples placed into array SPEECH. */\r
-/*           This is always MAXFRM. */\r
-\r
-/* Subroutine */ int synths_(integer *voice, integer *pitch, real *\r
-       rms, real *rc, real *speech, integer *k, struct lpc10_decoder_state *st)\r
-{\r
-    /* Initialized data */\r
-\r
-    real *buf;\r
-    integer *buflen;\r
-\r
-    /* System generated locals */\r
-    integer i__1;\r
-    real r__1, r__2;\r
-\r
-    /* Local variables */\r
-    real rmsi[16];\r
-    integer nout, ivuv[16], i__, j;\r
-    extern /* Subroutine */ int deemp_(real *, integer *, struct lpc10_decoder_state *);\r
-    real ratio;\r
-    integer ipiti[16];\r
-    real g2pass;\r
-    real pc[10];\r
-    extern /* Subroutine */ int pitsyn_(integer *, integer *, integer *, real \r
-           *, real *, integer *, integer *, integer *, real *, real *, \r
-           integer *, real *, struct lpc10_decoder_state *);\r
-    real rci[160]      /* was [10][16] */;\r
-\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/09/27 02:45:37  markster\r
-/* Fix various compiler warnings (bug #322)\r
-/*\r
-/* Revision 1.2  2003/09/27 02:45:37  markster\r
-/* Fix various compiler warnings (bug #322)\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:42:59  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:30:33  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:03:47  jaf */\r
-/* Removed definitions for any constants that were no longer used. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:33  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:43:51  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Configuration parameters: */\r
-/* Frame size, Prediction order, Pitch period */\r
-/*       Arguments */\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/09/27 02:45:37  markster\r
-/* Fix various compiler warnings (bug #322)\r
-/*\r
-/* Revision 1.2  2003/09/27 02:45:37  markster\r
-/* Fix various compiler warnings (bug #322)\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:39  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:42:59  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_decoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_decoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:30:33  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:05:55  jaf */\r
-/* Commented out the common block variables that are not needed by the */\r
-/* embedded version. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:50  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:44:09  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Processing control variables: */\r
-\r
-/* *** Read-only: initialized in setup */\r
-\r
-/*  Files for Speech, Parameter, and Bitstream Input & Output, */\r
-/*    and message and debug outputs. */\r
-\r
-/* Here are the only files which use these variables: */\r
-\r
-/* lpcsim.f setup.f trans.f error.f vqsetup.f */\r
-\r
-/* Many files which use fdebug are not listed, since it is only used in */\r
-/* those other files conditionally, to print trace statements. */\r
-/*     integer fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*  LPC order, Frame size, Quantization rate, Bits per frame, */\r
-/*    Error correction */\r
-/* Subroutine SETUP is the only place where order is assigned a value, */\r
-/* and that value is 10.  It could increase efficiency 1% or so to */\r
-/* declare order as a constant (i.e., a Fortran PARAMETER) instead of as \r
-*/\r
-/* a variable in a COMMON block, since it is used in many places in the */\r
-/* core of the coding and decoding routines.  Actually, I take that back. \r
-*/\r
-/* At least when compiling with f2c, the upper bound of DO loops is */\r
-/* stored in a local variable before the DO loop begins, and then that is \r
-*/\r
-/* compared against on each iteration. */\r
-/* Similarly for lframe, which is given a value of MAXFRM in SETUP. */\r
-/* Similarly for quant, which is given a value of 2400 in SETUP.  quant */\r
-/* is used in only a few places, and never in the core coding and */\r
-/* decoding routines, so it could be eliminated entirely. */\r
-/* nbits is similar to quant, and is given a value of 54 in SETUP. */\r
-/* corrp is given a value of .TRUE. in SETUP, and is only used in the */\r
-/* subroutines ENCODE and DECODE.  It doesn't affect the speed of the */\r
-/* coder significantly whether it is .TRUE. or .FALSE., or whether it is \r
-*/\r
-/* a constant or a variable, since it is only examined once per frame. */\r
-/* Leaving it as a variable that is set to .TRUE.  seems like a good */\r
-/* idea, since it does enable some error-correction capability for */\r
-/* unvoiced frames, with no change in the coding rate, and no noticeable \r
-*/\r
-/* quality difference in the decoded speech. */\r
-/*     integer quant, nbits */\r
-/* *** Read/write: variables for debugging, not needed for LPC algorithm \r
-*/\r
-\r
-/*  Current frame, Unstable frames, Output clip count, Max onset buffer, \r
-*/\r
-/*    Debug listing detail level, Line count on listing page */\r
-\r
-/* nframe is not needed for an embedded LPC10 at all. */\r
-/* nunsfm is initialized to 0 in SETUP, and incremented in subroutine */\r
-/* ERROR, which is only called from RCCHK.  When LPC10 is embedded into */\r
-/* an application, I would recommend removing the call to ERROR in RCCHK, \r
-*/\r
-/* and remove ERROR and nunsfm completely. */\r
-/* iclip is initialized to 0 in SETUP, and incremented in entry SWRITE in \r
-*/\r
-/* sread.f.  When LPC10 is embedded into an application, one might want */\r
-/* to cause it to be incremented in a routine that takes the output of */\r
-/* SYNTHS and sends it to an audio device.  It could be optionally */\r
-/* displayed, for those that might want to know what it is. */\r
-/* maxosp is never initialized to 0 in SETUP, although it probably should \r
-*/\r
-/* be, and it is updated in subroutine ANALYS.  I doubt that its value */\r
-/* would be of much interest to an application in which LPC10 is */\r
-/* embedded. */\r
-/* listl and lincnt are not needed for an embedded LPC10 at all. */\r
-/*     integer nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*     common /contrl/ fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*     common /contrl/ quant, nbits */\r
-/*     common /contrl/ nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*       Parameters/constants */\r
-/*       Local variables that need not be saved */\r
-/*       Local state */\r
-/*       BUF is a buffer of speech samples that would have been returned \r
-*/\r
-/*       by the older version of SYNTHS, but the newer version doesn't, */\r
-/*       so that the newer version can always return MAXFRM samples on */\r
-/*       every call.  This has the effect of delaying the return of */\r
-/*       samples for one additional frame time. */\r
-\r
-/*       Indices 1 through BUFLEN contain samples that are left over from \r
-*/\r
-/*       the last call to SYNTHS.  Given the way that PITSYN works, */\r
-/*       BUFLEN should always be in the range MAXFRM-MAXPIT+1 through */\r
-/*       MAXFRM, inclusive, after a call to SYNTHS is complete. */\r
-\r
-/*       On the first call to SYNTHS (or the first call after */\r
-/*       reinitializing with the entry INITSYNTHS), BUFLEN is MAXFRM, and \r
-*/\r
-/*       a frame of silence is always returned. */\r
-    /* Parameter adjustments */\r
-    if (voice) {\r
-       --voice;\r
-       }\r
-    if (rc) {\r
-       --rc;\r
-       }\r
-    if (speech) {\r
-       --speech;\r
-       }\r
-\r
-    /* Function Body */\r
-    buf = &(st->buf[0]);\r
-    buflen = &(st->buflen);\r
-\r
-/* Computing MAX */\r
-    i__1 = min(*pitch,156);\r
-    *pitch = max(i__1,20);\r
-    i__1 = contrl_1.order;\r
-    for (i__ = 1; i__ <= i__1; ++i__) {\r
-/* Computing MAX */\r
-/* Computing MIN */\r
-       r__2 = rc[i__];\r
-       r__1 = min(r__2,.99f);\r
-       rc[i__] = max(r__1,-.99f);\r
-    }\r
-    pitsyn_(&contrl_1.order, &voice[1], pitch, rms, &rc[1], &contrl_1.lframe, \r
-           ivuv, ipiti, rmsi, rci, &nout, &ratio, st);\r
-    if (nout > 0) {\r
-       i__1 = nout;\r
-       for (j = 1; j <= i__1; ++j) {\r
-\r
-/*             Add synthesized speech for pitch period J to the en\r
-d of */\r
-/*             BUF. */\r
-\r
-           irc2pc_(&rci[j * 10 - 10], pc, &contrl_1.order, &c_b2, &g2pass);\r
-           bsynz_(pc, &ipiti[j - 1], &ivuv[j - 1], &buf[*buflen], &rmsi[j - 1]\r
-                   , &ratio, &g2pass, st);\r
-           deemp_(&buf[*buflen], &ipiti[j - 1], st);\r
-           *buflen += ipiti[j - 1];\r
-       }\r
-\r
-/*          Copy first MAXFRM samples from BUF to output array SPEECH \r
-*/\r
-/*          (scaling them), and then remove them from the beginning of\r
- */\r
-/*          BUF. */\r
-\r
-       for (i__ = 1; i__ <= 180; ++i__) {\r
-           speech[i__] = buf[i__ - 1] / 4096.f;\r
-       }\r
-       *k = 180;\r
-       *buflen += -180;\r
-       i__1 = *buflen;\r
-       for (i__ = 1; i__ <= i__1; ++i__) {\r
-           buf[i__ - 1] = buf[i__ + 179];\r
-       }\r
-    }\r
-    return 0;\r
-} /* synths_ */\r
diff --git a/libs/codecs/lpc10/tbdm.c b/libs/codecs/lpc10/tbdm.c
deleted file mode 100644 (file)
index aaca148..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:40  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:30:26  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int tbdm_(real *speech, integer *lpita, integer *tau, integer *ltau, real *amdf, integer *minptr, integer *maxptr, integer *mintau);\r
-/*:ref: difmag_ 14 8 6 4 4 4 4 6 4 4 */\r
-#endif\r
-\r
-/* ********************************************************************** */\r
-\r
-/*     TBDM Version 49 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:40  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:30:26  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/18  22:14:00  jaf */\r
-/* Just added a few comments about which array indices of the arguments */\r
-/* are used, and mentioning that this subroutine has no local state. */\r
-\r
-/* Revision 1.2  1996/03/13  14:48:37  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:49:54  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ********************************************************************* */\r
-\r
-/*TURBO DIFMAG: Compute High Resolution Average Magnitude Difference Function\r
-*/\r
-\r
-/* Note: There are several constants in here that appear to depend on a */\r
-/* particular TAU table.  That's not a problem for the LPC10 coder, but */\r
-/* watch out if you change the contents of TAU in the subroutine ANALYS. */\r
-\r
-/* Input: */\r
-/*  SPEECH - Low pass filtered speech */\r
-/*           Indices 1 through MAX+LPITA-1 are read, where: */\r
-/*           MAX = (TAU(LTAU)-TAU(1))/2+1 */\r
-/*           (If TAU(1) .LT. 39, then larger indices could be read */\r
-/*           by the last call to DIFMAG below.) */\r
-/*  LPITA  - Length of speech buffer */\r
-/*  TAU    - Table of lags, sorted in increasing order. */\r
-/*           Indices 1 through LTAU read. */\r
-/*  LTAU   - Number of lag values to compute */\r
-/* Output: */\r
-/*  AMDF   - Average Magnitude Difference for each lag in TAU */\r
-/*          Indices 1 through LTAU written, and several might then be read.*/\r
-/*  MINPTR - Index of minimum AMDF value */\r
-/*  MAXPTR - Index of maximum AMDF value within +/- 1/2 octave of min */\r
-/*  MINTAU - Lag corresponding to minimum AMDF value */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int tbdm_(real *speech, integer *lpita, integer *tau, \r
-       integer *ltau, real *amdf, integer *minptr, integer *maxptr, integer *\r
-       mintau)\r
-{\r
-    /* System generated locals */\r
-    integer i__1, i__2, i__3, i__4;\r
-\r
-    /* Local variables */\r
-    real amdf2[6];\r
-    integer minp2, ltau2, maxp2, i__;\r
-    extern /* Subroutine */ int difmag_(real *, integer *, integer *, integer \r
-           *, integer *, real *, integer *, integer *);\r
-    integer minamd, ptr, tau2[6];\r
-\r
-/*     Arguments */\r
-/*     REAL SPEECH(LPITA+TAU(LTAU)), AMDF(LTAU) */\r
-/*   Stupid TOAST doesn't understand expressions */\r
-/*       Local variables that need not be saved */\r
-/*       Local state */\r
-/*       None */\r
-/*   Compute full AMDF using log spaced lags, find coarse minimum */\r
-    /* Parameter adjustments */\r
-    --speech;\r
-    --amdf;\r
-    --tau;\r
-\r
-    /* Function Body */\r
-    difmag_(&speech[1], lpita, &tau[1], ltau, &tau[*ltau], &amdf[1], minptr, \r
-           maxptr);\r
-    *mintau = tau[*minptr];\r
-    minamd = amdf[*minptr];\r
-/*   Build table containing all lags within +/- 3 of the AMDF minimum */\r
-/*    excluding all that have already been computed */\r
-    ltau2 = 0;\r
-    ptr = *minptr - 2;\r
-/* Computing MAX */\r
-    i__1 = *mintau - 3;\r
-/* Computing MIN */\r
-    i__3 = *mintau + 3, i__4 = tau[*ltau] - 1;\r
-    i__2 = min(i__3,i__4);\r
-    for (i__ = max(i__1,41); i__ <= i__2; ++i__) {\r
-       while(tau[ptr] < i__) {\r
-           ++ptr;\r
-       }\r
-       if (tau[ptr] != i__) {\r
-           ++ltau2;\r
-           tau2[ltau2 - 1] = i__;\r
-       }\r
-    }\r
-/*   Compute AMDF of the new lags, if there are any, and choose one */\r
-/*    if it is better than the coarse minimum */\r
-    if (ltau2 > 0) {\r
-       difmag_(&speech[1], lpita, tau2, &ltau2, &tau[*ltau], amdf2, &minp2, &\r
-               maxp2);\r
-       if (amdf2[minp2 - 1] < (real) minamd) {\r
-           *mintau = tau2[minp2 - 1];\r
-           minamd = amdf2[minp2 - 1];\r
-       }\r
-    }\r
-/*   Check one octave up, if there are any lags not yet computed */\r
-    if (*mintau >= 80) {\r
-       i__ = *mintau / 2;\r
-       if ((i__ & 1) == 0) {\r
-           ltau2 = 2;\r
-           tau2[0] = i__ - 1;\r
-           tau2[1] = i__ + 1;\r
-       } else {\r
-           ltau2 = 1;\r
-           tau2[0] = i__;\r
-       }\r
-       difmag_(&speech[1], lpita, tau2, &ltau2, &tau[*ltau], amdf2, &minp2, &\r
-               maxp2);\r
-       if (amdf2[minp2 - 1] < (real) minamd) {\r
-           *mintau = tau2[minp2 - 1];\r
-           minamd = amdf2[minp2 - 1];\r
-           *minptr += -20;\r
-       }\r
-    }\r
-/*   Force minimum of the AMDF array to the high resolution minimum */\r
-    amdf[*minptr] = (real) minamd;\r
-/*   Find maximum of AMDF within 1/2 octave of minimum */\r
-/* Computing MAX */\r
-    i__2 = *minptr - 5;\r
-    *maxptr = max(i__2,1);\r
-/* Computing MIN */\r
-    i__1 = *minptr + 5;\r
-    i__2 = min(i__1,*ltau);\r
-    for (i__ = *maxptr + 1; i__ <= i__2; ++i__) {\r
-       if (amdf[i__] > amdf[*maxptr]) {\r
-           *maxptr = i__;\r
-       }\r
-    }\r
-    return 0;\r
-} /* tbdm_ */\r
-\r
diff --git a/libs/codecs/lpc10/voicin.c b/libs/codecs/lpc10/voicin.c
deleted file mode 100644 (file)
index dc277e5..0000000
+++ /dev/null
@@ -1,786 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.16  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.15  2003/11/23 22:14:32  markster\r
-Various warning cleanups\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:40  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.2  1996/08/20  20:45:00  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:30:14  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int voicin_(integer *vwin, real *inbuf, real *lpbuf, integer *buflim, integer *half, real *minamd, real *maxamd, integer *mintau, real *ivrc, integer *obound, integer *voibuf, integer *af, struct lpc10_encoder_state *st);\r
-/* comlen contrl_ 12 */\r
-/*:ref: vparms_ 14 14 4 6 6 4 4 6 4 4 4 4 6 6 6 6 */\r
-#endif\r
-\r
-/* Common Block Declarations */\r
-\r
-extern struct {\r
-    integer order, lframe;\r
-    logical corrp;\r
-} contrl_;\r
-\r
-#define contrl_1 contrl_\r
-\r
-/****************************************************************************/\r
-\r
-/*     VOICIN Version 52 */\r
-\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/11/23 22:14:32  markster\r
-/* Various warning cleanups\r
-/*\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:40  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:45:00  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:30:14  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.10  1996/03/29  17:59:14  jaf */\r
-/* Avoided using VALUE(9), although it shouldn't affect the function of */\r
-/* the code at all, because it was always multiplied by VDC(9,SNRL), */\r
-/* which is 0 for all values of SNRL.  Still, if VALUE(9) had an initial */\r
-/* value of IEEE NaN, it might cause trouble (I don't know how IEEE */\r
-/* defines Nan * 0.  It should either be NaN or 0.) */\r
-\r
-/* Revision 1.9  1996/03/29  17:54:46  jaf */\r
-/* Added a few comments about the accesses made to argument array VOIBUF */\r
-/* and the local saved array VOICE. */\r
-\r
-/* Revision 1.8  1996/03/27  18:19:54  jaf */\r
-/* Added an assignment to VSTATE that does not affect the function of the */\r
-/* program at all.  The only reason I put it in was so that the tracing */\r
-/* statements at the end, when enabled, will print a consistent value for */\r
-/* VSTATE when HALF .EQ. 1, rather than a garbage value that could change */\r
-/* from one call to the next. */\r
-\r
-/* Revision 1.7  1996/03/26  20:00:06  jaf */\r
-/* Removed the inclusion of the file "vcomm.fh", and put its contents */\r
-/* into this file.  It was included nowhere else but here. */\r
-\r
-/* Revision 1.6  1996/03/26  19:38:09  jaf */\r
-/* Commented out trace statements. */\r
-\r
-/* Revision 1.5  1996/03/19  20:43:45  jaf */\r
-/* Added comments about which indices of OBOUND and VOIBUF can be */\r
-/* accessed, and whether they are read or written.  VOIBUF is fairly */\r
-/* messy. */\r
-\r
-/* Revision 1.4  1996/03/19  15:00:58  jaf */\r
-/* Moved the DATA statements for the *VDC* variables later, as it is */\r
-/* apparently illegal to have DATA statements before local variable */\r
-/* declarations. */\r
-\r
-/* Revision 1.3  1996/03/19  00:10:49  jaf */\r
-/* Heavily commented the local variables that are saved from one */\r
-/* invocation to the next, and how the local variable FIRST is used to */\r
-/* avoid the need to assign most of them initial values with DATA */\r
-/* statements. */\r
-\r
-/* A few should be initialized, but aren't.  I've guessed initial values */\r
-/* for two of these, SFBUE and SLBUE, and I've convinced myself that for */\r
-/* VOICE, the effects of uninitialized values will die out after 2 or 3 */\r
-/* frame times.  It would still be good to choose initial values for */\r
-/* these, but I don't know what reasonable values would be (0 comes to */\r
-/* mind). */\r
-\r
-/* Revision 1.2  1996/03/13  16:09:28  jaf */\r
-/* Comments added explaining which of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next, and which */\r
-/* do not. */\r
-\r
-/* WARNING!  Some of them that should are never given initial values in */\r
-/* this code.  Hopefully, Fortran 77 defines initial values for them, but */\r
-/* even so, giving them explicit initial values is preferable. */\r
-\r
-/* WARNING!  VALUE(9) is used, but never assigned a value.  It should */\r
-/* probably be eliminated from the code. */\r
-\r
-/* Revision 1.1  1996/02/07 14:50:28  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/****************************************************************************/\r
-\r
-/*        Voicing Detection (VOICIN) makes voicing decisions for each half */\r
-/*  frame of input speech.  Tentative voicing decisions are made two frames*/\r
-/*   in the future (2F) for each half frame.  These decisions are carried */\r
-/*   through one frame in the future (1F) to the present (P) frame where */\r
-/*   they are examined and smoothed, resulting in the final voicing */\r
-/*   decisions for each half frame. */\r
-/*        The voicing parameter (signal measurement) column vector (VALUE) */\r
-/*   is based on a rectangular window of speech samples determined by the */\r
-/*  window placement algorithm.  The voicing parameter vector contains the*/\r
-/*  AMDF windowed maximum-to-minimum ratio, the zero crossing rate, energy*/\r
-/*   measures, reflection coefficients, and prediction gains.  The voicing */\r
-/*  window is placed to avoid contamination of the voicing parameter vector*/\r
-/*   with speech onsets. */\r
-/*        The input signal is then classified as unvoiced (including */\r
-/*   silence) or voiced.  This decision is made by a linear discriminant */\r
-/*   function consisting of a dot product of the voicing decision */\r
-/*   coefficient (VDC) row vector with the measurement column vector */\r
-/*  (VALUE).  The VDC vector is 2-dimensional, each row vector is optimized*/\r
-/*   for a particular signal-to-noise ratio (SNR).  So, before the dot */\r
-/*   product is performed, the SNR is estimated to select the appropriate */\r
-/*   VDC vector. */\r
-/*        The smoothing algorithm is a modified median smoother.  The */\r
-/*  voicing discriminant function is used by the smoother to determine how*/\r
-/*   strongly voiced or unvoiced a signal is.  The smoothing is further */\r
-/*   modified if a speech onset and a voicing decision transition occur */\r
-/*   within one half frame.  In this case, the voicing decision transition */\r
-/*  is extended to the speech onset.  For transmission purposes, there are*/\r
-/*   constraints on the duration and transition of voicing decisions.  The */\r
-/*   smoother takes these constraints into account. */\r
-/*        Finally, the energy estimates are updated along with the dither */\r
-/*   threshold used to calculate the zero crossing rate (ZC). */\r
-\r
-/* Inputs: */\r
-/*  VWIN      - Voicing window limits */\r
-/*              The indices read of arrays VWIN, INBUF, LPBUF, and BUFLIM */\r
-/*              are the same as those read by subroutine VPARMS. */\r
-/*  INBUF     - Input speech buffer */\r
-/*  LPBUF     - Low-pass filtered speech buffer */\r
-/*  BUFLIM    - INBUF and LPBUF limits */\r
-/*  HALF      - Present analysis half frame number */\r
-/*  MINAMD    - Minimum value of the AMDF */\r
-/*  MAXAMD    - Maximum value of the AMDF */\r
-/*  MINTAU    - Pointer to the lag of the minimum AMDF value */\r
-/*  IVRC(2)   - Inverse filter's RC's */\r
-/*              Only index 2 of array IVRC read under normal operation. */\r
-/*              (Index 1 is also read when debugging is turned on.) */\r
-/*  OBOUND    - Onset boundary descriptions */\r
-/*             Indices 1 through 3 read if (HALF .NE. 1), otherwise untouched.\r
-*/\r
-/*  AF        - The analysis frame number */\r
-/* Output: */\r
-/*  VOIBUF(2,0:AF) - Buffer of voicing decisions */\r
-/*              Index (HALF,3) written. */\r
-/*              If (HALF .EQ. 1), skip down to "Read (HALF,3)" below. */\r
-/*              Indices (1,2), (2,1), (1,2), and (2,2) read. */\r
-/*              One of the following is then done: */\r
-/*                 read (1,3) and possibly write (1,2) */\r
-/*                 read (1,3) and write (1,2) or (2,2) */\r
-/*                 write (2,1) */\r
-/*                 write (2,1) or (1,2) */\r
-/*                 read (1,0) and (1,3) and then write (2,2) or (1,1) */\r
-/*                 no reads or writes on VOIBUF */\r
-/*              Finally, read (HALF,3) */\r
-/* Internal: */\r
-/*  QS        - Ratio of preemphasized to full-band energies */\r
-/*  RC1       - First reflection coefficient */\r
-/* AR_B      - Product of the causal forward and reverse pitch prediction gain\r
-s*/\r
-/* AR_F      - Product of the noncausal forward and rev. pitch prediction gain\r
-s*/\r
-/*  ZC        - Zero crossing rate */\r
-/*  DITHER    - Zero crossing threshold level */\r
-/*  MAXMIN    - AMDF's 1 octave windowed maximum-to-minimum ratio */\r
-/*  MINPTR    - Location  of minimum AMDF value */\r
-/*  NVDC      - Number of elements in each VDC vector */\r
-/*  NVDCL     - Number of VDC vectors */\r
-/*  VDCL      - SNR values corresponding to the set of VDC's */\r
-/*  VDC       - 2-D voicing decision coefficient vector */\r
-/*  VALUE(9)  - Voicing Parameters */\r
-/*  VOICE(2,3)- History of LDA results */\r
-/*              On every call when (HALF .EQ. 1), VOICE(*,I+1) is */\r
-/*              shifted back to VOICE(*,I), for I=1,2. */\r
-/*              VOICE(HALF,3) is written on every call. */\r
-/*              Depending on several conditions, one or more of */\r
-/*              (1,1), (1,2), (2,1), and (2,2) might then be read. */\r
-/*  LBE       - Ratio of low-band instantaneous to average energies */\r
-/*  FBE       - Ratio of full-band instantaneous to average energies */\r
-/*  LBVE      - Low band voiced energy */\r
-/*  LBUE      - Low band unvoiced energy */\r
-/*  FBVE      - Full band voiced energy */\r
-/*  FBUE      - Full band unvoiced energy */\r
-/*  OFBUE     - Previous full-band unvoiced energy */\r
-/*  OLBUE     - Previous low-band unvoiced energy */\r
-/*  REF       - Reference energy for initialization and DITHER threshold */\r
-/*  SNR       - Estimate of signal-to-noise ratio */\r
-/*  SNR2      - Estimate of low-band signal-to-noise ratio */\r
-/*  SNRL      - SNR level number */\r
-/*  OT        - Onset transition present */\r
-/*  VSTATE    - Decimal interpretation of binary voicing classifications */\r
-/*  FIRST     - First call flag */\r
-\r
-/* This subroutine maintains local state from one call to the next.  If */\r
-/* you want to switch to using a new audio stream for this filter, or */\r
-/* reinitialize its state for any other reason, call the ENTRY */\r
-/* INITVOICIN. */\r
-\r
-/* Subroutine */ int voicin_(integer *vwin, real *inbuf, real *\r
-       lpbuf, integer *buflim, integer *half, real *minamd, real *maxamd, \r
-       integer *mintau, real *ivrc, integer *obound, integer *voibuf, \r
-       integer *af, struct lpc10_encoder_state *st)\r
-{\r
-    /* Initialized data */\r
-\r
-    real *dither;\r
-    static real vdc[100]       /* was [10][10] */ = { 0.f,1714.f,-110.f,\r
-           334.f,-4096.f,-654.f,3752.f,3769.f,0.f,1181.f,0.f,874.f,-97.f,\r
-           300.f,-4096.f,-1021.f,2451.f,2527.f,0.f,-500.f,0.f,510.f,-70.f,\r
-           250.f,-4096.f,-1270.f,2194.f,2491.f,0.f,-1500.f,0.f,500.f,-10.f,\r
-           200.f,-4096.f,-1300.f,2e3f,2e3f,0.f,-2e3f,0.f,500.f,0.f,0.f,\r
-           -4096.f,-1300.f,2e3f,2e3f,0.f,-2500.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,\r
-           0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,\r
-           0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,\r
-           0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f };\r
-    static integer nvdcl = 5;\r
-    static real vdcl[10] = { 600.f,450.f,300.f,200.f,0.f,0.f,0.f,0.f,0.f,0.f }\r
-           ;\r
-\r
-    /* System generated locals */\r
-    integer inbuf_offset = 0, lpbuf_offset = 0, i__1, i__2;\r
-    real r__1, r__2;\r
-\r
-    /* Builtin functions */\r
-    integer i_nint(real *);\r
-    double sqrt(doublereal);\r
-\r
-    /* Local variables */\r
-    real ar_b__, ar_f__;\r
-    integer *lbve, *lbue, *fbve, *fbue;\r
-    integer snrl, i__;\r
-    integer *ofbue, *sfbue;\r
-    real *voice;\r
-    integer *olbue, *slbue;\r
-    real value[9];\r
-    integer zc;\r
-    logical ot;\r
-    real qs;\r
-    real *maxmin;\r
-    integer vstate;\r
-    real rc1;\r
-    extern /* Subroutine */ int vparms_(integer *, real *, real *, integer *, \r
-           integer *, real *, integer *, integer *, integer *, integer *, \r
-           real *, real *, real *, real *);\r
-    integer fbe, lbe;\r
-    real *snr;\r
-    real snr2;\r
-\r
-/*     Global Variables: */\r
-/*       Arguments */\r
-/* $Log$\r
- * Revision 1.16  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.15  2003/11/23 22:14:32  markster\r
-/* Various warning cleanups\r
-/*\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:40  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.2  1996/08/20  20:45:00  jaf\r
- * Removed all static local variables that were SAVE'd in the Fortran\r
- * code, and put them in struct lpc10_encoder_state that is passed as an\r
- * argument.\r
- *\r
- * Removed init function, since all initialization is now done in\r
- * init_lpc10_encoder_state().\r
- *\r
- * Revision 1.1  1996/08/19  22:30:14  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.3  1996/03/29  22:05:55  jaf */\r
-/* Commented out the common block variables that are not needed by the */\r
-/* embedded version. */\r
-\r
-/* Revision 1.2  1996/03/26  19:34:50  jaf */\r
-/* Added comments indicating which constants are not needed in an */\r
-/* application that uses the LPC-10 coder. */\r
-\r
-/* Revision 1.1  1996/02/07  14:44:09  jaf */\r
-/* Initial revision */\r
-\r
-/*   LPC Processing control variables: */\r
-\r
-/* *** Read-only: initialized in setup */\r
-\r
-/*  Files for Speech, Parameter, and Bitstream Input & Output, */\r
-/*    and message and debug outputs. */\r
-\r
-/* Here are the only files which use these variables: */\r
-\r
-/* lpcsim.f setup.f trans.f error.f vqsetup.f */\r
-\r
-/* Many files which use fdebug are not listed, since it is only used in */\r
-/* those other files conditionally, to print trace statements. */\r
-/*     integer fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*  LPC order, Frame size, Quantization rate, Bits per frame, */\r
-/*    Error correction */\r
-/* Subroutine SETUP is the only place where order is assigned a value, */\r
-/* and that value is 10.  It could increase efficiency 1% or so to */\r
-/* declare order as a constant (i.e., a Fortran PARAMETER) instead of as \r
-*/\r
-/* a variable in a COMMON block, since it is used in many places in the */\r
-/* core of the coding and decoding routines.  Actually, I take that back. \r
-*/\r
-/* At least when compiling with f2c, the upper bound of DO loops is */\r
-/* stored in a local variable before the DO loop begins, and then that is \r
-*/\r
-/* compared against on each iteration. */\r
-/* Similarly for lframe, which is given a value of MAXFRM in SETUP. */\r
-/* Similarly for quant, which is given a value of 2400 in SETUP.  quant */\r
-/* is used in only a few places, and never in the core coding and */\r
-/* decoding routines, so it could be eliminated entirely. */\r
-/* nbits is similar to quant, and is given a value of 54 in SETUP. */\r
-/* corrp is given a value of .TRUE. in SETUP, and is only used in the */\r
-/* subroutines ENCODE and DECODE.  It doesn't affect the speed of the */\r
-/* coder significantly whether it is .TRUE. or .FALSE., or whether it is \r
-*/\r
-/* a constant or a variable, since it is only examined once per frame. */\r
-/* Leaving it as a variable that is set to .TRUE.  seems like a good */\r
-/* idea, since it does enable some error-correction capability for */\r
-/* unvoiced frames, with no change in the coding rate, and no noticeable \r
-*/\r
-/* quality difference in the decoded speech. */\r
-/*     integer quant, nbits */\r
-/* *** Read/write: variables for debugging, not needed for LPC algorithm \r
-*/\r
-\r
-/*  Current frame, Unstable frames, Output clip count, Max onset buffer, \r
-*/\r
-/*    Debug listing detail level, Line count on listing page */\r
-\r
-/* nframe is not needed for an embedded LPC10 at all. */\r
-/* nunsfm is initialized to 0 in SETUP, and incremented in subroutine */\r
-/* ERROR, which is only called from RCCHK.  When LPC10 is embedded into */\r
-/* an application, I would recommend removing the call to ERROR in RCCHK, \r
-*/\r
-/* and remove ERROR and nunsfm completely. */\r
-/* iclip is initialized to 0 in SETUP, and incremented in entry SWRITE in \r
-*/\r
-/* sread.f.  When LPC10 is embedded into an application, one might want */\r
-/* to cause it to be incremented in a routine that takes the output of */\r
-/* SYNTHS and sends it to an audio device.  It could be optionally */\r
-/* displayed, for those that might want to know what it is. */\r
-/* maxosp is never initialized to 0 in SETUP, although it probably should \r
-*/\r
-/* be, and it is updated in subroutine ANALYS.  I doubt that its value */\r
-/* would be of much interest to an application in which LPC10 is */\r
-/* embedded. */\r
-/* listl and lincnt are not needed for an embedded LPC10 at all. */\r
-/*     integer nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*     common /contrl/ fsi, fso, fpi, fpo, fbi, fbo, pbin, fmsg, fdebug */\r
-/*     common /contrl/ quant, nbits */\r
-/*     common /contrl/ nframe, nunsfm, iclip, maxosp, listl, lincnt */\r
-/*     Parameters/constants */\r
-/*       Voicing coefficient and Linear Discriminant Analysis variables: \r
-*/\r
-/*       Max number of VDC's and VDC levels */\r
-/*       The following are not Fortran PARAMETER's, but they are */\r
-/*       initialized with DATA statements, and never modified. */\r
-/*       Actual number of VDC's and levels */\r
-/*       Local variables that need not be saved */\r
-/*       Note: */\r
-\r
-/*       VALUE(1) through VALUE(8) are assigned values, but VALUE(9) */\r
-/*       never is.  Yet VALUE(9) is read in the loop that begins "DO I = \r
-*/\r
-/*       1, 9" below.  I believe that this doesn't cause any problems in \r
-*/\r
-/*       this subroutine, because all VDC(9,*) array elements are 0, and \r
-*/\r
-/*       this is what is multiplied by VALUE(9) in all cases.  Still, it \r
-*/\r
-/*       would save a multiplication to change the loop to "DO I = 1, 8". \r
-*/\r
-/*       Local state */\r
-/*       WARNING! */\r
-\r
-/*       VOICE, SFBUE, and SLBUE should be saved from one invocation to */\r
-/*       the next, but they are never given an initial value. */\r
-\r
-/*       Does Fortran 77 specify some default initial value, like 0, or */\r
-/*       is it undefined?  If it is undefined, then this code should be */\r
-/*       corrected to specify an initial value. */\r
-\r
-/*       For VOICE, note that it is "shifted" in the statement that */\r
-/*       begins "IF (HALF .EQ. 1) THEN" below.  Also, uninitialized */\r
-/*       values in the VOICE array can only affect entries in the VOIBUF \r
-*/\r
-/*       array that are for the same frame, or for an older frame.  Thus \r
-*/\r
-/*       the effects of uninitialized values in VOICE cannot linger on */\r
-/*       for more than 2 or 3 frame times. */\r
-\r
-/*       For SFBUE and SLBUE, the effects of uninitialized values can */\r
-/*       linger on for many frame times, because their previous values */\r
-/*       are exponentially decayed.  Thus it is more important to choose \r
-*/\r
-/*       initial values for these variables.  I would guess that a */\r
-/*       reasonable initial value for SFBUE is REF/16, the same as used */\r
-/*       for FBUE and OFBUE.  Similarly, SLBUE can be initialized to */\r
-/*       REF/32, the same as for LBUE and OLBUE. */\r
-\r
-/*       These guessed initial values should be validated by re-running */\r
-/*       the modified program on some audio samples. */\r
-\r
-/*   Declare and initialize filters: */\r
-\r
-    dither = (&st->dither);\r
-    snr = (&st->snr);\r
-    maxmin = (&st->maxmin);\r
-    voice = (&st->voice[0]);\r
-    lbve = (&st->lbve);\r
-    lbue = (&st->lbue);\r
-    fbve = (&st->fbve);\r
-    fbue = (&st->fbue);\r
-    ofbue = (&st->ofbue);\r
-    olbue = (&st->olbue);\r
-    sfbue = (&st->sfbue);\r
-    slbue = (&st->slbue);\r
-\r
-    /* Parameter adjustments */\r
-    if (vwin) {\r
-       --vwin;\r
-       }\r
-    if (buflim) {\r
-       --buflim;\r
-       }\r
-    if (inbuf) {\r
-       inbuf_offset = buflim[1];\r
-       inbuf -= inbuf_offset;\r
-       }\r
-    if (lpbuf) {\r
-       lpbuf_offset = buflim[3];\r
-       lpbuf -= lpbuf_offset;\r
-       }\r
-    if (ivrc) {\r
-       --ivrc;\r
-       }\r
-    if (obound) {\r
-       --obound;\r
-       }\r
-    if (voibuf) {\r
-       --voibuf;\r
-       }\r
-\r
-    /* Function Body */\r
-\r
-/*       The following variables are saved from one invocation to the */\r
-/*       next, but are not initialized with DATA statements.  This is */\r
-/*       acceptable, because FIRST is initialized ot .TRUE., and the */\r
-/*       first time that this subroutine is then called, they are all */\r
-/*       given initial values. */\r
-\r
-/*       SNR */\r
-/*       LBVE, LBUE, FBVE, FBUE, OFBUE, OLBUE */\r
-\r
-/*       MAXMIN is initialized on the first call, assuming that HALF */\r
-/*       .EQ. 1 on first call.  This is how ANALYS calls this subroutine. \r
-*/\r
-\r
-/*   Voicing Decision Parameter vector (* denotes zero coefficient): */\r
-\r
-/*     * MAXMIN */\r
-/*       LBE/LBVE */\r
-/*       ZC */\r
-/*       RC1 */\r
-/*       QS */\r
-/*       IVRC2 */\r
-/*       aR_B */\r
-/*       aR_F */\r
-/*     * LOG(LBE/LBVE) */\r
-/*  Define 2-D voicing decision coefficient vector according to the voicin\r
-g*/\r
-/*  parameter order above.  Each row (VDC vector) is optimized for a speci\r
-fic*/\r
-/*   SNR.  The last element of the vector is the constant. */\r
-/*              E    ZC    RC1    Qs   IVRC2  aRb   aRf        c */\r
-\r
-/*  The VOICE array contains the result of the linear discriminant functio\r
-n*/\r
-/*   (analog values).  The VOIBUF array contains the hard-limited binary \r
-*/\r
-/*   voicing decisions.  The VOICE and VOIBUF arrays, according to FORTRAN\r
- */\r
-/*   memory allocation, are addressed as: */\r
-\r
-/*        (half-frame number, future-frame number) */\r
-\r
-/*        |   Past    |  Present  |  Future1  |  Future2  | */\r
-/*        | 1,0 | 2,0 | 1,1 | 2,1 | 1,2 | 2,2 | 1,3 | 2,3 |  --->  time */\r
-\r
-/*   Update linear discriminant function history each frame: */\r
-    if (*half == 1) {\r
-       voice[0] = voice[2];\r
-       voice[1] = voice[3];\r
-       voice[2] = voice[4];\r
-       voice[3] = voice[5];\r
-       *maxmin = *maxamd / max(*minamd,1.f);\r
-    }\r
-/*   Calculate voicing parameters twice per frame: */\r
-    vparms_(&vwin[1], &inbuf[inbuf_offset], &lpbuf[lpbuf_offset], &buflim[1], \r
-           half, dither, mintau, &zc, &lbe, &fbe, &qs, &rc1, &ar_b__, &\r
-           ar_f__);\r
-/*   Estimate signal-to-noise ratio to select the appropriate VDC vector. \r
-*/\r
-/*   The SNR is estimated as the running average of the ratio of the */\r
-/*   running average full-band voiced energy to the running average */\r
-/*   full-band unvoiced energy. SNR filter has gain of 63. */\r
-    r__1 = (*snr + *fbve / (real) max(*fbue,1)) * 63 / 64.f;\r
-    *snr = (real) i_nint(&r__1);\r
-    snr2 = *snr * *fbue / max(*lbue,1);\r
-/*   Quantize SNR to SNRL according to VDCL thresholds. */\r
-    snrl = 1;\r
-    i__1 = nvdcl - 1;\r
-    for (snrl = 1; snrl <= i__1; ++snrl) {\r
-       if (snr2 > vdcl[snrl - 1]) {\r
-           goto L69;\r
-       }\r
-    }\r
-/*     (Note:  SNRL = NVDCL here) */\r
-L69:\r
-/*   Linear discriminant voicing parameters: */\r
-    value[0] = *maxmin;\r
-    value[1] = (real) lbe / max(*lbve,1);\r
-    value[2] = (real) zc;\r
-    value[3] = rc1;\r
-    value[4] = qs;\r
-    value[5] = ivrc[2];\r
-    value[6] = ar_b__;\r
-    value[7] = ar_f__;\r
-/*   Evaluation of linear discriminant function: */\r
-    voice[*half + 3] = vdc[snrl * 10 - 1];\r
-    for (i__ = 1; i__ <= 8; ++i__) {\r
-       voice[*half + 3] += vdc[i__ + snrl * 10 - 11] * value[i__ - 1];\r
-    }\r
-/*   Classify as voiced if discriminant > 0, otherwise unvoiced */\r
-/*   Voicing decision for current half-frame:  1 = Voiced; 0 = Unvoiced */\r
-    if (voice[*half + 3] > 0.f) {\r
-       voibuf[*half + 6] = 1;\r
-    } else {\r
-       voibuf[*half + 6] = 0;\r
-    }\r
-/*   Skip voicing decision smoothing in first half-frame: */\r
-/*     Give a value to VSTATE, so that trace statements below will print \r
-*/\r
-/*     a consistent value from one call to the next when HALF .EQ. 1. */\r
-/*     The value of VSTATE is not used for any other purpose when this is \r
-*/\r
-/*     true. */\r
-    vstate = -1;\r
-    if (*half == 1) {\r
-       goto L99;\r
-    }\r
-/*   Voicing decision smoothing rules (override of linear combination): */\r
-\r
-/*     Unvoiced half-frames:  At least two in a row. */\r
-/*     -------------------- */\r
-\r
-/*     Voiced half-frames:    At least two in a row in one frame. */\r
-/*     -------------------    Otherwise at least three in a row. */\r
-/*                            (Due to the way transition frames are encoded) */\r
-\r
-/*     In many cases, the discriminant function determines how to smooth. */\r
-/*     In the following chart, the decisions marked with a * may be overridden\r
-.*/\r
-\r
-/*   Voicing override of transitions at onsets: */\r
-/*     If a V/UV or UV/V voicing decision transition occurs within one-half \r
-*/\r
-/*     frame of an onset bounding a voicing window, then the transition is */\r
-/*     moved to occur at the onset. */\r
-\r
-/*     P       1F */\r
-/*     -----   ----- */\r
-/*     0   0   0   0 */\r
-/*     0   0   0*  1   (If there is an onset there) */\r
-/*     0   0   1*  0*  (Based on 2F and discriminant distance) */\r
-/*     0   0   1   1 */\r
-/*     0   1*  0   0   (Always) */\r
-/*     0   1*  0*  1   (Based on discriminant distance) */\r
-/*     0*  1   1   0*  (Based on past, 2F, and discriminant distance) */\r
-/*     0   1*  1   1   (If there is an onset there) */\r
-/*     1   0*  0   0   (If there is an onset there) */\r
-/*     1   0   0   1 */\r
-/*     1   0*  1*  0   (Based on discriminant distance) */\r
-/*     1   0*  1   1   (Always) */\r
-/*     1   1   0   0 */\r
-/*     1   1   0*  1*  (Based on 2F and discriminant distance) */\r
-/*     1   1   1*  0   (If there is an onset there) */\r
-/*     1   1   1   1 */\r
-\r
-/*   Determine if there is an onset transition between P and 1F. */\r
-/*   OT (Onset Transition) is true if there is an onset between */\r
-/*   P and 1F but not after 1F. */\r
-    ot = ((obound[1] & 2) != 0 || obound[2] == 1) && (obound[3] & 1) == 0;\r
-/*   Multi-way dispatch on voicing decision history: */\r
-    vstate = (voibuf[3] << 3) + (voibuf[4] << 2) + (voibuf[5] << 1) + voibuf[\r
-           6];\r
-    switch (vstate + 1) {\r
-       case 1:  goto L99;\r
-       case 2:  goto L1;\r
-       case 3:  goto L2;\r
-       case 4:  goto L99;\r
-       case 5:  goto L4;\r
-       case 6:  goto L5;\r
-       case 7:  goto L6;\r
-       case 8:  goto L7;\r
-       case 9:  goto L8;\r
-       case 10:  goto L99;\r
-       case 11:  goto L10;\r
-       case 12:  goto L11;\r
-       case 13:  goto L99;\r
-       case 14:  goto L13;\r
-       case 15:  goto L14;\r
-       case 16:  goto L99;\r
-    }\r
-L1:\r
-    if (ot && voibuf[7] == 1) {\r
-       voibuf[5] = 1;\r
-    }\r
-    goto L99;\r
-L2:\r
-    if (voibuf[7] == 0 || voice[2] < -voice[3]) {\r
-       voibuf[5] = 0;\r
-    } else {\r
-       voibuf[6] = 1;\r
-    }\r
-    goto L99;\r
-L4:\r
-    voibuf[4] = 0;\r
-    goto L99;\r
-L5:\r
-    if (voice[1] < -voice[2]) {\r
-       voibuf[4] = 0;\r
-    } else {\r
-       voibuf[5] = 1;\r
-    }\r
-    goto L99;\r
-/*   VOIBUF(2,0) must be 0 */\r
-L6:\r
-    if (voibuf[1] == 1 || voibuf[7] == 1 || voice[3] > voice[0]) {\r
-       voibuf[6] = 1;\r
-    } else {\r
-       voibuf[3] = 1;\r
-    }\r
-    goto L99;\r
-L7:\r
-    if (ot) {\r
-       voibuf[4] = 0;\r
-    }\r
-    goto L99;\r
-L8:\r
-    if (ot) {\r
-       voibuf[4] = 1;\r
-    }\r
-    goto L99;\r
-L10:\r
-    if (voice[2] < -voice[1]) {\r
-       voibuf[5] = 0;\r
-    } else {\r
-       voibuf[4] = 1;\r
-    }\r
-    goto L99;\r
-L11:\r
-    voibuf[4] = 1;\r
-    goto L99;\r
-L13:\r
-    if (voibuf[7] == 0 && voice[3] < -voice[2]) {\r
-       voibuf[6] = 0;\r
-    } else {\r
-       voibuf[5] = 1;\r
-    }\r
-    goto L99;\r
-L14:\r
-    if (ot && voibuf[7] == 0) {\r
-       voibuf[5] = 0;\r
-    }\r
-/*     GOTO 99 */\r
-L99:\r
-/*   Now update parameters: */\r
-/*   ---------------------- */\r
-\r
-/*  During unvoiced half-frames, update the low band and full band unvoice\r
-d*/\r
-/*   energy estimates (LBUE and FBUE) and also the zero crossing */\r
-/*   threshold (DITHER).  (The input to the unvoiced energy filters is */\r
-/*   restricted to be less than 10dB above the previous inputs of the */\r
-/*   filters.) */\r
-/*   During voiced half-frames, update the low-pass (LBVE) and all-pass */\r
-/*   (FBVE) voiced energy estimates. */\r
-    if (voibuf[*half + 6] == 0) {\r
-/* Computing MIN */\r
-       i__1 = fbe, i__2 = *ofbue * 3;\r
-       r__1 = (*sfbue * 63 + (min(i__1,i__2) << 3)) / 64.f;\r
-       *sfbue = i_nint(&r__1);\r
-       *fbue = *sfbue / 8;\r
-       *ofbue = fbe;\r
-/* Computing MIN */\r
-       i__1 = lbe, i__2 = *olbue * 3;\r
-       r__1 = (*slbue * 63 + (min(i__1,i__2) << 3)) / 64.f;\r
-       *slbue = i_nint(&r__1);\r
-       *lbue = *slbue / 8;\r
-       *olbue = lbe;\r
-    } else {\r
-       r__1 = (*lbve * 63 + lbe) / 64.f;\r
-       *lbve = i_nint(&r__1);\r
-       r__1 = (*fbve * 63 + fbe) / 64.f;\r
-       *fbve = i_nint(&r__1);\r
-    }\r
-/*   Set dither threshold to yield proper zero crossing rates in the */\r
-/*   presence of low frequency noise and low level signal input. */\r
-/*   NOTE: The divisor is a function of REF, the expected energies. */\r
-/* Computing MIN */\r
-/* Computing MAX */\r
-    r__2 = sqrt((real) (*lbue * *lbve)) * 64 / 3000;\r
-    r__1 = max(r__2,1.f);\r
-    *dither = min(r__1,20.f);\r
-/*   Voicing decisions are returned in VOIBUF. */\r
-    return 0;\r
-} /* voicin_ */\r
diff --git a/libs/codecs/lpc10/vparms.c b/libs/codecs/lpc10/vparms.c
deleted file mode 100644 (file)
index e40cbfd..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-/*\r
-\r
-$Log$\r
-Revision 1.15  2004/06/26 03:50:14  markster\r
-Merge source cleanups (bug #1911)\r
-\r
-Revision 1.14  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-mer feb 12 14:56:57 CET 2003\r
-\r
-Revision 1.2  2000/01/05 08:20:40  markster\r
-Some OSS fixes and a few lpc changes to make it actually work\r
-\r
- * Revision 1.1  1996/08/19  22:30:04  jaf\r
- * Initial revision\r
- *\r
-\r
-*/\r
-\r
-/*  -- translated by f2c (version 19951025).\r
-   You must link the resulting object file with the libraries:\r
-       -lf2c -lm   (in that order)\r
-*/\r
-\r
-#include "f2c.h"\r
-\r
-#ifdef P_R_O_T_O_T_Y_P_E_S\r
-extern int vparms_(integer *vwin, real *inbuf, real *lpbuf, integer *buflim, integer *half, real *dither, integer *mintau, integer *zc, integer *lbe, integer *fbe, real *qs, real *rc1, real *ar_b__, real *ar_f__);\r
-#endif\r
-\r
-/* Table of constant values */\r
-\r
-static real c_b2 = 1.f;\r
-\r
-/* ********************************************************************* */\r
-\r
-/*     VPARMS Version 50 */\r
-\r
-/* $Log$\r
- * Revision 1.15  2004/06/26 03:50:14  markster\r
- * Merge source cleanups (bug #1911)\r
- *\r
-/* Revision 1.14  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.1.1.1  2003/02/12 13:59:15  matteo\r
-/* mer feb 12 14:56:57 CET 2003\r
-/*\r
-/* Revision 1.2  2000/01/05 08:20:40  markster\r
-/* Some OSS fixes and a few lpc changes to make it actually work\r
-/*\r
- * Revision 1.1  1996/08/19  22:30:04  jaf\r
- * Initial revision\r
- * */\r
-/* Revision 1.6  1996/03/29  18:01:16  jaf */\r
-/* Added some more comments about the range of INBUF and LPBUF that can */\r
-/* be read.  Note that it is possible for index VWIN(2)+1 to be read from */\r
-/* INBUF, which might be outside of its defined range, although that will */\r
-/* require more careful checking. */\r
-\r
-/* Revision 1.5  1996/03/19  00:02:02  jaf */\r
-/* I just noticed that the argument DITHER is modified inside of this */\r
-/* subroutine.  Comments were added explaining the possible final values. */\r
-\r
-/* Revision 1.4  1996/03/18  22:22:59  jaf */\r
-/* Finishing the job I said I did with the last check-in comments. */\r
-\r
-/* Revision 1.3  1996/03/18  22:22:17  jaf */\r
-/* Just added a few comments about which array indices of the arguments */\r
-/* are used, and mentioning that this subroutine has no local state. */\r
-\r
-/* Revision 1.2  1996/03/13  15:02:58  jaf */\r
-/* Comments added explaining that none of the local variables of this */\r
-/* subroutine need to be saved from one invocation to the next. */\r
-\r
-/* Revision 1.1  1996/02/07 14:50:42  jaf */\r
-/* Initial revision */\r
-\r
-\r
-/* ********************************************************************* */\r
-\r
-/*  Calculate voicing parameters: */\r
-\r
-/* Input: */\r
-/*  VWIN   - Voicing window limits */\r
-/*           Indices 1 through 2 read. */\r
-/*  INBUF  - Input speech buffer */\r
-/*           Indices START-1 through STOP read, */\r
-/*          where START and STOP are defined in the code (only written once).\r
-*/\r
-/*           Note that STOP can be as large as VWIN(2)+1 ! */\r
-/*  LPBUF  - Low pass filtered speech */\r
-/*           Indices START-MINTAU through STOP+MINTAU read, */\r
-/*          where START and STOP are defined in the code (only written once).\r
-*/\r
-/*  BUFLIM - Array bounds for INBUF and LPBUF */\r
-/*           Indices 1 through 4 read. */\r
-/*  HALF   - Half frame (1 or 2) */\r
-/*  MINTAU - Lag corresponding to minimum AMDF value (pitch estimate) */\r
-/* Input/Output: */\r
-/*  DITHER - Zero crossing threshold */\r
-/*           The resulting value might be the negation of the input */\r
-/*           value.  It might always be the same as the input value, */\r
-/*           if the DO loop below always executes an even number of times. */\r
-/* Output: (all of them are written on every call) */\r
-/*  ZC     - Zero crossing rate */\r
-/*  LBE    - Low band energy (sum of magnitudes - SM) */\r
-/*  FBE    - Full band energy (SM) */\r
-/*  QS     - Ratio of 6 dB/oct preemphasized energy to full band energy */\r
-/*  RC1    - First reflection coefficient */\r
-/*  AR_B   - Product of the causal forward and reverse pitch */\r
-/*           prediction gains */\r
-/*  AR_F   - Product of the noncausal forward and reverse pitch */\r
-/*           prediction gains */\r
-/* Internal: */\r
-/*  OLDSGN - Previous sign of dithered signal */\r
-/*  VLEN   - Length of voicing window */\r
-/*  START  - Lower address of current half of voicing window */\r
-/*  STOP   - Upper address of current half of voicing window */\r
-/*  E_0    - Energy of LPF speech (sum of squares - SS) */\r
-/*  E_B    - Energy of LPF speech backward one pitch period (SS) */\r
-/*  E_F    - Energy of LPF speech forward one pitch period (SS) */\r
-/*  R_B    - Autocovariance of LPF speech backward one pitch period */\r
-/*  R_F    - Autocovariance of LPF speech forward one pitch period */\r
-/*  LP_RMS - Energy of LPF speech (sum of magnitudes - SM) */\r
-/*  AP_RMS - Energy of all-pass speech (SM) */\r
-/*  E_PRE  - Energy of 6dB preemphasized speech (SM) */\r
-/*  E0AP   - Energy of all-pass speech (SS) */\r
-\r
-/* This subroutine has no local state. */\r
-\r
-/* Subroutine */ int vparms_(integer *vwin, real *inbuf, real *lpbuf, integer \r
-       *buflim, integer *half, real *dither, integer *mintau, integer *zc, \r
-       integer *lbe, integer *fbe, real *qs, real *rc1, real *ar_b__, real *\r
-       ar_f__)\r
-{\r
-    /* System generated locals */\r
-    integer inbuf_offset, lpbuf_offset, i__1;\r
-    real r__1, r__2;\r
-\r
-    /* Builtin functions */\r
-    double r_sign(real *, real *);\r
-    integer i_nint(real *);\r
-\r
-    /* Local variables */\r
-    integer vlen, stop, i__;\r
-    real e_pre__;\r
-    integer start;\r
-    real ap_rms__, e_0__, oldsgn, lp_rms__, e_b__, e_f__, r_b__, r_f__, e0ap;\r
-\r
-/*       Arguments */\r
-/*       Local variables that need not be saved */\r
-/*   Calculate zero crossings (ZC) and several energy and correlation */\r
-/*   measures on low band and full band speech.  Each measure is taken */\r
-/*   over either the first or the second half of the voicing window, */\r
-/*   depending on the variable HALF. */\r
-    /* Parameter adjustments */\r
-    --vwin;\r
-    --buflim;\r
-    lpbuf_offset = buflim[3];\r
-    lpbuf -= lpbuf_offset;\r
-    inbuf_offset = buflim[1];\r
-    inbuf -= inbuf_offset;\r
-\r
-    /* Function Body */\r
-    lp_rms__ = 0.f;\r
-    ap_rms__ = 0.f;\r
-    e_pre__ = 0.f;\r
-    e0ap = 0.f;\r
-    *rc1 = 0.f;\r
-    e_0__ = 0.f;\r
-    e_b__ = 0.f;\r
-    e_f__ = 0.f;\r
-    r_f__ = 0.f;\r
-    r_b__ = 0.f;\r
-    *zc = 0;\r
-    vlen = vwin[2] - vwin[1] + 1;\r
-    start = vwin[1] + (*half - 1) * vlen / 2 + 1;\r
-    stop = start + vlen / 2 - 1;\r
-\r
-/* I'll use the symbol HVL in the table below to represent the value */\r
-/* VLEN/2.  Note that if VLEN is odd, then HVL should be rounded down, */\r
-/* i.e., HVL = (VLEN-1)/2. */\r
-\r
-/* HALF  START          STOP */\r
-\r
-/* 1     VWIN(1)+1      VWIN(1)+HVL */\r
-/* 2     VWIN(1)+HVL+1  VWIN(1)+2*HVL */\r
-\r
-/* Note that if VLEN is even and HALF is 2, then STOP will be */\r
-/* VWIN(1)+VLEN = VWIN(2)+1.  That could be bad, if that index of INBUF */\r
-/* is undefined. */\r
-\r
-    r__1 = inbuf[start - 1] - *dither;\r
-    oldsgn = r_sign(&c_b2, &r__1);\r
-    i__1 = stop;\r
-    for (i__ = start; i__ <= i__1; ++i__) {\r
-       lp_rms__ += (r__1 = lpbuf[i__], abs(r__1));\r
-       ap_rms__ += (r__1 = inbuf[i__], abs(r__1));\r
-       e_pre__ += (r__1 = inbuf[i__] - inbuf[i__ - 1], abs(r__1));\r
-/* Computing 2nd power */\r
-       r__1 = inbuf[i__];\r
-       e0ap += r__1 * r__1;\r
-       *rc1 += inbuf[i__] * inbuf[i__ - 1];\r
-/* Computing 2nd power */\r
-       r__1 = lpbuf[i__];\r
-       e_0__ += r__1 * r__1;\r
-/* Computing 2nd power */\r
-       r__1 = lpbuf[i__ - *mintau];\r
-       e_b__ += r__1 * r__1;\r
-/* Computing 2nd power */\r
-       r__1 = lpbuf[i__ + *mintau];\r
-       e_f__ += r__1 * r__1;\r
-       r_f__ += lpbuf[i__] * lpbuf[i__ + *mintau];\r
-       r_b__ += lpbuf[i__] * lpbuf[i__ - *mintau];\r
-       r__1 = inbuf[i__] + *dither;\r
-       if (r_sign(&c_b2, &r__1) != oldsgn) {\r
-           ++(*zc);\r
-           oldsgn = -oldsgn;\r
-       }\r
-       *dither = -(*dither);\r
-    }\r
-/*   Normalized short-term autocovariance coefficient at unit sample delay\r
- */\r
-    *rc1 /= max(e0ap,1.f);\r
-/*  Ratio of the energy of the first difference signal (6 dB/oct preemphas\r
-is)*/\r
-/*   to the energy of the full band signal */\r
-/* Computing MAX */\r
-    r__1 = ap_rms__ * 2.f;\r
-    *qs = e_pre__ / max(r__1,1.f);\r
-/*   aR_b is the product of the forward and reverse prediction gains, */\r
-/*   looking backward in time (the causal case). */\r
-    *ar_b__ = r_b__ / max(e_b__,1.f) * (r_b__ / max(e_0__,1.f));\r
-/*  aR_f is the same as aR_b, but looking forward in time (non causal case\r
-).*/\r
-    *ar_f__ = r_f__ / max(e_f__,1.f) * (r_f__ / max(e_0__,1.f));\r
-/*   Normalize ZC, LBE, and FBE to old fixed window length of 180. */\r
-/*   (The fraction 90/VLEN has a range of .58 to 1) */\r
-    r__2 = (real) (*zc << 1);\r
-    r__1 = r__2 * (90.f / vlen);\r
-    *zc = i_nint(&r__1);\r
-/* Computing MIN */\r
-    r__1 = lp_rms__ / 4 * (90.f / vlen);\r
-    i__1 = i_nint(&r__1);\r
-    *lbe = min(i__1,32767);\r
-/* Computing MIN */\r
-    r__1 = ap_rms__ / 4 * (90.f / vlen);\r
-    i__1 = i_nint(&r__1);\r
-    *fbe = min(i__1,32767);\r
-    return 0;\r
-} /* vparms_ */\r
-\r