# HG changeset patch # User Mychaela Falconia # Date 1715024099 0 # Node ID ffd48f0a2ab5c150262afcf5eb8b27beab1d11d0 # Parent 3618b5cf25a672376d933b1762add83852695d2c libtwamr: implement Prm2bits() like Bits2prm() diff -r 3618b5cf25a6 -r ffd48f0a2ab5 libtwamr/Makefile --- a/libtwamr/Makefile Mon May 06 19:19:27 2024 +0000 +++ b/libtwamr/Makefile Mon May 06 19:34:59 2024 +0000 @@ -10,10 +10,10 @@ gc_pred.o gmed_n.o graytab.o hp_max.o int_lpc.o int_lsf.o inter_36.o \ inv_sqrt.o lag_wind.o levinson.o log2.o lpc.o lsfwt.o lsp.o lsp_avg.o \ lsp_az.o lsp_lsf.o lsp_tab.o mac_32.o oper_32b.o ph_disp.o pitch_fr.o \ - post_pro.o pow2.o pre_big.o pre_proc.o pred_lt.o preemph.o prmno.o \ - q_gain_c.o q_gain_p.o q_plsf.o q_plsf3_tab.o q_plsf5_tab.o q_plsf_3.o \ - q_plsf_5.o qgain475.o qgain795.o qua_gain.o qua_gain_tab.o reorder.o \ - residu.o s10_8pf.o set_sign.o sqrt_l.o syn_filt.o tls_flags.o \ + post_pro.o pow2.o pre_big.o pre_proc.o pred_lt.o preemph.o prm2bits.o \ + prmno.o q_gain_c.o q_gain_p.o q_plsf.o q_plsf3_tab.o q_plsf5_tab.o \ + q_plsf_3.o q_plsf_5.o qgain475.o qgain795.o qua_gain.o qua_gain_tab.o \ + reorder.o residu.o s10_8pf.o set_sign.o sqrt_l.o syn_filt.o tls_flags.o\ weight_a.o window.o HDRS= namespace.h LIB= libtwamr.a diff -r 3618b5cf25a6 -r ffd48f0a2ab5 libtwamr/prm2bits.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libtwamr/prm2bits.c Mon May 06 19:34:59 2024 +0000 @@ -0,0 +1,27 @@ +/* + * A cleaner reimplementation of AMR Prm2bits() function. + */ + +#include "typedef.h" +#include "namespace.h" +#include "bitno.h" +#include "prm2bits.h" + +void Prm2bits(enum Mode mode, const Word16 prm[], Word16 bits[]) +{ + const Word16 *t = bitno[mode]; + unsigned nparam = prmno[mode]; + unsigned n, p, mask; + Word16 *b = bits; + + for (n = 0; n < nparam; n++) { + p = prm[n]; + mask = 1 << (*t++ - 1); + for (; mask; mask >>= 1) { + if (p & mask) + *b++ = 1; + else + *b++ = 0; + } + } +}