FreeCalypso > hg > gsm-codec-lib
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