mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-04 05:15:22 +00:00 
			
		
		
		
	
		
			
	
	
		
			65 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   /******************************************************************
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       iLBC Speech Coder ANSI-C Source Code
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       hpInput.c
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       Copyright (C) The Internet Society (2004).
							 | 
						||
| 
								 | 
							
								       All Rights Reserved.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   ******************************************************************/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   #include "constants.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   /*----------------------------------------------------------------*
							 | 
						||
| 
								 | 
							
								    *  Input high-pass filter
							 | 
						||
| 
								 | 
							
								    *---------------------------------------------------------------*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   void hpInput(
							 | 
						||
| 
								 | 
							
								       float *In,  /* (i) vector to filter */
							 | 
						||
| 
								 | 
							
								       int len,    /* (i) length of vector to filter */
							 | 
						||
| 
								 | 
							
								       float *Out, /* (o) the resulting filtered vector */
							 | 
						||
| 
								 | 
							
								       float *mem  /* (i/o) the filter state */
							 | 
						||
| 
								 | 
							
								   ){
							 | 
						||
| 
								 | 
							
								       int i;
							 | 
						||
| 
								 | 
							
								       float *pi, *po;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       /* all-zero section*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       pi = &In[0];
							 | 
						||
| 
								 | 
							
								       po = &Out[0];
							 | 
						||
| 
								 | 
							
								       for (i=0; i<len; i++) {
							 | 
						||
| 
								 | 
							
								           *po = hpi_zero_coefsTbl[0] * (*pi);
							 | 
						||
| 
								 | 
							
								           *po += hpi_zero_coefsTbl[1] * mem[0];
							 | 
						||
| 
								 | 
							
								           *po += hpi_zero_coefsTbl[2] * mem[1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								           mem[1] = mem[0];
							 | 
						||
| 
								 | 
							
								           mem[0] = *pi;
							 | 
						||
| 
								 | 
							
								           po++;
							 | 
						||
| 
								 | 
							
								           pi++;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       /* all-pole section*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       po = &Out[0];
							 | 
						||
| 
								 | 
							
								       for (i=0; i<len; i++) {
							 | 
						||
| 
								 | 
							
								           *po -= hpi_pole_coefsTbl[1] * mem[2];
							 | 
						||
| 
								 | 
							
								           *po -= hpi_pole_coefsTbl[2] * mem[3];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								           mem[3] = mem[2];
							 | 
						||
| 
								 | 
							
								           mem[2] = *po;
							 | 
						||
| 
								 | 
							
								           po++;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								       }
							 | 
						||
| 
								 | 
							
								   }
							 |