changeset 332:2303ba1490dd

libtwamr: integrate d2_9pf.c
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 18 Apr 2024 22:18:45 +0000
parents c75327562b5e
children f4a5545ea8b2
files libtwamr/Makefile libtwamr/d2_9pf.c libtwamr/d2_9pf.h libtwamr/namespace.h
diffstat 4 files changed, 163 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libtwamr/Makefile	Thu Apr 18 22:14:40 2024 +0000
+++ b/libtwamr/Makefile	Thu Apr 18 22:18:45 2024 +0000
@@ -3,8 +3,8 @@
 OBJS=	a_refl.o agc.o autocorr.o az_lsp.o b_cn_cod.o basicop2.o bgnscd.o \
 	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 gmed_n.o graytab.o inv_sqrt.o log2.o oper_32b.o \
-	prmno.o s10_8pf.o set_sign.o sqrt_l.o tls_flags.o window.o
+	d1035pf.o d2_11pf.o d2_9pf.o gmed_n.o graytab.o inv_sqrt.o log2.o \
+	oper_32b.o prmno.o s10_8pf.o set_sign.o sqrt_l.o tls_flags.o window.o
 LIB=	libtwamr.a
 
 INSTALL_PREFIX=	/usr/local
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/d2_9pf.c	Thu Apr 18 22:18:45 2024 +0000
@@ -0,0 +1,103 @@
+/*
+*****************************************************************************
+*
+*      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             : d2_9pf.c
+*      Purpose          : Algebraic codebook decoder
+*
+*****************************************************************************
+*/
+
+/*
+*****************************************************************************
+*                         MODULE INCLUDE FILE AND VERSION ID
+*****************************************************************************
+*/
+#include "namespace.h"
+#include "d2_9pf.h"
+ 
+/*
+*****************************************************************************
+*                         INCLUDE FILES
+*****************************************************************************
+*/
+#include "typedef.h"
+#include "basic_op.h"
+#include "no_count.h"
+#include "cnst.h"
+
+/*
+********************************************************************************
+*                         LOCAL VARIABLES AND TABLES
+********************************************************************************
+*/
+#define NB_PULSE 2           /* number of pulses */
+ 
+#include "c2_9pf.tab"
+
+/*
+********************************************************************************
+*                         PUBLIC PROGRAM CODE
+********************************************************************************
+*/
+/*************************************************************************
+ *
+ *  FUNCTION:  decode_2i40_9bits (decod_ACELP())
+ *
+ *  PURPOSE:   Algebraic codebook decoder. For details about the encoding se
+ *             c2_9pf.c
+ *
+ *************************************************************************/
+
+void decode_2i40_9bits(
+    Word16 subNr,  /* i : subframe number                          */
+    Word16 sign,   /* i : signs of 2 pulses.                       */
+    Word16 index,  /* i : Positions of the 2 pulses.               */
+    Word16 cod[]   /* o : algebraic (fixed) codebook excitation    */
+)
+{
+    Word16 i, j, k;
+    Word16 pos[NB_PULSE];
+
+    /* Decode the positions */
+    /* table bit  is the MSB */ 
+    j = shr((index & 64),6);                                 logic16 ();
+
+    i = index & 7;                                       logic16 ();
+
+    i = add(i, shl(i, 2));       /* pos0 =i*5+startPos[j*8+subNr*2] */
+    k = startPos[add(shl(j, 3), shl(subNr, 1))];
+    pos[0] = add(i, k);                                  move16 ();    
+
+    index = shr(index, 3);
+    i = index & 7;                                       logic16 ();
+
+    i = add(i, shl(i, 2));       /* pos1 =i*5+startPos[j*8+subNr*2+1] */
+    k = startPos[add(add(shl(j, 3), shl(subNr, 1)), 1)];
+    pos[1] = add(i, k);                                  move16 ();
+
+    /* decode the signs  and build the codeword */
+
+    for (i = 0; i < L_SUBFR; i++) {
+        cod[i] = 0;                                      move16 ();
+    }
+
+    for (j = 0; j < NB_PULSE; j++) {
+        i = sign & 1;                                    logic16 ();
+        sign = shr(sign, 1);
+
+        test ();
+        if (i != 0) {
+            cod[pos[j]] = 8191;                          move16 (); /* +1.0 */
+        } else {
+            cod[pos[j]] = -8192;                         move16 (); /* -1.0 */
+        }
+    }
+
+    return;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/d2_9pf.h	Thu Apr 18 22:18:45 2024 +0000
@@ -0,0 +1,57 @@
+/*
+*****************************************************************************
+*
+*      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             : d2_9pf.h
+*      Purpose          : Algebraic codebook decoder
+*
+*****************************************************************************
+*/
+#ifndef d2_9pf_h
+#define d2_9pf_h "$Id $"
+
+/*
+*****************************************************************************
+*                         INCLUDE FILES
+*****************************************************************************
+*/
+#include "typedef.h"
+
+/*
+*****************************************************************************
+*                         LOCAL VARIABLES AND TABLES
+*****************************************************************************
+*/
+ 
+/*
+*****************************************************************************
+*                         DEFINITION OF DATA TYPES
+*****************************************************************************
+*/
+
+/*
+*****************************************************************************
+*                         DECLARATION OF PROTOTYPES
+*****************************************************************************
+*/
+/*************************************************************************
+ *
+ *  FUNCTION:  decode_2i40_9bits (decod_ACELP())
+ *
+ *  PURPOSE:   Algebraic codebook decoder for 2 pulses coded with 9 bits
+ *
+ *************************************************************************/
+
+void decode_2i40_9bits(
+    Word16 subNr,  /* i : subframe number                          */
+    Word16 sign,   /* i : signs of 2 pulses.                       */
+    Word16 index,  /* i : Positions of the 2 pulses.               */
+    Word16 cod[]   /* o : algebraic (fixed) codebook excitation    */
+);
+
+#endif
--- a/libtwamr/namespace.h	Thu Apr 18 22:14:40 2024 +0000
+++ b/libtwamr/namespace.h	Thu Apr 18 22:18:45 2024 +0000
@@ -108,6 +108,7 @@
 #define	code_10i40_35bits	AMR__code_10i40_35bits
 #define	search_10and8i40	AMR__search_10and8i40
 
+#define	decode_2i40_9bits	AMR__decode_2i40_9bits
 #define	decode_2i40_11bits	AMR__decode_2i40_11bits
 #define	dec_10i40_35bits	AMR__dec_10i40_35bits