You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Add ff_celp_circ_addf() function to be used for sparse vector circular
convolution in the upcoming AMR-NB floating point decoder. The function scales and adds a vector, that is lagged by some offset, to another vector with the same number of elements. Patch by Colin McQuillan ( m.niloc googlemail com ) Originally committed as revision 19634 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		
				
					committed by
					
						 Robert Swain
						Robert Swain
					
				
			
			
				
	
			
			
			
						parent
						
							51fdb6f08d
						
					
				
				
					commit
					d4d6ae1603
				
			| @@ -47,6 +47,16 @@ void ff_celp_convolve_circ(int16_t* fc_out, | ||||
|     } | ||||
| } | ||||
|  | ||||
| void ff_celp_circ_addf(float *out, const float *in, | ||||
|                        const float *lagged, int lag, float fac, int n) | ||||
| { | ||||
|     int k; | ||||
|     for (k = 0; k < lag; k++) | ||||
|         out[k] = in[k] + fac * lagged[n + k - lag]; | ||||
|     for (; k < n; k++) | ||||
|         out[k] = in[k] + fac * lagged[    k - lag]; | ||||
| } | ||||
|  | ||||
| int ff_celp_lp_synthesis_filter(int16_t *out, | ||||
|                                 const int16_t* filter_coeffs, | ||||
|                                 const int16_t* in, | ||||
|   | ||||
| @@ -41,6 +41,21 @@ void ff_celp_convolve_circ(int16_t* fc_out, | ||||
|                            const int16_t* filter, | ||||
|                            int len); | ||||
|  | ||||
| /** | ||||
|  * Add an array to a rotated array. | ||||
|  * | ||||
|  * out[k] = in[k] + fac * lagged[k-lag] with wrap-around | ||||
|  * | ||||
|  * @param out result vector | ||||
|  * @param in samples to be added unfiltered | ||||
|  * @param lagged samples to be rotated, multiplied and added | ||||
|  * @param lag lagged vector delay in the range [0, n] | ||||
|  * @param fac scalefactor for lagged samples | ||||
|  * @param n number of samples | ||||
|  */ | ||||
| void ff_celp_circ_addf(float *out, const float *in, | ||||
|                        const float *lagged, int lag, float fac, int n); | ||||
|  | ||||
| /** | ||||
|  * LP synthesis filter. | ||||
|  * @param out [out] pointer to output buffer | ||||
|   | ||||
		Reference in New Issue
	
	Block a user