mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 20:38:59 +00:00 
			
		
		
		
	https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r45079 | file | 2006-10-13 14:42:49 -0400 (Fri, 13 Oct 2006) | 2 lines And file said... let the compiler warnings STOP! ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45080 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			145 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 | 
						|
$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:30:58  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 preemp_(real *inbuf, real *pebuf, integer *nsamp, real *coef, real *z__);
 | 
						|
#endif
 | 
						|
 | 
						|
/* ******************************************************************* */
 | 
						|
 | 
						|
/* 	PREEMP Version 55 */
 | 
						|
 | 
						|
/* $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:30:58  jaf
 | 
						|
 * Initial revision
 | 
						|
 * */
 | 
						|
/* Revision 1.3  1996/03/14  23:16:29  jaf */
 | 
						|
/* Just added a few comments about which array indices of the arguments */
 | 
						|
/* are used, and mentioning that this subroutine has no local state. */
 | 
						|
 | 
						|
/* Revision 1.2  1996/03/11  23:23:34  jaf */
 | 
						|
/* Added a bunch of comments to an otherwise simple subroutine. */
 | 
						|
 | 
						|
/* Revision 1.1  1996/02/07 14:48:48  jaf */
 | 
						|
/* Initial revision */
 | 
						|
 | 
						|
 | 
						|
/* ******************************************************************* */
 | 
						|
 | 
						|
/*   Preemphasize speech with a single-zero filter. */
 | 
						|
/*  (When coef = .9375, preemphasis is as in LPC43.) */
 | 
						|
 | 
						|
/* Inputs: */
 | 
						|
/*  NSAMP  - Number of samples to filter */
 | 
						|
/*  INBUF  - Input speech buffer */
 | 
						|
/*           Indices 1 through NSAMP are read. */
 | 
						|
/*  COEF   - Preemphasis coefficient */
 | 
						|
/* Input/Output: */
 | 
						|
/*  Z      - Filter state */
 | 
						|
/* Output: */
 | 
						|
/*  PEBUF  - Preemphasized speech buffer (can be equal to INBUF) */
 | 
						|
/*           Indices 1 through NSAMP are modified. */
 | 
						|
 | 
						|
/* This subroutine has no local state. */
 | 
						|
 | 
						|
/* Subroutine */ int preemp_(real *inbuf, real *pebuf, integer *nsamp, real *
 | 
						|
	coef, real *z__)
 | 
						|
{
 | 
						|
    /* System generated locals */
 | 
						|
    integer i__1;
 | 
						|
 | 
						|
    /* Local variables */
 | 
						|
    real temp;
 | 
						|
    integer i__;
 | 
						|
 | 
						|
/*       Arguments */
 | 
						|
/*       Local variables */
 | 
						|
 | 
						|
/*       None of these need to have their values saved from one */
 | 
						|
/*       invocation to the next. */
 | 
						|
 | 
						|
/*       Logically, this subroutine computes the output sequence */
 | 
						|
/*       pebuf(1:nsamp) defined by: */
 | 
						|
 | 
						|
/*       pebuf(i) = inbuf(i) - coef * inbuf(i-1) */
 | 
						|
 | 
						|
/*       where inbuf(0) is defined by the value of z given as input to */
 | 
						|
/*       this subroutine. */
 | 
						|
 | 
						|
/*       What is this filter's frequency response and phase response? */
 | 
						|
 | 
						|
/*       Why is this filter applied to the speech? */
 | 
						|
 | 
						|
/*       Could it be more efficient to apply multiple filters */
 | 
						|
/*       simultaneously, by combining them into one equivalent filter? */
 | 
						|
 | 
						|
/*       Are there ever cases when "factoring" one high-order filter into 
 | 
						|
*/
 | 
						|
/*       multiple smaller-order filter actually reduces the number of */
 | 
						|
/*       arithmetic operations needed to perform them? */
 | 
						|
/*       When I first read this subroutine, I didn't understand why the */
 | 
						|
/*       variable temp was used.  It seemed that the statements in the do 
 | 
						|
*/
 | 
						|
/*       loop could be replaced with the following: */
 | 
						|
 | 
						|
/*           pebuf(i) = inbuf(i) - coef * z */
 | 
						|
/*           z = inbuf(i) */
 | 
						|
 | 
						|
/*       The reason for temp is so that even if pebuf and inbuf are the */
 | 
						|
/*       same arrays in memory (i.e., they are aliased), then this */
 | 
						|
/*       subroutine will still work correctly.  I didn't realize this */
 | 
						|
/*       until seeing the comment after PEBUF above that says "(can be */
 | 
						|
/*       equal to INBUF)". */
 | 
						|
    /* Parameter adjustments */
 | 
						|
    --pebuf;
 | 
						|
    --inbuf;
 | 
						|
 | 
						|
    /* Function Body */
 | 
						|
    i__1 = *nsamp;
 | 
						|
    for (i__ = 1; i__ <= i__1; ++i__) {
 | 
						|
	temp = inbuf[i__] - *coef * *z__;
 | 
						|
	*z__ = inbuf[i__];
 | 
						|
	pebuf[i__] = temp;
 | 
						|
/* L10: */
 | 
						|
    }
 | 
						|
    return 0;
 | 
						|
} /* preemp_ */
 | 
						|
 |