changeset 356:5ccfe176bae1

libtwamr: integrate dec_gain.c
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 05 May 2024 22:24:42 +0000
parents 9beb01439a90
children fb001496ca8c
files libtwamr/Makefile libtwamr/dec_gain.c libtwamr/dec_gain.h libtwamr/namespace.list libtwamr/qua_gain_tab.c libtwamr/qua_gain_tab.h
diffstat 6 files changed, 735 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/libtwamr/Makefile	Sun May 05 21:59:18 2024 +0000
+++ b/libtwamr/Makefile	Sun May 05 22:24:42 2024 +0000
@@ -4,10 +4,11 @@
 	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 d_plsf.o d_plsf_3.o d_plsf_5.o dhf_check.o dhf_tables.o \
-	gains_tab.o gc_pred.o gmed_n.o graytab.o inv_sqrt.o log2.o lsp_lsf.o \
-	oper_32b.o pow2.o prmno.o q_plsf3_tab.o q_plsf5_tab.o reorder.o \
-	s10_8pf.o set_sign.o sqrt_l.o tls_flags.o window.o
+	d_gain_p.o d_plsf.o d_plsf_3.o d_plsf_5.o dec_gain.o dhf_check.o \
+	dhf_tables.o gains_tab.o gc_pred.o gmed_n.o graytab.o inv_sqrt.o log2.o\
+	lsp_lsf.o oper_32b.o pow2.o prmno.o q_plsf3_tab.o q_plsf5_tab.o \
+	qua_gain_tab.o reorder.o s10_8pf.o set_sign.o sqrt_l.o tls_flags.o \
+	window.o
 HDRS=	namespace.h
 LIB=	libtwamr.a
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/dec_gain.c	Sun May 05 22:24:42 2024 +0000
@@ -0,0 +1,156 @@
+/*
+********************************************************************************
+*
+*      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             : dec_gain.c
+*      Purpose          : Decode the pitch and codebook gains
+*
+********************************************************************************
+*/
+
+/*
+********************************************************************************
+*                         MODULE INCLUDE FILE AND VERSION ID
+********************************************************************************
+*/
+#include "namespace.h"
+#include "dec_gain.h"
+ 
+/*
+********************************************************************************
+*                         INCLUDE FILES
+********************************************************************************
+*/
+#include <stddef.h>
+#include "tw_amr.h"
+#include "typedef.h"
+#include "basic_op.h"
+#include "oper_32b.h"
+#include "no_count.h"
+#include "cnst.h"
+#include "pow2.h"
+#include "log2.h"
+#include "gc_pred.h"
+#include "qua_gain_tab.h"
+
+/*
+********************************************************************************
+*                         PUBLIC PROGRAM CODE
+********************************************************************************
+*/
+
+/*************************************************************************
+ *
+ *   FUNCTION:  Dec_gain()
+ *
+ *   PURPOSE: Decode the pitch and codebook gains
+ *
+ ************************************************************************/
+void Dec_gain(
+    gc_predState *pred_state, /* i/o: MA predictor state           */
+    enum Mode mode,           /* i  : AMR mode                     */
+    Word16 index,             /* i  : index of quantization.       */
+    Word16 code[],            /* i  : Innovative vector.           */
+    Word16 evenSubfr,         /* i  : Flag for even subframes      */     
+    Word16 * gain_pit,        /* o  : Pitch gain.                  */
+    Word16 * gain_cod         /* o  : Code gain.                   */
+)
+{
+    const Word16 *p;
+    Word16 frac, gcode0, exp, qua_ener, qua_ener_MR122;
+    Word16 g_code;
+    Word32 L_tmp;
+    
+    /* Read the quantized gains (table depends on mode) */
+    index = shl (index, 2);
+    
+    test(); test(); test();
+    if (    sub (mode, MR102) == 0
+         || sub (mode, MR74) == 0
+         || sub (mode, MR67) == 0)
+    {
+        p = &table_gain_highrates[index];                  move16 ();
+        
+        *gain_pit = *p++;                                  move16 ();
+        g_code = *p++;                                     move16 ();
+        qua_ener_MR122 = *p++;                             move16 ();
+        qua_ener = *p;                                     move16 ();
+    }
+    else
+    {
+        test();
+        if (sub (mode, MR475) == 0)
+        {
+            index = add (index, shl(sub(1, evenSubfr), 1));
+            p = &table_gain_MR475[index];                  move16 ();
+            
+            *gain_pit = *p++;                              move16 ();
+            g_code = *p++;                                 move16 ();
+            
+            /*---------------------------------------------------------*
+             *  calculate predictor update values (not stored in 4.75  *
+             *  quantizer table to save space):                        *
+             *  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  *
+             *                                                         *
+             *   qua_ener       = log2(g)                              *
+             *   qua_ener_MR122 = 20*log10(g)                          *
+             *---------------------------------------------------------*/
+
+            /* Log2(x Q12) = log2(x) + 12 */
+            Log2 (L_deposit_l (g_code), &exp, &frac); 
+            exp = sub(exp, 12);
+    
+            qua_ener_MR122 = add (shr_r (frac, 5), shl (exp, 10));
+    
+            /* 24660 Q12 ~= 6.0206 = 20*log10(2) */
+            L_tmp = Mpy_32_16(exp, frac, 24660);
+            qua_ener = round (L_shl (L_tmp, 13)); /* Q12 * Q0 = Q13 -> Q10 */
+        }
+        else
+        {
+            p = &table_gain_lowrates[index];                move16 ();
+            
+            *gain_pit = *p++;                               move16 ();
+            g_code = *p++;                                  move16 ();
+            qua_ener_MR122 = *p++;                          move16 ();
+            qua_ener = *p;                                  move16 ();
+        }
+    }
+    
+    /*-------------------------------------------------------------------*
+     *  predict codebook gain                                            *
+     *  ~~~~~~~~~~~~~~~~~~~~~                                            *
+     *  gc0     = Pow2(int(d)+frac(d))                                   *
+     *          = 2^exp + 2^frac                                         *
+     *                                                                   *
+     *  gcode0 (Q14) = 2^14*2^frac = gc0 * 2^(14-exp)                    *
+     *-------------------------------------------------------------------*/
+
+    gc_pred(pred_state, mode, code, &exp, &frac, NULL, NULL);
+
+    gcode0 = extract_l(Pow2(14, frac));
+
+    /*------------------------------------------------------------------*
+     *  read quantized gains, update table of past quantized energies   *
+     *  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   *
+     *  st->past_qua_en(Q10) = 20 * Log10(g_fac) / constant             *
+     *                       = Log2(g_fac)                              *
+     *                       = qua_ener                                 *
+     *                                           constant = 20*Log10(2) *
+     *------------------------------------------------------------------*/
+
+    L_tmp = L_mult(g_code, gcode0);
+    L_tmp = L_shr(L_tmp, sub(10, exp));
+    *gain_cod = extract_h(L_tmp);
+
+    /* update table of past quantized energies */
+
+    gc_pred_update(pred_state, qua_ener_MR122, qua_ener);
+
+    return;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/dec_gain.h	Sun May 05 22:24:42 2024 +0000
@@ -0,0 +1,50 @@
+/*
+********************************************************************************
+*
+*      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             : dec_gain.h
+*      Purpose          : Decode the pitch and codebook gains
+*
+********************************************************************************
+*/
+#ifndef dec_gain_h
+#define dec_gain_h "$Id $"
+
+/*
+********************************************************************************
+*                         INCLUDE FILES
+********************************************************************************
+*/
+#include "tw_amr.h"
+#include "typedef.h"
+#include "gc_pred.h"
+
+/*
+********************************************************************************
+*                         DECLARATION OF PROTOTYPES
+********************************************************************************
+*/
+
+/*************************************************************************
+ *
+ *   FUNCTION:  Dec_gain()
+ *
+ *   PURPOSE: Decode the pitch and codebook gains
+ *
+ ************************************************************************/
+void Dec_gain(
+    gc_predState *pred_state, /* i/o: MA predictor state           */
+    enum Mode mode,           /* i  : AMR mode                     */
+    Word16 index,             /* i  : index of quantization.       */
+    Word16 code[],            /* i  : Innovative vector.           */
+    Word16 evenSubfr,         /* i  : Flag for even subframes      */     
+    Word16 * gain_pit,        /* o  : Pitch gain.                  */
+    Word16 * gain_cod         /* o  : Code gain.                   */
+);
+
+#endif
--- a/libtwamr/namespace.list	Sun May 05 21:59:18 2024 +0000
+++ b/libtwamr/namespace.list	Sun May 05 22:24:42 2024 +0000
@@ -58,6 +58,7 @@
 Bgn_scd
 Bgn_scd_reset
 Convolve
+Dec_gain
 D_plsf_reset
 D_plsf_5
 D_plsf_3
@@ -97,6 +98,9 @@
 window_232_8
 qua_gain_pitch
 qua_gain_code
+table_gain_highrates
+table_gain_lowrates
+table_gain_MR475
 
 mean_lsf
 mean_lsf3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/qua_gain_tab.c	Sun May 05 22:24:42 2024 +0000
@@ -0,0 +1,492 @@
+#include "typedef.h"
+#include "namespace.h"
+#include "qua_gain_tab.h"
+
+/* The tables contains the following data:
+
+      g_pitch        (Q14),
+      g_fac          (Q12), (g_code = g_code0*g_fac),
+      qua_ener_MR122 (Q10), (log2(g_fac))
+      qua_ener       (Q10)  (20*log10(g_fac))
+
+      The log2() and log10() values are calculated on the fixed point value
+      (g_fac Q12) and not on the original floating point value of g_fac
+      to make the quantizer/MA predictdor use corresponding values.
+ */
+
+/* table used in 'high' rates: MR67 MR74 */
+
+const Word16 table_gain_highrates[VQ_SIZE_HIGHRATES*4] = {
+/* Note: column 4 (qua_ener) contains the original values from IS641
+         to ensure bit-exactness; however, they are not exactly the
+         rounded value of (20*log10(g_fac))                          */
+/*g_pit,    g_fac,  qua_ener_MR122, qua_ener */
+    577,      662,           -2692,   -16214,
+    806,     1836,           -1185,    -7135,
+   3109,     1052,           -2008,   -12086,
+   4181,     1387,           -1600,    -9629,
+   2373,     1425,           -1560,    -9394,
+   3248,     1985,           -1070,    -6442,
+   1827,     2320,            -840,    -5056,
+    941,     3314,            -313,    -1885,
+   2351,     2977,            -471,    -2838,
+   3616,     2420,            -777,    -4681,
+   3451,     3096,            -414,    -2490,
+   2955,     4301,              72,      434,
+   1848,     4500,             139,      836,
+   3884,     5416,             413,     2484,
+   1187,     7210,             835,     5030,
+   3083,     9000,            1163,     7002,
+   7384,      883,           -2267,   -13647,
+   5962,     1506,           -1478,    -8900,
+   5155,     2134,            -963,    -5800,
+   7944,     2009,           -1052,    -6335,
+   6507,     2250,            -885,    -5327,
+   7670,     2752,            -588,    -3537,
+   5952,     3016,            -452,    -2724,
+   4898,     3764,            -125,     -751,
+   6989,     3588,            -196,    -1177,
+   8174,     3978,             -43,     -260,
+   6064,     4404,             107,      645,
+   7709,     5087,             320,     1928,
+   5523,     6021,             569,     3426,
+   7769,     7126,             818,     4926,
+   6060,     7938,             977,     5885,
+   5594,    11487,            1523,     9172,
+  10581,     1356,           -1633,    -9831,
+   9049,     1597,           -1391,    -8380,
+   9794,     2035,           -1033,    -6220,
+   8946,     2415,            -780,    -4700,
+  10296,     2584,            -681,    -4099,
+   9407,     2734,            -597,    -3595,
+   8700,     3218,            -356,    -2144,
+   9757,     3395,            -277,    -1669,
+  10177,     3892,             -75,     -454,
+   9170,     4528,             148,      891,
+  10152,     5004,             296,     1781,
+   9114,     5735,             497,     2993,
+  10500,     6266,             628,     3782,
+  10110,     7631,             919,     5534,
+   8844,     8727,            1117,     6728,
+   8956,    12496,            1648,     9921,
+  12924,      976,           -2119,   -12753,
+  11435,     1755,           -1252,    -7539,
+  12138,     2328,            -835,    -5024,
+  11388,     2368,            -810,    -4872,
+  10700,     3064,            -429,    -2580,
+  12332,     2861,            -530,    -3192,
+  11722,     3327,            -307,    -1848,
+  11270,     3700,            -150,     -904,
+  10861,     4413,             110,      663,
+  12082,     4533,             150,      902,
+  11283,     5205,             354,     2132,
+  11960,     6305,             637,     3837,
+  11167,     7534,             900,     5420,
+  12128,     8329,            1049,     6312,
+  10969,    10777,            1429,     8604,
+  10300,    17376,            2135,    12853,
+  13899,     1681,           -1316,    -7921,
+  12580,     2045,           -1026,    -6179,
+  13265,     2439,            -766,    -4610,
+  14033,     2989,            -465,    -2802,
+  13452,     3098,            -413,    -2482,
+  12396,     3658,            -167,    -1006,
+  13510,     3780,            -119,     -713,
+  12880,     4272,              62,      374,
+  13533,     4861,             253,     1523,
+  12667,     5457,             424,     2552,
+  13854,     6106,             590,     3551,
+  13031,     6483,             678,     4084,
+  13557,     7721,             937,     5639,
+  12957,     9311,            1213,     7304,
+  13714,    11551,            1532,     9221,
+  12591,    15206,            1938,    11667,
+  15113,     1540,           -1445,    -8700,
+  15072,     2333,            -832,    -5007,
+  14527,     2511,            -723,    -4352,
+  14692,     3199,            -365,    -2197,
+  15382,     3560,            -207,    -1247,
+  14133,     3960,             -50,     -300,
+  15102,     4236,              50,      298,
+  14332,     4824,             242,     1454,
+  14846,     5451,             422,     2542,
+  15306,     6083,             584,     3518,
+  14329,     6888,             768,     4623,
+  15060,     7689,             930,     5602,
+  14406,     9426,            1231,     7413,
+  15387,     9741,            1280,     7706,
+  14824,    14271,            1844,    11102,
+  13600,    24939,            2669,    16067,
+  16396,     1969,           -1082,    -6517,
+  16817,     2832,            -545,    -3283,
+  15713,     2843,            -539,    -3248,
+  16104,     3336,            -303,    -1825,
+  16384,     3963,             -49,     -294,
+  16940,     4579,             165,      992,
+  15711,     4599,             171,     1030,
+  16222,     5448,             421,     2537,
+  16832,     6382,             655,     3945,
+  15745,     7141,             821,     4944,
+  16326,     7469,             888,     5343,
+  16611,     8624,            1100,     6622,
+  17028,    10418,            1379,     8303,
+  15905,    11817,            1565,     9423,
+  16878,    14690,            1887,    11360,
+  16515,    20870,            2406,    14483,
+  18142,     2083,            -999,    -6013,
+  19401,     3178,            -375,    -2257,
+  17508,     3426,            -264,    -1589,
+  20054,     4027,             -25,     -151,
+  18069,     4249,              54,      326,
+  18952,     5066,             314,     1890,
+  17711,     5402,             409,     2461,
+  19835,     6192,             610,     3676,
+  17950,     7014,             795,     4784,
+  21318,     7877,             966,     5816,
+  17910,     9289,            1210,     7283,
+  19144,     9290,            1210,     7284,
+  20517,    11381,            1510,     9089,
+  18075,    14485,            1866,    11234,
+  19999,    17882,            2177,    13108,
+  18842,    32764,            3072,    18494
+};
+
+/* table used in 'low' rates: MR475, MR515, MR59 */
+
+const Word16 table_gain_lowrates[VQ_SIZE_LOWRATES*4] = {
+/*g_pit,    g_fac,  qua_ener_MR122, qua_ener */
+  10813,    28753,            2879,    17333,
+  20480,     2785,            -570,    -3431,
+  18841,     6594,             703,     4235,
+   6225,     7413,             876,     5276,
+  17203,    10444,            1383,     8325,
+  21626,     1269,           -1731,   -10422,
+  21135,     4423,             113,      683,
+  11304,     1556,           -1430,    -8609,
+  19005,    12820,            1686,    10148,
+  17367,     2498,            -731,    -4398,
+  17858,     4833,             244,     1472,
+   9994,     2498,            -731,    -4398,
+  17530,     7864,             964,     5802,
+  14254,     1884,           -1147,    -6907,
+  15892,     3153,            -387,    -2327,
+   6717,     1802,           -1213,    -7303,
+  18186,    20193,            2357,    14189,
+  18022,     3031,            -445,    -2678,
+  16711,     5857,             528,     3181,
+   8847,     4014,             -30,     -180,
+  15892,     8970,            1158,     6972,
+  18022,     1392,           -1594,    -9599,
+  16711,     4096,               0,        0,
+   8192,      655,           -2708,   -16305,
+  15237,    13926,            1808,    10884,
+  14254,     3112,            -406,    -2444,
+  14090,     4669,             193,     1165,
+   5406,     2703,            -614,    -3697,
+  13434,     6553,             694,     4180,
+  12451,      901,           -2237,   -13468,
+  12451,     2662,            -637,    -3833,
+   3768,      655,           -2708,   -16305,
+  14745,    23511,            2582,    15543,
+  19169,     2457,            -755,    -4546,
+  20152,     5079,             318,     1913,
+   6881,     4096,               0,        0,
+  20480,     8560,            1089,     6556,
+  19660,      737,           -2534,   -15255,
+  19005,     4259,              58,      347,
+   7864,     2088,            -995,    -5993,
+  11468,    12288,            1623,     9771,
+  15892,     1474,           -1510,    -9090,
+  15728,     4628,             180,     1086,
+   9175,     1433,           -1552,    -9341,
+  16056,     7004,             793,     4772,
+  14827,      737,           -2534,   -15255,
+  15073,     2252,            -884,    -5321,
+   5079,     1228,           -1780,   -10714,
+  13271,    17326,            2131,    12827,
+  16547,     2334,            -831,    -5002,
+  15073,     5816,             518,     3118,
+   3932,     3686,            -156,     -938,
+  14254,     8601,            1096,     6598,
+  16875,      778,           -2454,   -14774,
+  15073,     3809,            -107,     -646,
+   6062,      614,           -2804,   -16879,
+   9338,     9256,            1204,     7251,
+  13271,     1761,           -1247,    -7508,
+  13271,     3522,            -223,    -1343,
+   2457,     1966,           -1084,    -6529,
+  11468,     5529,             443,     2668,
+  10485,      737,           -2534,   -15255,
+  11632,     3194,            -367,    -2212,
+   1474,      778,           -2454,   -14774
+};
+
+/* table that was originally in qgain475.tab */
+
+/* The table contains the following data:
+ *
+ *    g_pitch(0)        (Q14) // for sub-
+ *    g_fac(0)          (Q12) // frame 0 and 2
+ *    g_pitch(1)        (Q14) // for sub-
+ *    g_fac(2)          (Q12) // frame 1 and 3
+ *
+ */
+const Word16 table_gain_MR475[MR475_VQ_SIZE*4] = {
+/*g_pit(0), g_fac(0),      g_pit(1), g_fac(1) */
+   812,          128,           542,      140,
+  2873,         1135,          2266,     3402,
+  2067,          563,         12677,      647,
+  4132,         1798,          5601,     5285,
+  7689,          374,          3735,      441,
+ 10912,         2638,         11807,     2494,
+ 20490,          797,          5218,      675,
+  6724,         8354,          5282,     1696,
+  1488,          428,          5882,      452,
+  5332,         4072,          3583,     1268,
+  2469,          901,         15894,     1005,
+ 14982,         3271,         10331,     4858,
+  3635,         2021,          2596,      835,
+ 12360,         4892,         12206,     1704,
+ 13432,         1604,          9118,     2341,
+  3968,         1538,          5479,     9936,
+  3795,          417,          1359,      414,
+  3640,         1569,          7995,     3541,
+ 11405,          645,          8552,      635,
+  4056,         1377,         16608,     6124,
+ 11420,          700,          2007,      607,
+ 12415,         1578,         11119,     4654,
+ 13680,         1708,         11990,     1229,
+  7996,         7297,         13231,     5715,
+  2428,         1159,          2073,     1941,
+  6218,         6121,          3546,     1804,
+  8925,         1802,          8679,     1580,
+ 13935,         3576,         13313,     6237,
+  6142,         1130,          5994,     1734,
+ 14141,         4662,         11271,     3321,
+ 12226,         1551,         13931,     3015,
+  5081,        10464,          9444,     6706,
+  1689,          683,          1436,     1306,
+  7212,         3933,          4082,     2713,
+  7793,          704,         15070,      802,
+  6299,         5212,          4337,     5357,
+  6676,          541,          6062,      626,
+ 13651,         3700,         11498,     2408,
+ 16156,          716,         12177,      751,
+  8065,        11489,          6314,     2256,
+  4466,          496,          7293,      523,
+ 10213,         3833,          8394,     3037,
+  8403,          966,         14228,     1880,
+  8703,         5409,         16395,     4863,
+  7420,         1979,          6089,     1230,
+  9371,         4398,         14558,     3363,
+ 13559,         2873,         13163,     1465,
+  5534,         1678,         13138,    14771,
+  7338,          600,          1318,      548,
+  4252,         3539,         10044,     2364,
+ 10587,          622,         13088,      669,
+ 14126,         3526,          5039,     9784,
+ 15338,          619,          3115,      590,
+ 16442,         3013,         15542,     4168,
+ 15537,         1611,         15405,     1228,
+ 16023,         9299,          7534,     4976,
+  1990,         1213,         11447,     1157,
+ 12512,         5519,          9475,     2644,
+  7716,         2034,         13280,     2239,
+ 16011,         5093,          8066,     6761,
+ 10083,         1413,          5002,     2347,
+ 12523,         5975,         15126,     2899,
+ 18264,         2289,         15827,     2527,
+ 16265,        10254,         14651,    11319,
+  1797,          337,          3115,      397,
+  3510,         2928,          4592,     2670,
+  7519,          628,         11415,      656,
+  5946,         2435,          6544,     7367,
+  8238,          829,          4000,      863,
+ 10032,         2492,         16057,     3551,
+ 18204,         1054,          6103,     1454,
+  5884,         7900,         18752,     3468,
+  1864,          544,          9198,      683,
+ 11623,         4160,          4594,     1644,
+  3158,         1157,         15953,     2560,
+ 12349,         3733,         17420,     5260,
+  6106,         2004,          2917,     1742,
+ 16467,         5257,         16787,     1680,
+ 17205,         1759,          4773,     3231,
+  7386,         6035,         14342,    10012,
+  4035,          442,          4194,      458,
+  9214,         2242,          7427,     4217,
+ 12860,          801,         11186,      825,
+ 12648,         2084,         12956,     6554,
+  9505,          996,          6629,      985,
+ 10537,         2502,         15289,     5006,
+ 12602,         2055,         15484,     1653,
+ 16194,         6921,         14231,     5790,
+  2626,          828,          5615,     1686,
+ 13663,         5778,          3668,     1554,
+ 11313,         2633,          9770,     1459,
+ 14003,         4733,         15897,     6291,
+  6278,         1870,          7910,     2285,
+ 16978,         4571,         16576,     3849,
+ 15248,         2311,         16023,     3244,
+ 14459,        17808,         11847,     2763,
+  1981,         1407,          1400,      876,
+  4335,         3547,          4391,     4210,
+  5405,          680,         17461,      781,
+  6501,         5118,          8091,     7677,
+  7355,          794,          8333,     1182,
+ 15041,         3160,         14928,     3039,
+ 20421,          880,         14545,      852,
+ 12337,        14708,          6904,     1920,
+  4225,          933,          8218,     1087,
+ 10659,         4084,         10082,     4533,
+  2735,          840,         20657,     1081,
+ 16711,         5966,         15873,     4578,
+ 10871,         2574,          3773,     1166,
+ 14519,         4044,         20699,     2627,
+ 15219,         2734,         15274,     2186,
+  6257,         3226,         13125,    19480,
+  7196,          930,          2462,     1618,
+  4515,         3092,         13852,     4277,
+ 10460,          833,         17339,      810,
+ 16891,         2289,         15546,     8217,
+ 13603,         1684,          3197,     1834,
+ 15948,         2820,         15812,     5327,
+ 17006,         2438,         16788,     1326,
+ 15671,         8156,         11726,     8556,
+  3762,         2053,          9563,     1317,
+ 13561,         6790,         12227,     1936,
+  8180,         3550,         13287,     1778,
+ 16299,         6599,         16291,     7758,
+  8521,         2551,          7225,     2645,
+ 18269,         7489,         16885,     2248,
+ 17882,         2884,         17265,     3328,
+  9417,        20162,         11042,     8320,
+  1286,          620,          1431,      583,
+  5993,         2289,          3978,     3626,
+  5144,          752,         13409,      830,
+  5553,         2860,         11764,     5908,
+ 10737,          560,          5446,      564,
+ 13321,         3008,         11946,     3683,
+ 19887,          798,          9825,      728,
+ 13663,         8748,          7391,     3053,
+  2515,          778,          6050,      833,
+  6469,         5074,          8305,     2463,
+  6141,         1865,         15308,     1262,
+ 14408,         4547,         13663,     4515,
+  3137,         2983,          2479,     1259,
+ 15088,         4647,         15382,     2607,
+ 14492,         2392,         12462,     2537,
+  7539,         2949,         12909,    12060,
+  5468,          684,          3141,      722,
+  5081,         1274,         12732,     4200,
+ 15302,          681,          7819,      592,
+  6534,         2021,         16478,     8737,
+ 13364,          882,          5397,      899,
+ 14656,         2178,         14741,     4227,
+ 14270,         1298,         13929,     2029,
+ 15477,         7482,         15815,     4572,
+  2521,         2013,          5062,     1804,
+  5159,         6582,          7130,     3597,
+ 10920,         1611,         11729,     1708,
+ 16903,         3455,         16268,     6640,
+  9306,         1007,          9369,     2106,
+ 19182,         5037,         12441,     4269,
+ 15919,         1332,         15357,     3512,
+ 11898,        14141,         16101,     6854,
+  2010,          737,          3779,      861,
+ 11454,         2880,          3564,     3540,
+  9057,         1241,         12391,      896,
+  8546,         4629,         11561,     5776,
+  8129,          589,          8218,      588,
+ 18728,         3755,         12973,     3149,
+ 15729,          758,         16634,      754,
+ 15222,        11138,         15871,     2208,
+  4673,          610,         10218,      678,
+ 15257,         4146,          5729,     3327,
+  8377,         1670,         19862,     2321,
+ 15450,         5511,         14054,     5481,
+  5728,         2888,          7580,     1346,
+ 14384,         5325,         16236,     3950,
+ 15118,         3744,         15306,     1435,
+ 14597,         4070,         12301,    15696,
+  7617,         1699,          2170,      884,
+  4459,         4567,         18094,     3306,
+ 12742,          815,         14926,      907,
+ 15016,         4281,         15518,     8368,
+ 17994,         1087,          2358,      865,
+ 16281,         3787,         15679,     4596,
+ 16356,         1534,         16584,     2210,
+ 16833,         9697,         15929,     4513,
+  3277,         1085,          9643,     2187,
+ 11973,         6068,          9199,     4462,
+  8955,         1629,         10289,     3062,
+ 16481,         5155,         15466,     7066,
+ 13678,         2543,          5273,     2277,
+ 16746,         6213,         16655,     3408,
+ 20304,         3363,         18688,     1985,
+ 14172,        12867,         15154,    15703,
+  4473,         1020,          1681,      886,
+  4311,         4301,          8952,     3657,
+  5893,         1147,         11647,     1452,
+ 15886,         2227,          4582,     6644,
+  6929,         1205,          6220,      799,
+ 12415,         3409,         15968,     3877,
+ 19859,         2109,          9689,     2141,
+ 14742,         8830,         14480,     2599,
+  1817,         1238,          7771,      813,
+ 19079,         4410,          5554,     2064,
+  3687,         2844,         17435,     2256,
+ 16697,         4486,         16199,     5388,
+  8028,         2763,          3405,     2119,
+ 17426,         5477,         13698,     2786,
+ 19879,         2720,          9098,     3880,
+ 18172,         4833,         17336,    12207,
+  5116,          996,          4935,      988,
+  9888,         3081,          6014,     5371,
+ 15881,         1667,          8405,     1183,
+ 15087,         2366,         19777,     7002,
+ 11963,         1562,          7279,     1128,
+ 16859,         1532,         15762,     5381,
+ 14708,         2065,         20105,     2155,
+ 17158,         8245,         17911,     6318,
+  5467,         1504,          4100,     2574,
+ 17421,         6810,          5673,     2888,
+ 16636,         3382,          8975,     1831,
+ 20159,         4737,         19550,     7294,
+  6658,         2781,         11472,     3321,
+ 19397,         5054,         18878,     4722,
+ 16439,         2373,         20430,     4386,
+ 11353,        26526,         11593,     3068,
+  2866,         1566,          5108,     1070,
+  9614,         4915,          4939,     3536,
+  7541,          878,         20717,      851,
+  6938,         4395,         16799,     7733,
+ 10137,         1019,          9845,      964,
+ 15494,         3955,         15459,     3430,
+ 18863,          982,         20120,      963,
+ 16876,        12887,         14334,     4200,
+  6599,         1220,          9222,      814,
+ 16942,         5134,          5661,     4898,
+  5488,         1798,         20258,     3962,
+ 17005,         6178,         17929,     5929,
+  9365,         3420,          7474,     1971,
+ 19537,         5177,         19003,     3006,
+ 16454,         3788,         16070,     2367,
+  8664,         2743,          9445,    26358,
+ 10856,         1287,          3555,     1009,
+  5606,         3622,         19453,     5512,
+ 12453,          797,         20634,      911,
+ 15427,         3066,         17037,    10275,
+ 18883,         2633,          3913,     1268,
+ 19519,         3371,         18052,     5230,
+ 19291,         1678,         19508,     3172,
+ 18072,        10754,         16625,     6845,
+  3134,         2298,         10869,     2437,
+ 15580,         6913,         12597,     3381,
+ 11116,         3297,         16762,     2424,
+ 18853,         6715,         17171,     9887,
+ 12743,         2605,          8937,     3140,
+ 19033,         7764,         18347,     3880,
+ 20475,         3682,         19602,     3380,
+ 13044,        19373,         10526,    23124
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/qua_gain_tab.h	Sun May 05 22:24:42 2024 +0000
@@ -0,0 +1,28 @@
+/*
+ * This header file contains constant definitions and extern declarations
+ * for tables that were originally in qua_gain.tab and qgain475.tab,
+ * included in both decoder and encoder modules.
+ */
+
+#ifndef	qua_gain_tab_h
+#define	qua_gain_tab_h
+
+#include "typedef.h"
+
+/* table used in 'high' rates: MR67 MR74 */
+#define VQ_SIZE_HIGHRATES 128
+
+extern const Word16 table_gain_highrates[VQ_SIZE_HIGHRATES*4];
+
+/* table used in 'low' rates: MR475, MR515, MR59 */
+#define VQ_SIZE_LOWRATES 64
+
+extern const Word16 table_gain_lowrates[VQ_SIZE_LOWRATES*4];
+
+/* table that was originally in qgain475.tab */
+
+#define MR475_VQ_SIZE 256
+
+extern const Word16 table_gain_MR475[MR475_VQ_SIZE*4];
+
+#endif	/* include guard */