protected against overflow error in 3200 mode
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 6 Mar 2015 07:17:07 +0000 (07:17 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 6 Mar 2015 07:17:07 +0000 (07:17 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@2057 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/src/codec2.c
codec2-dev/src/postfilter.c
codec2-dev/src/quantise.c

index 08604a55553ee054fd69e7badfdf1899fff5e8f7..2f63d88f459dbfb2024d8808b5b9b790f33222cf 100644 (file)
@@ -418,11 +418,12 @@ void codec2_decode_3200(struct CODEC2 *c2, short speech[], const unsigned char *
 
     interp_Wo(&model[0], &c2->prev_model_dec, &model[1]);
     e[0] = interp_energy(c2->prev_e_dec, e[1]);
+
     /* LSPs are sampled every 20ms so we interpolate the frame in
        between, then recover spectral amplitudes */
 
     interpolate_lsp_ver2(&lsps[0][0], c2->prev_lsps_dec, &lsps[1][0], 0.5);
+
     for(i=0; i<2; i++) {
        lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
        aks_to_M2(c2->fft_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0, 
index f347658cf7269f6d27d1de2474392215f7551af4..fc88c0eaa50d5521abcd4c42513dd1811fc7153b 100644 (file)
@@ -111,7 +111,7 @@ void postfilter(
   e = 1E-12;
   for(m=1; m<=model->L; m++)
       e += model->A[m]*model->A[m];
-
+  
   assert(e > 0.0);
   e = 10.0*log10f(e/model->L);
 
index 03b9812ed19b8e548d9d039bf35a5884004015a7..105380410d3207fa6b5486f354ce5a50142ade2e 100644 (file)
@@ -941,8 +941,9 @@ void aks_to_M2(
 
   /* Determine power spectrum P(w) = E/(A(exp(jw))^2 ------------------------*/
 
-  for(i=0; i<FFT_ENC/2; i++)
-    Pw[i].real = 1.0/(Aw[i].real*Aw[i].real + Aw[i].imag*Aw[i].imag);
+  for(i=0; i<FFT_ENC/2; i++) {
+    Pw[i].real = 1.0/(Aw[i].real*Aw[i].real + Aw[i].imag*Aw[i].imag + 1E-6);
+  }
 
   PROFILE_SAMPLE_AND_LOG(tpw, tfft, "      Pw");