|  |  | @@ -25,8 +25,7 @@ | 
		
	
		
			
			|  |  |  | #include "avcodec.h" | 
		
	
		
			
			|  |  |  | #include "acelp_filters.h" | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | const int16_t ff_acelp_interp_filter[61] = | 
		
	
		
			
			|  |  |  | { /* (0.15) */ | 
		
	
		
			
			|  |  |  | const int16_t ff_acelp_interp_filter[61] = { /* (0.15) */ | 
		
	
		
			
			|  |  |  | 29443, 28346, 25207, 20449, 14701,  8693, | 
		
	
		
			
			|  |  |  | 3143, -1352, -4402, -5865, -5850, -4673, | 
		
	
		
			
			|  |  |  | -2783,  -672,  1211,  2536,  3130,  2991, | 
		
	
	
		
			
				|  |  | @@ -40,26 +39,19 @@ const int16_t ff_acelp_interp_filter[61] = | 
		
	
		
			
			|  |  |  | 0, | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | void ff_acelp_interpolate( | 
		
	
		
			
			|  |  |  | int16_t* out, | 
		
	
		
			
			|  |  |  | const int16_t* in, | 
		
	
		
			
			|  |  |  | const int16_t* filter_coeffs, | 
		
	
		
			
			|  |  |  | int precision, | 
		
	
		
			
			|  |  |  | int frac_pos, | 
		
	
		
			
			|  |  |  | int filter_length, | 
		
	
		
			
			|  |  |  | int length) | 
		
	
		
			
			|  |  |  | void ff_acelp_interpolate(int16_t* out, const int16_t* in, | 
		
	
		
			
			|  |  |  | const int16_t* filter_coeffs, int precision, | 
		
	
		
			
			|  |  |  | int frac_pos, int filter_length, int length) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | int n, i; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | assert(pitch_delay_frac >= 0 && pitch_delay_frac < precision); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | for(n=0; n<length; n++) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | for (n = 0; n < length; n++) { | 
		
	
		
			
			|  |  |  | int idx = 0; | 
		
	
		
			
			|  |  |  | int v = 0x4000; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | for(i=0; i<filter_length;) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | for (i = 0; i < filter_length;) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | /* The reference G.729 and AMR fixed point code performs clipping after | 
		
	
		
			
			|  |  |  | each of the two following accumulations. | 
		
	
	
		
			
				|  |  | @@ -75,26 +67,22 @@ void ff_acelp_interpolate( | 
		
	
		
			
			|  |  |  | i++; | 
		
	
		
			
			|  |  |  | v += in[n - i] * filter_coeffs[idx - frac_pos]; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | if(av_clip_int16(v>>15) != (v>>15)) | 
		
	
		
			
			|  |  |  | if (av_clip_int16(v >> 15) != (v >> 15)) | 
		
	
		
			
			|  |  |  | av_log(NULL, AV_LOG_WARNING, "overflow that would need cliping in ff_acelp_interpolate()\n"); | 
		
	
		
			
			|  |  |  | out[n] = v >> 15; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | void ff_acelp_high_pass_filter( | 
		
	
		
			
			|  |  |  | int16_t* out, | 
		
	
		
			
			|  |  |  | int hpf_f[2], | 
		
	
		
			
			|  |  |  | const int16_t* in, | 
		
	
		
			
			|  |  |  | int length) | 
		
	
		
			
			|  |  |  | void ff_acelp_high_pass_filter(int16_t* out, int hpf_f[2], | 
		
	
		
			
			|  |  |  | const int16_t* in, int length) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | int i; | 
		
	
		
			
			|  |  |  | int tmp; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | for(i=0; i<length; i++) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | tmp =  (hpf_f[0]* 15836LL)>>13; | 
		
	
		
			
			|  |  |  | tmp += (hpf_f[1]* -7667LL)>>13; | 
		
	
		
			
			|  |  |  | for (i = 0; i < length; i++) { | 
		
	
		
			
			|  |  |  | tmp  = (hpf_f[0]* 15836LL) >> 13; | 
		
	
		
			
			|  |  |  | tmp += (hpf_f[1]* -7667LL) >> 13; | 
		
	
		
			
			|  |  |  | tmp += 7699 * (in[i] - 2*in[i-1] + in[i-2]); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | /* With "+0x800" rounding, clipping is needed | 
		
	
	
		
			
				|  |  | 
 |