changeset 343:3f574255c3aa

libtwamr: integrate d_plsf.c
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 19 Apr 2024 01:08:39 +0000
parents e42075184628
children 05a46720af0f
files libtwamr/Makefile libtwamr/d_plsf.c libtwamr/d_plsf.h libtwamr/namespace.h
diffstat 4 files changed, 199 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libtwamr/Makefile	Fri Apr 19 00:57:15 2024 +0000
+++ b/libtwamr/Makefile	Fri Apr 19 01:08:39 2024 +0000
@@ -4,8 +4,8 @@
 	bitno.o bits2prm.o c1035pf.o c2_11pf.o c2_9pf.o c3_14pf.o c4_17pf.o \
 	c8_31pf.o c_g_aver.o calc_cor.o calc_en.o cbsearch.o convolve.o cor_h.o\
 	d1035pf.o d2_11pf.o d2_9pf.o d3_14pf.o d4_17pf.o d8_31pf.o d_gain_c.o \
-	d_gain_p.o gains_tab.o gc_pred.o gmed_n.o graytab.o inv_sqrt.o log2.o \
-	oper_32b.o pow2.o prmno.o q_plsf3_tab.o q_plsf5_tab.o s10_8pf.o \
+	d_gain_p.o d_plsf.o gains_tab.o gc_pred.o gmed_n.o graytab.o inv_sqrt.o\
+	log2.o oper_32b.o pow2.o prmno.o q_plsf3_tab.o q_plsf5_tab.o s10_8pf.o \
 	set_sign.o sqrt_l.o tls_flags.o window.o
 LIB=	libtwamr.a
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/d_plsf.c	Fri Apr 19 01:08:39 2024 +0000
@@ -0,0 +1,70 @@
+/*
+*****************************************************************************
+*
+*      GSM AMR-NB speech codec   R98   Version 7.6.0   December 12, 2001
+*                                R99   Version 3.3.0                
+*                                REL-4 Version 4.1.0                
+*
+*****************************************************************************
+*
+*      File             : d_plsf.c
+*      Purpose          : common part (init, exit, reset) of LSF decoder
+*                         module (rest in d_plsf_3.c and d_plsf_5.c)
+*
+*****************************************************************************
+*/
+ 
+ 
+/*
+*****************************************************************************
+*                         MODULE INCLUDE FILE AND VERSION ID
+*****************************************************************************
+*/
+#include "namespace.h"
+#include "d_plsf.h"
+ 
+/*
+*****************************************************************************
+*                         INCLUDE FILES
+*****************************************************************************
+*/
+#include "typedef.h"
+#include "basic_op.h"
+#include "no_count.h"
+#include "cnst.h"
+#include "memops.h"
+#include "q_plsf5_tab.h"
+
+/*
+*--------------------------------------------------*
+* Constants (defined in cnst.h)                    *
+*--------------------------------------------------*
+*  M                    : LPC order
+*--------------------------------------------------*
+*/
+ 
+/*
+*****************************************************************************
+*                         PUBLIC PROGRAM CODE
+*****************************************************************************
+*/
+ 
+/*
+**************************************************************************
+*
+*  Function    : D_plsf_reset
+*  Purpose     : Resets state memory
+*
+**************************************************************************
+*/
+void D_plsf_reset (D_plsfState *state)
+{
+  Word16 i;
+  
+  for (i = 0; i < M; i++){
+      state->past_r_q[i] = 0;             /* Past quantized prediction error */
+  }
+  
+  /* Past dequantized lsfs */
+  Copy(mean_lsf, &state->past_lsf_q[0], M);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/d_plsf.h	Fri Apr 19 01:08:39 2024 +0000
@@ -0,0 +1,123 @@
+/*
+********************************************************************************
+*
+*      GSM AMR-NB speech codec   R98   Version 7.6.0   December 12, 2001
+*                                R99   Version 3.3.0                
+*                                REL-4 Version 4.1.0                
+*
+********************************************************************************
+*
+*      File             : d_plsf.h
+*      Purpose          : common part (init, exit, reset) of LSF decoder
+*                         module (rest in d_plsf_3.c and d_plsf_5.c)
+*
+********************************************************************************
+*/
+#ifndef d_plsf_h
+#define d_plsf_h "$Id $"
+ 
+/*
+********************************************************************************
+*                         INCLUDE FILES
+********************************************************************************
+*/
+#include "tw_amr.h"
+#include "typedef.h"
+#include "cnst.h"
+
+/*
+********************************************************************************
+*                         LOCAL VARIABLES AND TABLES
+********************************************************************************
+*/
+/*
+*--------------------------------------------------*
+* Constants (defined in cnst.h)                    *
+*--------------------------------------------------*
+* M            : LPC Order                         *
+*--------------------------------------------------*
+*/
+ 
+/*
+********************************************************************************
+*                         DEFINITION OF DATA TYPES
+********************************************************************************
+*/
+typedef struct {
+  Word16 past_r_q[M];   /* Past quantized prediction error, Q15 */
+  Word16 past_lsf_q[M]; /* Past dequantized lsfs,           Q15 */
+} D_plsfState;
+ 
+/*
+********************************************************************************
+*                         DECLARATION OF PROTOTYPES
+********************************************************************************
+*/
+ 
+/*
+**************************************************************************
+*
+*  Function    : D_plsf_reset
+*  Purpose     : Resets state memory
+*  Returns     : 0 on success
+*
+**************************************************************************
+*/
+void D_plsf_reset (D_plsfState *st);
+
+/*
+**************************************************************************
+*
+*  Function    : D_plsf_5
+*  Purpose     : Decodes the 2 sets of LSP parameters in a frame 
+*                using the received quantization indices.
+*  Description : The two sets of LSFs are quantized using split by 
+*                5 matrix quantization (split-MQ) with 1st order MA
+*                prediction.
+*                See "q_plsf_5.c" for more details about the
+*                quantization procedure
+*  Returns     : 0
+*
+**************************************************************************
+*/
+int D_plsf_5 (
+    D_plsfState *st,  /* i/o: State variables                            */
+    Word16 bfi,       /* i  : bad frame indicator (set to 1 if a bad    
+                              frame is received)                         */
+    Word16 *indice,   /* i  : quantization indices of 5 submatrices, Q0  */
+    Word16 *lsp1_q,   /* o  : quantized 1st LSP vector (M)           Q15 */
+    Word16 *lsp2_q    /* o  : quantized 2nd LSP vector (M)           Q15 */
+);
+
+/*************************************************************************
+ *
+ *  FUNCTION:   D_plsf_3()
+ *
+ *  PURPOSE: Decodes the LSP parameters using the received quantization
+ *           indices.1st order MA prediction and split by 3 matrix
+ *           quantization (split-MQ)
+ *
+ *************************************************************************/
+
+void D_plsf_3(
+    D_plsfState *st,  /* i/o: State struct                               */
+    enum Mode mode,   /* i  : coder mode                                 */
+    Word16 bfi,       /* i  : bad frame indicator (set to 1 if a         */
+                      /*      bad frame is received)                     */
+    Word16 * indice,  /* i  : quantization indices of 3 submatrices, Q0  */
+    Word16 * lsp1_q   /* o  : quantized 1st LSP vector,              Q15 */
+);
+
+/*************************************************************************
+ *
+ *  FUNCTION:   Init_D_plsf_3()
+ *
+ *  PURPOSE: Set the past_r_q[M] vector to one of the eight
+ *           past_rq_init vectors.
+ *
+ *************************************************************************/
+void Init_D_plsf_3(D_plsfState *st,  /* i/o: State struct                */
+		   Word16 index      /* i  : past_rq_init[] index [0, 7] */
+);
+
+#endif
--- a/libtwamr/namespace.h	Fri Apr 19 00:57:15 2024 +0000
+++ b/libtwamr/namespace.h	Fri Apr 19 01:08:39 2024 +0000
@@ -65,6 +65,10 @@
 #define	Bgn_scd		AMR__Bgn_scd
 #define	Bgn_scd_reset	AMR__Bgn_scd_reset
 #define	Convolve 	AMR__Convolve
+#define	D_plsf_reset	AMR__D_plsf_reset
+#define	D_plsf_5	AMR__D_plsf_5
+#define	D_plsf_3	AMR__D_plsf_3
+#define	Init_D_plsf_3	AMR__Init_D_plsf_3
 
 #define	agc		AMR__agc
 #define	agc2		AMR__agc2