changeset 89:77803ce2cc22

libgsmefr: q_plsf_5.c compiles
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 26 Nov 2022 17:48:11 +0000
parents 03599300d2db
children 9ad6bf2f1ee1
files libgsmefr/Makefile libgsmefr/enc_state.h libgsmefr/q_plsf_5.c
diffstat 3 files changed, 29 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/libgsmefr/Makefile	Sat Nov 26 11:21:22 2022 +0000
+++ b/libgsmefr/Makefile	Sat Nov 26 17:48:11 2022 +0000
@@ -6,7 +6,7 @@
 	g_code.o g_pitch.o int_lpc.o inter_6.o inv_sqrt.o lag_wind.o levinson.o\
 	log2.o lsp_az.o lsp_lsf.o oper_32b.o params2frame.o pitch_f6.o \
 	pitch_ol.o pow2.o pre_proc.o pred_lt6.o preemph.o pstfilt2.o q_gains.o \
-	sid_class.o sid_insert.o tls_flags.o
+	q_plsf_5.o sid_class.o sid_insert.o tls_flags.o
 HDRS=	basic_op.h cnst.h codec.h d_homing.h dec_state.h dtx.h e_homing.h \
 	enc_state.h gains_tb.h gsm_efr.h memops.h namespace.h no_count.h \
 	oper_32b.h sig_proc.h typedef.h vad.h
--- a/libgsmefr/enc_state.h	Sat Nov 26 11:21:22 2022 +0000
+++ b/libgsmefr/enc_state.h	Sat Nov 26 17:48:11 2022 +0000
@@ -32,6 +32,7 @@
 	} pre_proc;
 	/* from q_plsf_5.c */
 	Word16 past_r2_q[M];
+	Word16 lsf_p_CN[M];
 	/* from q_gains.c */
 	Word16 past_qua_en[4];
 	Word16 pred[4];
--- a/libgsmefr/q_plsf_5.c	Sat Nov 26 11:21:22 2022 +0000
+++ b/libgsmefr/q_plsf_5.c	Sat Nov 26 17:48:11 2022 +0000
@@ -25,21 +25,26 @@
  *
  *************************************************************************/
 
+#include "gsm_efr.h"
 #include "typedef.h"
+#include "namespace.h"
 #include "basic_op.h"
-#include "count.h"
+#include "no_count.h"
 #include "sig_proc.h"
+#include "codec.h"
 
 #include "cnst.h"
 #include "dtx.h"
+#include "enc_state.h"
 
 /* Locals functions */
 
-void Lsf_wt (
+static void Lsf_wt (
     Word16 *lsf,       /* input : LSF vector                    */
      Word16 *wf2       /* output: square of weighting factors   */
 );
 
+static
 Word16 Vq_subvec (     /* output: return quantization index     */
     Word16 *lsf_r1,    /* input : 1st LSF residual vector       */
     Word16 *lsf_r2,    /* input : and LSF residual vector       */
@@ -48,6 +53,8 @@
     Word16 *wf2,       /* input : 2nd LSF weighting factors     */
     Word16 dico_size   /* input : size of quantization codebook */
 );
+
+static
 Word16 Vq_subvec_s (   /* output: return quantization index     */
     Word16 *lsf_r1,    /* input : 1st LSF residual vector       */
     Word16 *lsf_r2,    /* input : and LSF residual vector       */
@@ -56,6 +63,7 @@
     Word16 *wf2,       /* input : 2nd LSF weighting factors     */
     Word16 dico_size   /* input : size of quantization codebook */
 );
+
 /* M  ->order of linear prediction filter                      */
 /* LSF_GAP  -> Minimum distance between LSF after quantization */
 /*             50 Hz = 205                                     */
@@ -67,13 +75,8 @@
 
 #include "q_plsf_5.tab"         /* Codebooks of LSF prediction residual */
 
- /* Past quantized prediction error */
-
-Word16 past_r2_q[M];
-
-extern Word16 lsf_old_tx[DTX_HANGOVER][M];
-
 void Q_plsf_5 (
+    struct EFR_encoder_state *st,
     Word16 *lsp1,      /* input : 1st LSP vector                     */
     Word16 *lsp2,      /* input : 2nd LSP vector                     */
     Word16 *lsp1_q,    /* output: quantized 1st LSP vector           */
@@ -86,7 +89,6 @@
     Word16 lsf1[M], lsf2[M], wf1[M], wf2[M], lsf_p[M], lsf_r1[M], lsf_r2[M];
     Word16 lsf1_q[M], lsf2_q[M];
     Word16 lsf_aver[M];
-    static Word16 lsf_p_CN[M];
 
     /* convert LSFs to normalize frequency domain 0..16384  */
 
@@ -95,29 +97,25 @@
 
     /* Update LSF CN quantizer "memory" */
 
-    logic16 (); logic16 (); test (); test (); 
     if ((txdtx_ctrl & TX_SP_FLAG) == 0
         && (txdtx_ctrl & TX_PREV_HANGOVER_ACTIVE) != 0)
     {
-        update_lsf_p_CN (lsf_old_tx, lsf_p_CN);
+        update_lsf_p_CN (st->lsf_old_tx, st->lsf_p_CN);
     }
-    logic16 (); test (); 
     if ((txdtx_ctrl & TX_SID_UPDATE) != 0)
     {
         /* New SID frame is to be sent:
         Compute average of the current LSFs and the LSFs in the history */
 
-        aver_lsf_history (lsf_old_tx, lsf1, lsf2, lsf_aver);
+        aver_lsf_history (st->lsf_old_tx, lsf1, lsf2, lsf_aver);
     }
     /* Update LSF history with unquantized LSFs when no speech activity
     is present */
 
-    logic16 (); test (); 
     if ((txdtx_ctrl & TX_SP_FLAG) == 0)
     {
-        update_lsf_history (lsf1, lsf2, lsf_old_tx);
+        update_lsf_history (lsf1, lsf2, st->lsf_old_tx);
     }
-    logic16 (); test (); 
     if ((txdtx_ctrl & TX_SID_UPDATE) != 0)
     {
         /* Compute LSF weighting factors for lsf2, using averaged LSFs */
@@ -142,23 +140,21 @@
 
     /* Compute predicted LSF and prediction error */
 
-    logic16 (); test (); 
     if ((txdtx_ctrl & TX_SP_FLAG) != 0)
     {
         for (i = 0; i < M; i++)
         {
-            lsf_p[i] = add (mean_lsf[i], mult (past_r2_q[i], PRED_FAC));
-                                                        move16 (); 
-            lsf_r1[i] = sub (lsf1[i], lsf_p[i]);        move16 (); 
-            lsf_r2[i] = sub (lsf2[i], lsf_p[i]);        move16 (); 
+            lsf_p[i] = add (mean_lsf[i], mult (st->past_r2_q[i], PRED_FAC));
+            lsf_r1[i] = sub (lsf1[i], lsf_p[i]);
+            lsf_r2[i] = sub (lsf2[i], lsf_p[i]);
         }
     }
     else
     {
         for (i = 0; i < M; i++)
         {
-            lsf_r1[i] = sub (lsf1[i], lsf_p_CN[i]);     move16 (); 
-            lsf_r2[i] = sub (lsf2[i], lsf_p_CN[i]);     move16 (); 
+            lsf_r1[i] = sub (lsf1[i], st->lsf_p_CN[i]);
+            lsf_r2[i] = sub (lsf2[i], st->lsf_p_CN[i]);
         }
     }
 
@@ -188,14 +184,13 @@
     /* In case of no speech activity, skip computing the quantized LSFs,
        and set past_r2_q to zero (initial value) */
 
-    logic16 (); test (); 
     if ((txdtx_ctrl & TX_SP_FLAG) != 0)
     {
         for (i = 0; i < M; i++)
         {
-            lsf1_q[i] = add (lsf_r1[i], lsf_p[i]);      move16 (); 
-            lsf2_q[i] = add (lsf_r2[i], lsf_p[i]);      move16 (); 
-            past_r2_q[i] = lsf_r2[i];                   move16 (); 
+            lsf1_q[i] = add (lsf_r1[i], lsf_p[i]);
+            lsf2_q[i] = add (lsf_r2[i], lsf_p[i]);
+            st->past_r2_q[i] = lsf_r2[i];
         }
 
         /* verification that LSFs has minimum distance of LSF_GAP */
@@ -206,10 +201,9 @@
         /* Update LSF history with quantized LSFs
         when hangover period is active */
 
-        logic16 (); test (); 
         if ((txdtx_ctrl & TX_HANGOVER_ACTIVE) != 0)
         {
-            update_lsf_history (lsf1_q, lsf2_q, lsf_old_tx);
+            update_lsf_history (lsf1_q, lsf2_q, st->lsf_old_tx);
         }
         /*  convert LSFs to the cosine domain */
 
@@ -220,7 +214,7 @@
     {
         for (i = 0; i < M; i++)
         {
-            past_r2_q[i] = 0;                           move16 (); 
+            st->past_r2_q[i] = 0;
         }
     }
 
@@ -229,6 +223,7 @@
 
 /* Quantization of a 4 dimensional subvector */
 
+static
 Word16 Vq_subvec (      /* output: return quantization index     */
     Word16 *lsf_r1,     /* input : 1st LSF residual vector       */
     Word16 *lsf_r2,     /* input : and LSF residual vector       */
@@ -285,6 +280,7 @@
 
 /* Quantization of a 4 dimensional subvector with a signed codebook */
 
+static
 Word16 Vq_subvec_s (    /* output: return quantization index     */
     Word16 *lsf_r1,     /* input : 1st LSF residual vector       */
     Word16 *lsf_r2,     /* input : and LSF residual vector       */
@@ -414,6 +410,7 @@
  *                                                                          *
  *--------------------------------------------------------------------------*/
 
+static
 void Lsf_wt (
     Word16 *lsf,         /* input : LSF vector                  */
     Word16 *wf)          /* output: square of weighting factors */