mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-13 01:26:58 +00:00
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@125 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
151
libs/codec/lpc10/irc2pc.c
Normal file
151
libs/codec/lpc10/irc2pc.c
Normal file
@@ -0,0 +1,151 @@
|
||||
/*
|
||||
|
||||
$Log$
|
||||
Revision 1.15 2004/06/26 03:50:14 markster
|
||||
Merge source cleanups (bug #1911)
|
||||
|
||||
Revision 1.14 2003/02/12 13:59:15 matteo
|
||||
mer feb 12 14:56:57 CET 2003
|
||||
|
||||
Revision 1.1.1.1 2003/02/12 13:59:15 matteo
|
||||
mer feb 12 14:56:57 CET 2003
|
||||
|
||||
Revision 1.2 2000/01/05 08:20:39 markster
|
||||
Some OSS fixes and a few lpc changes to make it actually work
|
||||
|
||||
* Revision 1.1 1996/08/19 22:31:56 jaf
|
||||
* Initial revision
|
||||
*
|
||||
|
||||
*/
|
||||
|
||||
/* -- translated by f2c (version 19951025).
|
||||
You must link the resulting object file with the libraries:
|
||||
-lf2c -lm (in that order)
|
||||
*/
|
||||
|
||||
#include "f2c.h"
|
||||
|
||||
#ifdef P_R_O_T_O_T_Y_P_E_S
|
||||
extern int irc2pc_(real *rc, real *pc, integer *order, real *gprime, real *g2pass);
|
||||
#endif
|
||||
|
||||
/* ***************************************************************** */
|
||||
|
||||
/* IRC2PC Version 48 */
|
||||
|
||||
/* $Log$
|
||||
* Revision 1.15 2004/06/26 03:50:14 markster
|
||||
* Merge source cleanups (bug #1911)
|
||||
*
|
||||
/* Revision 1.14 2003/02/12 13:59:15 matteo
|
||||
/* mer feb 12 14:56:57 CET 2003
|
||||
/*
|
||||
/* Revision 1.1.1.1 2003/02/12 13:59:15 matteo
|
||||
/* mer feb 12 14:56:57 CET 2003
|
||||
/*
|
||||
/* Revision 1.2 2000/01/05 08:20:39 markster
|
||||
/* Some OSS fixes and a few lpc changes to make it actually work
|
||||
/*
|
||||
* Revision 1.1 1996/08/19 22:31:56 jaf
|
||||
* Initial revision
|
||||
* */
|
||||
/* Revision 1.3 1996/03/20 15:47:19 jaf */
|
||||
/* Added comments about which indices of array arguments are read or */
|
||||
/* written. */
|
||||
|
||||
/* Revision 1.2 1996/03/14 16:59:04 jaf */
|
||||
/* Comments added explaining that none of the local variables of this */
|
||||
/* subroutine need to be saved from one invocation to the next. */
|
||||
|
||||
/* Revision 1.1 1996/02/07 14:47:27 jaf */
|
||||
/* Initial revision */
|
||||
|
||||
|
||||
/* ***************************************************************** */
|
||||
|
||||
/* Convert Reflection Coefficients to Predictor Coeficients */
|
||||
|
||||
/* Inputs: */
|
||||
/* RC - Reflection coefficients */
|
||||
/* Indices 1 through ORDER read. */
|
||||
/* ORDER - Number of RC's */
|
||||
/* GPRIME - Excitation modification gain */
|
||||
/* Outputs: */
|
||||
/* PC - Predictor coefficients */
|
||||
/* Indices 1 through ORDER written. */
|
||||
/* Indices 1 through ORDER-1 are read after being written. */
|
||||
/* G2PASS - Excitation modification sharpening factor */
|
||||
|
||||
/* This subroutine has no local state. */
|
||||
|
||||
/* Subroutine */ int irc2pc_(real *rc, real *pc, integer *order, real *gprime,
|
||||
real *g2pass)
|
||||
{
|
||||
/* System generated locals */
|
||||
integer i__1, i__2;
|
||||
|
||||
/* Builtin functions */
|
||||
double sqrt(doublereal);
|
||||
|
||||
/* Local variables */
|
||||
real temp[10];
|
||||
integer i__, j;
|
||||
|
||||
/* Arguments */
|
||||
/* $Log$
|
||||
* Revision 1.15 2004/06/26 03:50:14 markster
|
||||
* Merge source cleanups (bug #1911)
|
||||
*
|
||||
/* Revision 1.14 2003/02/12 13:59:15 matteo
|
||||
/* mer feb 12 14:56:57 CET 2003
|
||||
/*
|
||||
/* Revision 1.1.1.1 2003/02/12 13:59:15 matteo
|
||||
/* mer feb 12 14:56:57 CET 2003
|
||||
/*
|
||||
/* Revision 1.2 2000/01/05 08:20:39 markster
|
||||
/* Some OSS fixes and a few lpc changes to make it actually work
|
||||
/*
|
||||
* Revision 1.1 1996/08/19 22:31:56 jaf
|
||||
* Initial revision
|
||||
* */
|
||||
/* Revision 1.3 1996/03/29 22:03:47 jaf */
|
||||
/* Removed definitions for any constants that were no longer used. */
|
||||
|
||||
/* Revision 1.2 1996/03/26 19:34:33 jaf */
|
||||
/* Added comments indicating which constants are not needed in an */
|
||||
/* application that uses the LPC-10 coder. */
|
||||
|
||||
/* Revision 1.1 1996/02/07 14:43:51 jaf */
|
||||
/* Initial revision */
|
||||
|
||||
/* LPC Configuration parameters: */
|
||||
/* Frame size, Prediction order, Pitch period */
|
||||
/* Local variables that need not be saved */
|
||||
/* Parameter adjustments */
|
||||
--pc;
|
||||
--rc;
|
||||
|
||||
/* Function Body */
|
||||
*g2pass = 1.f;
|
||||
i__1 = *order;
|
||||
for (i__ = 1; i__ <= i__1; ++i__) {
|
||||
*g2pass *= 1.f - rc[i__] * rc[i__];
|
||||
}
|
||||
*g2pass = *gprime * sqrt(*g2pass);
|
||||
pc[1] = rc[1];
|
||||
i__1 = *order;
|
||||
for (i__ = 2; i__ <= i__1; ++i__) {
|
||||
i__2 = i__ - 1;
|
||||
for (j = 1; j <= i__2; ++j) {
|
||||
temp[j - 1] = pc[j] - rc[i__] * pc[i__ - j];
|
||||
}
|
||||
i__2 = i__ - 1;
|
||||
for (j = 1; j <= i__2; ++j) {
|
||||
pc[j] = temp[j - 1];
|
||||
}
|
||||
pc[i__] = rc[i__];
|
||||
}
|
||||
return 0;
|
||||
} /* irc2pc_ */
|
||||
|
Reference in New Issue
Block a user