| 
																	
																	
																		
																	
																	
																 | 
																@@ -97,7 +97,13 @@ static void colmult(float *tgt, const float *m1, const float *m2, int n) | 
															
														
														
													
														
															
																 | 
																 | 
																        *(tgt++) = (*(m1++)) * (*(m2++)); | 
																 | 
																 | 
																        *(tgt++) = (*(m1++)) * (*(m2++)); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static int pred(const float *in, float *tgt, int n) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																/** | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 * Converts autocorrelation coefficients to LPC coefficients using the | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 * Levinson-Durbin algorithm. See blocks 37 and 50 of the G.728 specification. | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 * | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 * @return 1 if success, 0 if fail | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static int eval_lpc_coeffs(const float *in, float *tgt, int n) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    int x, y; | 
																 | 
																 | 
																    int x, y; | 
															
														
														
													
														
															
																 | 
																 | 
																    double f0, f1, f2; | 
																 | 
																 | 
																    double f0, f1, f2; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -189,7 +195,7 @@ static void update(Real288_internal *glob) | 
															
														
														
													
														
															
																 | 
																 | 
																    do_hybrid_window(36, 40, 35, buffer1, temp1, glob->st1a, glob->st1b, | 
																 | 
																 | 
																    do_hybrid_window(36, 40, 35, buffer1, temp1, glob->st1a, glob->st1b, | 
															
														
														
													
														
															
																 | 
																 | 
																                     syn_window); | 
																 | 
																 | 
																                     syn_window); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    if (pred(temp1, glob->st1, 36)) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if (eval_lpc_coeffs(temp1, glob->st1, 36)) | 
															
														
														
													
														
															
																 | 
																 | 
																        colmult(glob->pr1, glob->st1, table1a, 36); | 
																 | 
																 | 
																        colmult(glob->pr1, glob->st1, table1a, 36); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    memcpy(buffer2    , glob->history + 4, 4*sizeof(*buffer2)); | 
																 | 
																 | 
																    memcpy(buffer2    , glob->history + 4, 4*sizeof(*buffer2)); | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -198,7 +204,7 @@ static void update(Real288_internal *glob) | 
															
														
														
													
														
															
																 | 
																 | 
																    do_hybrid_window(10, 8, 20, buffer2, temp2, glob->st2a, glob->st2b, | 
																 | 
																 | 
																    do_hybrid_window(10, 8, 20, buffer2, temp2, glob->st2a, glob->st2b, | 
															
														
														
													
														
															
																 | 
																 | 
																                     gain_window); | 
																 | 
																 | 
																                     gain_window); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    if (pred(temp2, glob->st2, 10)) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if (eval_lpc_coeffs(temp2, glob->st2, 10)) | 
															
														
														
													
														
															
																 | 
																 | 
																        colmult(glob->pr2, glob->st2, table2a, 10); | 
																 | 
																 | 
																        colmult(glob->pr2, glob->st2, table2a, 10); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |