# HG changeset patch # User Mychaela Falconia # Date 1712338309 0 # Node ID 07f936338de196713b9dab44ec3fb3928a0a8d76 # Parent f931e704adc5f462e7844d3118ef88517b543d04 libtwamr: integrated up to b_cn_cod.c diff -r f931e704adc5 -r 07f936338de1 libtwamr/Makefile --- a/libtwamr/Makefile Fri Apr 05 07:41:31 2024 +0000 +++ b/libtwamr/Makefile Fri Apr 05 17:31:49 2024 +0000 @@ -1,7 +1,7 @@ CC= gcc CFLAGS= -O2 -OBJS= a_refl.o agc.o autocorr.o az_lsp.o basicop2.o bitno.o bits2prm.o \ - inv_sqrt.o oper_32b.o prmno.o tls_flags.o +OBJS= a_refl.o agc.o autocorr.o az_lsp.o b_cn_cod.o basicop2.o bitno.o \ + bits2prm.o inv_sqrt.o oper_32b.o prmno.o tls_flags.o window.o LIB= libtwamr.a INSTALL_PREFIX= /usr/local diff -r f931e704adc5 -r 07f936338de1 libtwamr/a_refl.c --- a/libtwamr/a_refl.c Fri Apr 05 07:41:31 2024 +0000 +++ b/libtwamr/a_refl.c Fri Apr 05 17:31:49 2024 +0000 @@ -20,7 +20,6 @@ */ #include "namespace.h" #include "a_refl.h" -const char a_refl_id[] = "@(#)$Id $" a_refl_h; /* diff -r f931e704adc5 -r 07f936338de1 libtwamr/agc.c --- a/libtwamr/agc.c Fri Apr 05 07:41:31 2024 +0000 +++ b/libtwamr/agc.c Fri Apr 05 17:31:49 2024 +0000 @@ -19,7 +19,6 @@ */ #include "namespace.h" #include "agc.h" -const char agc_id[] = "@(#)$Id $" agc_h; /* ***************************************************************************** diff -r f931e704adc5 -r 07f936338de1 libtwamr/autocorr.c --- a/libtwamr/autocorr.c Fri Apr 05 07:41:31 2024 +0000 +++ b/libtwamr/autocorr.c Fri Apr 05 17:31:49 2024 +0000 @@ -18,7 +18,6 @@ */ #include "namespace.h" #include "autocorr.h" -const char autocorr_id[] = "@(#)$Id $" autocorr_h; /* ******************************************************************************** diff -r f931e704adc5 -r 07f936338de1 libtwamr/az_lsp.c --- a/libtwamr/az_lsp.c Fri Apr 05 07:41:31 2024 +0000 +++ b/libtwamr/az_lsp.c Fri Apr 05 17:31:49 2024 +0000 @@ -19,7 +19,6 @@ */ #include "namespace.h" #include "az_lsp.h" -const char az_lsp_id[] = "@(#)$Id $" az_lsp_h; /* ******************************************************************************** * INCLUDE FILES diff -r f931e704adc5 -r 07f936338de1 libtwamr/b_cn_cod.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libtwamr/b_cn_cod.c Fri Apr 05 17:31:49 2024 +0000 @@ -0,0 +1,159 @@ +/* +******************************************************************************** +* +* 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 : b_cn_cod.c +* Purpose : Contains function for comfort noise generation. +* +******************************************************************************** +*/ +/* +******************************************************************************** +* MODULE INCLUDE FILE AND VERSION ID +******************************************************************************** +*/ +#include "namespace.h" +#include "b_cn_cod.h" + +/* +******************************************************************************** +* INCLUDE FILES +******************************************************************************** +*/ +#include "typedef.h" +#include "basic_op.h" +#include "oper_32b.h" +#include "no_count.h" +#include "cnst.h" +#include "window.h" + +/* +******************************************************************************** +* LOCAL CONSTANTS +******************************************************************************** +*/ +#define NB_PULSE 10 /* number of random pulses in DTX operation */ + +/* +******************************************************************************** +* PUBLIC PROGRAM CODE +******************************************************************************** +*/ +/************************************************************************* + * + * FUNCTION NAME: pseudonoise + * + *************************************************************************/ +Word16 pseudonoise ( + Word32 *shift_reg, /* i/o : Old CN generator shift register state */ + Word16 no_bits /* i : Number of bits */ +) +{ + Word16 noise_bits, Sn, i; + + noise_bits = 0; move16 (); + for (i = 0; i < no_bits; i++) + { + /* State n == 31 */ + test (); logic32 (); + if ((*shift_reg & 0x00000001L) != 0) + { + Sn = 1; move16 (); + } + else + { + Sn = 0; move16 (); + } + + /* State n == 3 */ + test (); logic32 (); + if ((*shift_reg & 0x10000000L) != 0) + { + Sn = Sn ^ 1; move16 (); logic16 (); + } + else + { + Sn = Sn ^ 0; move16 (); logic16 (); + } + + noise_bits = shl (noise_bits, 1); + noise_bits = noise_bits | (extract_l (*shift_reg) & 1); + logic16 (); logic16 (); move16 (); + + *shift_reg = L_shr (*shift_reg, 1); + test (); + if (Sn & 1) + { + *shift_reg = *shift_reg | 0x40000000L; move32 (); logic32 (); + } + } + return noise_bits; +} + +/*************************************************************************** +* +* Function : build_CN_code +* +***************************************************************************/ +void build_CN_code ( + Word32 *seed, /* i/o : Old CN generator shift register state */ + Word16 cod[] /* o : Generated CN fixed codebook vector */ +) +{ + Word16 i, j, k; + + for (i = 0; i < L_SUBFR; i++) + { + cod[i] = 0; move16 (); + } + + for (k = 0; k < NB_PULSE; k++) + { + i = pseudonoise (seed, 2); /* generate pulse position */ + i = shr (extract_l (L_mult (i, 10)), 1); + i = add (i, k); + + j = pseudonoise (seed, 1); /* generate sign */ + + test (); + if (j > 0) + { + cod[i] = 4096; move16 (); + } + else + { + cod[i] = -4096; move16 (); + } + } + + return; +} + +/************************************************************************* + * + * FUNCTION NAME: build_CN_param + * + *************************************************************************/ +void build_CN_param ( + Word16 *seed, /* i/o : Old CN generator shift register state */ + const Word16 n_param, /* i : number of params */ + const Word16 param_size_table[],/* i : size of params */ + Word16 parm[] /* o : CN Generated params */ + ) +{ + Word16 i; + const Word16 *p; + + *seed = extract_l(L_add(L_shr(L_mult(*seed, 31821), 1), 13849L)); + + p = &window_200_40[*seed & 0x7F]; logic16(); + for(i=0; i< n_param;i++){ + move16 (); logic16(); logic16(); logic16(); + parm[i] = *p++ & ~(0xFFFF<