1666 lines · 102.1 KB · C
RawDownload
/* * AMR narrowband data and definitions * Copyright (c) 2006-2007 Robert Swain * Copyright (c) 2009 Colin McQuillan * * This file is part of FFmpeg. * * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */  /** * @file * AMR narrowband data and definitions */ #ifndef AVCODEC_AMRNBDATA_H#define AVCODEC_AMRNBDATA_H #include <stdint.h> #include "libavutil/common.h"      /* offsetof */ #define AMR_SUBFRAME_SIZE            40   ///< samples per subframe /** Frame type (Table 1a in 3GPP TS 26.101) */enum Mode {    MODE_4k75 = 0,                        ///< 4.75 kbit/s    MODE_5k15,                            ///< 5.15 kbit/s    MODE_5k9,                             ///< 5.90 kbit/s    MODE_6k7,                             ///< 6.70 kbit/s    MODE_7k4,                             ///< 7.40 kbit/s    MODE_7k95,                            ///< 7.95 kbit/s    MODE_10k2,                            ///< 10.2 kbit/s    MODE_12k2,                            ///< 12.2 kbit/s    MODE_DTX,                             ///< silent frame    N_MODES,                              ///< number of modes    NO_DATA = 15                          ///< no transmission}; #define LP_FILTER_ORDER 10        ///< linear predictive coding filter order /** * AMRNB unpacked data subframe */typedef struct AMRNBSubframe {    uint16_t p_lag;      ///< index to decode the pitch lag    uint16_t p_gain;     ///< index to decode the pitch gain    uint16_t fixed_gain; ///< index to decode the fixed gain factor, for MODE_12k2 and MODE_7k95    uint16_t pulses[10]; ///< pulses: 10 for MODE_12k2, 7 for MODE_10k2, and index and sign for others} AMRNBSubframe; /** * AMRNB unpacked data frame */typedef struct AMRNBFrame {    uint16_t lsf[5];           ///< lsf parameters: 5 parameters for MODE_12k2, only 3 for other modes    AMRNBSubframe subframe[4]; ///< unpacked data for each subframe} AMRNBFrame; /** The index of a frame parameter */#define AMR_BIT(field)                  (offsetof(AMRNBFrame, field))/** The index of a subframe-specific parameter */#define AMR_OF(frame_num, variable)     AMR_BIT(subframe[frame_num].variable) // The following order* tables are used to convert AMR frame parameters to and// from a bitstream. See 3GPP TS 26.101 for more information.// Each field in AMRNBFrame is stored as:// * one byte for the number of bits in the field// * one byte for the field index// * then, one byte for each bit of the field (from most-significant to least)//         of the position of that bit in the AMR frame.static const uint8_t order_MODE_4k75[] = {     8, AMR_BIT(lsf[0]),        7,   6,   5,   4,   3,   2,   1,   0,     8, AMR_BIT(lsf[1]),       15,  14,  13,  12,  11,  10,   9,   8,     7, AMR_BIT(lsf[2]),       51,  35,  34,  50,  33,  49,  32,     8, AMR_OF(0,p_lag),       23,  22,  21,  20,  19,  18,  43,  42,     8, AMR_OF(0,p_gain),      54,  55,  40,  41,  24,  25,  26,  27,     7, AMR_OF(0,pulses[0]),   92,  68,  67,  84,  66,  65,  80,     2, AMR_OF(0,pulses[1]),   53,  52,     4, AMR_OF(1,p_lag),       17,  16,  48,  63,     7, AMR_OF(1,pulses[0]),   91,  64,  79,  83,  78,  77,  95,     2, AMR_OF(1,pulses[1]),   62,  61,     4, AMR_OF(2,p_lag),       31,  30,  60,  59,     8, AMR_OF(2,p_gain),      44,  45,  46,  47,  36,  37,  38,  39,     7, AMR_OF(2,pulses[0]),   90,  76,  75,  82,  74,  73,  94,     2, AMR_OF(2,pulses[1]),   58,  57,     4, AMR_OF(3,p_lag),       29,  28,  56,  71,     7, AMR_OF(3,pulses[0]),   89,  72,  87,  81,  86,  85,  93,     2, AMR_OF(3,pulses[1]),   70,  69,     0}; static const uint8_t order_MODE_5k15[] = {     8, AMR_BIT(lsf[0]),        0,   1,   2,   3,   4,   5,   6,   7,     8, AMR_BIT(lsf[1]),        8,   9,  10,  11,  12,  13,  14,  15,     7, AMR_BIT(lsf[2]),       70,  51,  43,  71,  50,  60,  49,     8, AMR_OF(0,p_lag),       23,  22,  21,  20,  19,  47,  54,  59,     6, AMR_OF(0,p_gain),      48,  42,  35,  29,  30,  31,     7, AMR_OF(0,pulses[0]),   92,  84,  82, 100,  79,  72,  88,     2, AMR_OF(0,pulses[1]),   67,  68,     4, AMR_OF(1,p_lag),       18,  46,  53,  58,     6, AMR_OF(1,p_gain),      63,  41,  34,  26,  27,  28,     7, AMR_OF(1,pulses[0]),   91,  83,  81,  99,  78,  87, 103,     2, AMR_OF(1,pulses[1]),   65,  66,     4, AMR_OF(2,p_lag),       17,  45,  52,  57,     6, AMR_OF(2,p_gain),      62,  40,  33,  39,  24,  25,     7, AMR_OF(2,pulses[0]),   90,  80,  95,  98,  77,  86, 102,     2, AMR_OF(2,pulses[1]),   75,  64,     4, AMR_OF(3,p_lag),       16,  44,  56,  69,     6, AMR_OF(3,p_gain),      61,  55,  32,  36,  37,  38,     7, AMR_OF(3,pulses[0]),   89,  94,  93,  97,  76,  85, 101,     2, AMR_OF(3,pulses[1]),   73,  74,     0}; static const uint8_t order_MODE_5k9[] = {     8, AMR_BIT(lsf[0]),        7,   6,   0,   3,   5,   4,   2,   1,     9, AMR_BIT(lsf[1]),       13,  12,   8,  11,  10,  15,   9,  14,  23,     9, AMR_BIT(lsf[2]),       71,  56,  60,  70,  59,  57,  58,  69,  76,     8, AMR_OF(0,p_lag),       16,  18,  22,  20,  30,  38,  44,  42,     6, AMR_OF(0,p_gain),      75,  48,  52,  40,  34,  26,     9, AMR_OF(0,pulses[0]),  101,  89,  93, 117, 105,  81,  85, 109,  97,     2, AMR_OF(0,pulses[1]),   67,  78,     4, AMR_OF(1,p_lag),       28,  36,  46,  87,     6, AMR_OF(1,p_gain),      74,  63,  51,  55,  33,  25,     9, AMR_OF(1,pulses[0]),  100,  88,  92, 116, 104,  80,  84, 108,  96,     2, AMR_OF(1,pulses[1]),   64,  79,     8, AMR_OF(2,p_lag),       31,  17,  21,  19,  29,  37,  43,  41,     6, AMR_OF(2,p_gain),      73,  62,  50,  54,  32,  24,     9, AMR_OF(2,pulses[0]),   99, 103,  91, 115, 119,  95,  83, 107, 111,     2, AMR_OF(2,pulses[1]),   66,  77,     4, AMR_OF(3,p_lag),       27,  35,  45,  86,     6, AMR_OF(3,p_gain),      72,  61,  49,  53,  47,  39,     9, AMR_OF(3,pulses[0]),   98, 102,  90, 114, 118,  94,  82, 106, 110,     2, AMR_OF(3,pulses[1]),   65,  68,     0}; static const uint8_t order_MODE_6k7[] = {     8, AMR_BIT(lsf[0]),        7,   6,  15,   4,   5,   3,   2,   0,     9, AMR_BIT(lsf[1]),       14,  13,   8,  12,  10,   1,   9,  11,  29,     9, AMR_BIT(lsf[2]),       57,  58,  50,  56,  60,  59,  49,  71,  70,     8, AMR_OF(0,p_lag),       17,  19,  23,  21,  31,  24,  32,  52,     7, AMR_OF(0,p_gain),      36,  82,  69,  46,  42,  48,  77,    11, AMR_OF(0,pulses[0]),  109,  97, 133, 121, 101,  89, 125, 113,  93, 117,                              105,     3, AMR_OF(0,pulses[1]),   81,  73,  65,     4, AMR_OF(1,p_lag),       28,  26,  38,  54,     7, AMR_OF(1,p_gain),      35,  83,  68,  45,  41,  63,  76,    11, AMR_OF(1,pulses[0]),  108,  96, 132, 120, 100,  88, 124, 112,  92, 116,                              104,     3, AMR_OF(1,pulses[1]),   80,  72,  64,     8, AMR_OF(2,p_lag),       16,  18,  22,  20,  30,  39,  47,  51,     7, AMR_OF(2,p_gain),      34,  84,  67,  44,  40,  62,  75,    11, AMR_OF(2,pulses[0]),  107, 111, 131, 135,  99, 103, 123, 127,  91, 115,                              119,     3, AMR_OF(2,pulses[1]),   95,  87,  79,     4, AMR_OF(3,p_lag),       27,  25,  37,  53,     7, AMR_OF(3,p_gain),      33,  85,  66,  43,  55,  61,  74,    11, AMR_OF(3,pulses[0]),  106, 110, 130, 134,  98, 102, 122, 126,  90, 114,                              118,     3, AMR_OF(3,pulses[1]),   94,  86,  78,     0}; static const uint8_t order_MODE_7k4[] = {     8, AMR_BIT(lsf[0]),        7,   6,   5,   4,   3,   2,   1,   0,     9, AMR_BIT(lsf[1]),       15,  14,  13,  12,  11,  10,   9,   8,  23,     9, AMR_BIT(lsf[2]),       53,  52,  51,  58,  40,  55,  54,  57,  56,     8, AMR_OF(0,p_lag),       22,  20,  18,  16,  30,  50,  95,  94,     7, AMR_OF(0,p_gain),      28,  24,  73,  36,  32,  62,  67,    13, AMR_OF(0,pulses[0]),  127, 123, 135, 131, 143, 139, 151, 103, 102, 101,                              100,  99,  98,     4, AMR_OF(0,pulses[1]),   83,  75,  79,  71,     5, AMR_OF(1,p_lag),       44,  42,  49,  93,  92,     7, AMR_OF(1,p_gain),      27,  39,  72,  35,  47,  61,  66,    13, AMR_OF(1,pulses[0]),  126, 122, 134, 130, 142, 138, 150,  97,  96, 111,                              110, 109, 108,     4, AMR_OF(1,pulses[1]),   82,  74,  78,  70,     8, AMR_OF(2,p_lag),       21,  19,  17,  31,  29,  48,  91,  90,     7, AMR_OF(2,p_gain),      26,  38,  87,  34,  46,  60,  65,    13, AMR_OF(2,pulses[0]),  125, 121, 133, 129, 141, 137, 149, 107, 106, 105,                              104, 119, 118,     4, AMR_OF(2,pulses[1]),   81,  85,  77,  69,     5, AMR_OF(3,p_lag),       43,  41,  63,  89,  88,     7, AMR_OF(3,p_gain),      25,  37,  86,  33,  45,  59,  64,    13, AMR_OF(3,pulses[0]),  124, 120, 132, 128, 140, 136, 148, 117, 116, 115,                              114, 113, 112,     4, AMR_OF(3,pulses[1]),   80,  84,  76,  68,     0}; static const uint8_t order_MODE_7k95[] = {     9, AMR_BIT(lsf[0]),       67,  68,   1,   2,   3,   4,   5,   6,   7,     9, AMR_BIT(lsf[1]),       14,  13,   9,  12,  11,   0,  10,  15,   8,     9, AMR_BIT(lsf[2]),       18,  19,  23,  17,  22,  20,  21,  66,  65,     8, AMR_OF(0,p_lag),       44,  42,  40,  54,  52,  56,  64,  78,     4, AMR_OF(0,p_gain),      36,  32,  72,  80,     5, AMR_OF(0,fixed_gain),  16,  28,  24,  60,  84,    13, AMR_OF(0,pulses[0]),  135, 109, 144, 156, 120,  97, 148, 121, 101, 122,                              123,  89, 124,     4, AMR_OF(0,pulses[1]),  125, 126, 127, 112,     6, AMR_OF(1,p_lag),       50,  48,  62,  70,  76,  74,     4, AMR_OF(1,p_gain),      35,  47,  87,  95,     5, AMR_OF(1,fixed_gain),  31,  27,  39,  59,  83,    13, AMR_OF(1,pulses[0]),  129, 108, 159, 155, 130,  96, 147, 131, 100, 132,                              133,  88, 134,     4, AMR_OF(1,pulses[1]),  113, 114, 115, 116,     8, AMR_OF(2,p_lag),       43,  41,  55,  53,  51,  71,  79,  77,     4, AMR_OF(2,p_gain),      34,  46,  86,  94,     5, AMR_OF(2,fixed_gain),  30,  26,  38,  58,  82,    13, AMR_OF(2,pulses[0]),  139, 107, 158, 154, 140, 111, 146, 141,  99, 142,                              143, 103, 128,     4, AMR_OF(2,pulses[1]),  105,  90,  91,  92,     6, AMR_OF(3,p_lag),       49,  63,  61,  69,  75,  73,     4, AMR_OF(3,p_gain),      33,  45,  85,  93,     5, AMR_OF(3,fixed_gain),  29,  25,  37,  57,  81,    13, AMR_OF(3,pulses[0]),  149, 106, 157, 153, 150, 110, 145, 151,  98, 136,                              137, 102, 138,     4, AMR_OF(3,pulses[1]),  117, 118, 119, 104,     0}; static const uint8_t order_MODE_10k2[] = {     8, AMR_BIT(lsf[0]),        0,   1,   2,   3,   4,   5,   6,   7,     9, AMR_BIT(lsf[1]),       23,   8,   9,  10,  11,  12,  13,  14,  15,     9, AMR_BIT(lsf[2]),       57,  58,  62,  56,  60,  59,  61,  71,  70,     8, AMR_OF(0,p_lag),       22,  21,  20,  19,  18,  17,  42,  41,     7, AMR_OF(0,p_gain),      38,  50,  84,  37,  36,  85,  83,     1, AMR_OF(0,pulses[0]),   66,     1, AMR_OF(0,pulses[1]),   67,     1, AMR_OF(0,pulses[2]),   68,     1, AMR_OF(0,pulses[3]),   69,    10, AMR_OF(0,pulses[4]),  145, 144, 156, 153, 154, 163, 161, 192, 206, 195,    10, AMR_OF(0,pulses[5]),  158, 159, 157, 152, 155, 165, 160, 205, 204, 194,     7, AMR_OF(0,pulses[6]),  167, 166, 162, 164, 196, 207, 193,     5, AMR_OF(1,p_lag),       26,  25,  54,  53,  89,     7, AMR_OF(1,p_gain),      35,  49,  81,  34,  33,  82,  80,     1, AMR_OF(1,pulses[0]),   78,     1, AMR_OF(1,pulses[1]),   79,     1, AMR_OF(1,pulses[2]),   64,     1, AMR_OF(1,pulses[3]),   65,    10, AMR_OF(1,pulses[4]),  103, 102,  98, 111,  96, 105, 119, 185, 199, 188,    10, AMR_OF(1,pulses[5]),  100, 101,  99, 110,  97, 107, 118, 198, 197, 187,     7, AMR_OF(1,pulses[6]),  109, 108, 104, 106, 189, 184, 186,     8, AMR_OF(2,p_lag),       16,  31,  30,  29,  28,  27,  40,  55,     7, AMR_OF(2,p_gain),      32,  48,  94,  47,  46,  95,  93,     1, AMR_OF(2,pulses[0]),   74,     1, AMR_OF(2,pulses[1]),   75,     1, AMR_OF(2,pulses[2]),   76,     1, AMR_OF(2,pulses[3]),   77,    10, AMR_OF(2,pulses[4]),  117, 116, 112, 125, 126, 135, 133, 178, 176, 181,    10, AMR_OF(2,pulses[5]),  114, 115, 113, 124, 127, 121, 132, 191, 190, 180,     7, AMR_OF(2,pulses[6]),  123, 122, 134, 120, 182, 177, 179,     5, AMR_OF(3,p_lag),       24,  39,  52,  51,  88,     7, AMR_OF(3,p_gain),      45,  63,  91,  44,  43,  92,  90,     1, AMR_OF(3,pulses[0]),   86,     1, AMR_OF(3,pulses[1]),   87,     1, AMR_OF(3,pulses[2]),   72,     1, AMR_OF(3,pulses[3]),   73,    10, AMR_OF(3,pulses[4]),  131, 130, 142, 139, 140, 149, 147, 171, 169, 174,    10, AMR_OF(3,pulses[5]),  128, 129, 143, 138, 141, 151, 146, 168, 183, 173,     7, AMR_OF(3,pulses[6]),  137, 136, 148, 150, 175, 170, 172,     0}; static const uint8_t order_MODE_12k2[] = {     7, AMR_BIT(lsf[0]),        7,   6,   5,   4,   3,   2,   1,     8, AMR_BIT(lsf[1]),        0,  15,  14,  13,  12,  11,  10,   9,     9, AMR_BIT(lsf[2]),       23,  22,  21,  20,  19,  18,  17,  16,   8,     8, AMR_BIT(lsf[3]),       31,  30,  29,  28,  27,  86,  85,  84,     6, AMR_BIT(lsf[4]),       83,  82,  81,  80, 127, 126,     9, AMR_OF(0,p_lag),       26,  24,  38,  36,  34,  32,  46,  44,  42,     4, AMR_OF(0,p_gain),      40,  52,  48,  95,     5, AMR_OF(0,fixed_gain),  60,  56,  68,  91, 111,     3, AMR_OF(0,pulses[0]),  191, 176, 177,     4, AMR_OF(0,pulses[1]),  103, 123, 124, 125,     3, AMR_OF(0,pulses[2]),  188, 189, 190,     4, AMR_OF(0,pulses[3]),   99, 120, 121, 122,     3, AMR_OF(0,pulses[4]),  185, 186, 187,     4, AMR_OF(0,pulses[5]),  107, 133, 134, 135,     3, AMR_OF(0,pulses[6]),  198, 199, 184,     4, AMR_OF(0,pulses[7]),  119, 130, 131, 132,     3, AMR_OF(0,pulses[8]),  195, 196, 197,     4, AMR_OF(0,pulses[9]),  115, 143, 128, 129,     6, AMR_OF(1,p_lag),       64,  78,  76,  74,  72, 245,     4, AMR_OF(1,p_gain),      55,  51,  63,  94,     5, AMR_OF(1,fixed_gain),  59,  71,  67,  90, 110,     3, AMR_OF(1,pulses[0]),  192, 193, 194,     4, AMR_OF(1,pulses[1]),  102, 140, 141, 142,     3, AMR_OF(1,pulses[2]),  205, 206, 207,     4, AMR_OF(1,pulses[3]),   98, 137, 138, 139,     3, AMR_OF(1,pulses[4]),  202, 203, 204,     4, AMR_OF(1,pulses[5]),  106, 150, 151, 136,     3, AMR_OF(1,pulses[6]),  215, 200, 201,     4, AMR_OF(1,pulses[7]),  118, 147, 148, 149,     3, AMR_OF(1,pulses[8]),  212, 213, 214,     4, AMR_OF(1,pulses[9]),  114, 144, 145, 146,     9, AMR_OF(2,p_lag),       25,  39,  37,  35,  33,  47,  45,  43,  41,     4, AMR_OF(2,p_gain),      54,  50,  62,  93,     5, AMR_OF(2,fixed_gain),  58,  70,  66,  89, 109,     3, AMR_OF(2,pulses[0]),  209, 210, 211,     4, AMR_OF(2,pulses[1]),  101, 157, 158, 159,     3, AMR_OF(2,pulses[2]),  222, 223, 208,     4, AMR_OF(2,pulses[3]),   97, 154, 155, 156,     3, AMR_OF(2,pulses[4]),  219, 220, 221,     4, AMR_OF(2,pulses[5]),  105, 167, 152, 153,     3, AMR_OF(2,pulses[6]),  216, 217, 218,     4, AMR_OF(2,pulses[7]),  117, 164, 165, 166,     3, AMR_OF(2,pulses[8]),  229, 230, 231,     4, AMR_OF(2,pulses[9]),  113, 161, 162, 163,     6, AMR_OF(3,p_lag),       79,  77,  75,  73,  87, 244,     4, AMR_OF(3,p_gain),      53,  49,  61,  92,     5, AMR_OF(3,fixed_gain),  57,  69,  65,  88, 108,     3, AMR_OF(3,pulses[0]),  226, 227, 228,     4, AMR_OF(3,pulses[1]),  100, 174, 175, 160,     3, AMR_OF(3,pulses[2]),  239, 224, 225,     4, AMR_OF(3,pulses[3]),   96, 171, 172, 173,     3, AMR_OF(3,pulses[4]),  236, 237, 238,     4, AMR_OF(3,pulses[5]),  104, 168, 169, 170,     3, AMR_OF(3,pulses[6]),  233, 234, 235,     4, AMR_OF(3,pulses[7]),  116, 181, 182, 183,     3, AMR_OF(3,pulses[8]),  246, 247, 232,     4, AMR_OF(3,pulses[9]),  112, 178, 179, 180,     0}; /** * position of the bitmapping data for each packet type in * the AMRNBFrame */static const uint8_t * const amr_unpacking_bitmaps_per_mode[N_MODES] = {    order_MODE_4k75,    order_MODE_5k15,    order_MODE_5k9,    order_MODE_6k7,    order_MODE_7k4,    order_MODE_7k95,    order_MODE_10k2,    order_MODE_12k2,}; /** number of bytes for each mode */static const uint8_t frame_sizes_nb[N_MODES] = {    12, 13, 15, 17, 19, 20, 26, 31, 5}; /** * Base-5 representation for values 0-124 * * This is useful for decoding pulse positions in 10.2 kbit/s frames. * Safe values are provided for out of range positions 125-127. */static const uint8_t base_five_table[128][3] = { {0, 0, 0}, {0, 0, 1}, {0, 0, 2}, {0, 0, 3}, {0, 0, 4}, {0, 1, 0}, {0, 1, 1}, {0, 1, 2}, {0, 1, 3}, {0, 1, 4}, {0, 2, 0}, {0, 2, 1}, {0, 2, 2}, {0, 2, 3}, {0, 2, 4}, {0, 3, 0}, {0, 3, 1}, {0, 3, 2}, {0, 3, 3}, {0, 3, 4}, {0, 4, 0}, {0, 4, 1}, {0, 4, 2}, {0, 4, 3}, {0, 4, 4}, {1, 0, 0}, {1, 0, 1}, {1, 0, 2}, {1, 0, 3}, {1, 0, 4}, {1, 1, 0}, {1, 1, 1}, {1, 1, 2}, {1, 1, 3}, {1, 1, 4}, {1, 2, 0}, {1, 2, 1}, {1, 2, 2}, {1, 2, 3}, {1, 2, 4}, {1, 3, 0}, {1, 3, 1}, {1, 3, 2}, {1, 3, 3}, {1, 3, 4}, {1, 4, 0}, {1, 4, 1}, {1, 4, 2}, {1, 4, 3}, {1, 4, 4}, {2, 0, 0}, {2, 0, 1}, {2, 0, 2}, {2, 0, 3}, {2, 0, 4}, {2, 1, 0}, {2, 1, 1}, {2, 1, 2}, {2, 1, 3}, {2, 1, 4}, {2, 2, 0}, {2, 2, 1}, {2, 2, 2}, {2, 2, 3}, {2, 2, 4}, {2, 3, 0}, {2, 3, 1}, {2, 3, 2}, {2, 3, 3}, {2, 3, 4}, {2, 4, 0}, {2, 4, 1}, {2, 4, 2}, {2, 4, 3}, {2, 4, 4}, {3, 0, 0}, {3, 0, 1}, {3, 0, 2}, {3, 0, 3}, {3, 0, 4}, {3, 1, 0}, {3, 1, 1}, {3, 1, 2}, {3, 1, 3}, {3, 1, 4}, {3, 2, 0}, {3, 2, 1}, {3, 2, 2}, {3, 2, 3}, {3, 2, 4}, {3, 3, 0}, {3, 3, 1}, {3, 3, 2}, {3, 3, 3}, {3, 3, 4}, {3, 4, 0}, {3, 4, 1}, {3, 4, 2}, {3, 4, 3}, {3, 4, 4}, {4, 0, 0}, {4, 0, 1}, {4, 0, 2}, {4, 0, 3}, {4, 0, 4}, {4, 1, 0}, {4, 1, 1}, {4, 1, 2}, {4, 1, 3}, {4, 1, 4}, {4, 2, 0}, {4, 2, 1}, {4, 2, 2}, {4, 2, 3}, {4, 2, 4}, {4, 3, 0}, {4, 3, 1}, {4, 3, 2}, {4, 3, 3}, {4, 3, 4}, {4, 4, 0}, {4, 4, 1}, {4, 4, 2}, {4, 4, 3}, {4, 4, 4}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}}; /** * Values for the lsp vector from the 4th subframe of the * previous subframe values. * * @note: Taken from Decoder_amr_reset in Q15 using val/1000 */static const int8_t lsp_sub4_init[LP_FILTER_ORDER] = {    30, 26, 21, 15, 8, 0, -8, -15, -21, -26}; /** * Mean lsp values. * * @note: Taken from Decoder_amr_reset in Q15 */static const int16_t lsp_avg_init[LP_FILTER_ORDER] = {    1384, 2077, 3420, 5108, 6742, 8122, 9863, 11092, 12714, 13701}; // LSF tables // These are stored as integers to save space. The values are taken from// q_plsf_3.tab and q_plsf_5.tab in 3GPP TS 26.090. static const int16_t lsf_3_3_MODE_5k15[128][4] = {{  419,  163,  -30, -262}, { -455, -789,-1430, -721}, { 1006,  664,  269,   25},{  619,  260,  183,   96}, { -968,-1358, -388,  135}, { -693,  835,  456,  154},{ 1105,  703,  569,  363}, { 1625, 1326,  985,  748}, { -220,  219,   76, -208},{-1455,-1662,   49,  149}, { -964, -172, -752, -336}, {  625,  209, -250,  -66},{-1017, -838,   -2,  317}, {-2168,-1485, -138,  123}, {-1876,-2099, -521,   85},{ -967, -366, -695, -881}, { -921,-1011, -763, -949}, { -124, -256, -352, -660},{  178,  463,  354,  304}, {-1744, -591, -282,   79}, {-2249,  175,  867,  499},{ -138, -180, -181,  -21}, {-2291,-1241, -460, -520}, { -771,  451,  -10, -308},{  271,  -65,    4,  214}, { -279, -435,  -43, -348}, { -670,   35,  -65, -211},{  806,  535,   85,  297}, {   57,  239,  722,  493}, {  225,  661,  840,  547},{ -540, -376,   14,  349}, {  469,  721,  331,  162}, { -544, -752,  -62,  -10},{  398,  -88,  724,  701}, {  -19, -533,  -94,  601}, {  136,  -71, -681, -747},{ -166, -344,  261,  -50}, {  161,  -52,  485,  337}, {-1675,   50,  190,  -93},{-2282, -231, -194,  -82}, {  -95, -595, -154,  128}, {  894,  501,  588,  457},{ -345,  206,  122,  110}, { -631, -227, -569,    3}, {  408,  239,  397,  226},{ -197,   -2,  128,  491}, { 1281,  904,  292,  215}, {  538,  306,  259,  509},{ -677,-1047,   13,  321}, { -679, -588, -358, -212}, { -558,  243,  646,  479},{  486,  342,  634,  532}, {  107,  802,  331,  136}, { -112, -398,-1031, -286},{ -326, -705,  288,  272}, { 1299, 1144, 1178,  860}, { -423,  121, -385, -148},{ -295, -302, -834, -819}, {   16,  -24, -201, -476}, {  555,   91, -245,  294},{  -38, -379, -962,-1221}, {-1191,-1518, -273, -395}, { -390,-1013, -645,  573},{-1843,-1030,  505,  468}, {  744,  947,  609,  493}, { -689,-1172, -628, -135},{-1026,  195,  411,  196}, { 1582, 1147,  575,  337}, {-1239, -777, -648, -142},{  595,  825,  967,  735}, {-1206, -970,  -81, -342}, { -745,   13,  -72,  375},{  454,   19, 1407,  921}, {-1647, -172,  861,  562}, {  928, 1537, 1063,  740},{-2472, -952,  264,   82}, { -502, -965,-1334,  123}, {  867, 1236,  534,  171},{-2320, -460,  780,  363}, {-1190, -617,  252,  -61}, { -174,   34, 1011,  788},{-2333,  247,  423,  153}, {  -16, -355,  262,  449}, {-1576,-1073, -544, -371},{ -615, -305, 1051,  805}, {  687,  528,    6, -182}, {  935,  875, 1002,  809},{  199,  257,  126,   76}, { -584,-1138,  599,  556}, {-1105,-1391,-1591, -519},{ -977,-1325,  108,  347}, { -722, -975,  365,  101}, { -145,  681,  249, -153},{    0, -334, -570,  159}, {  412,  285, -336, -617}, { -953, -966,  887,  689},{-1251,   84, -185, -398}, { -592,  433, 1044,  653}, {   85,  329,  -40,  361},{ -433, -705,  466,  574}, { -154,  654,  592,  290}, { -167,   72,  349,  175},{  674,  297,  977,  720}, { 1235, 1204,  757,  488}, { -400, -269,  538,  372},{-1350,-1387,-1194,  -91}, { 1262,  876,  775,  700}, { -599,  -38, -430, -722},{ 1976, 1630,  991,  608}, {  111,  276, -226,  -96}, { -947, -388,  -11,   -7},{ -303, -531, -839,  338}, { 1734, 1710, 1405, 1013}, { -516, -855, -645,  210},{ -688, -416,  513,  230}, { -822, -637,-1146, -320}, { -952, -658, -694,  183},{ -114, -623,  818,  674}, { -191, -204,  731,  635}, {   51, 1221,  883,  576},{ -954, -431,  826,  598}, { -342, -755, -900, -407}, {-1126, -354, -206, -512},{ -547, -810, -357, -620}, {   66,  515,  -73, -410}, { -872, -945,-1444,-1227},{  191,  -17, -544, -231}, {-1540, -544, -901, -886}}; static const int16_t lsf_3_1_MODE_7k95[512][3] = {{ -890,-1550,-2541}, { -819, -970,  175}, { -826,-1234, -762},{ -599,  -22,  634}, { -811, -987, -902}, { -323,  203,   26},{ -383, -235, -781}, { -399, 1262,  906}, { -932,-1399,-1380},{ -624,   93,   87}, { -414, -539, -691}, {   37,  633,  510},{ -387, -476,-1330}, {  399,   66,  263}, { -407,  -49, -335},{ -417, 1041, 1865}, { -779,-1089,-1440}, { -746, -858,  832},{ -581, -759, -371}, { -673, -506, 2088}, { -560, -634,-1179},{  271,  241,   14}, { -438, -244, -397}, {  463, 1202, 1047},{ -606, -797,-1438}, {  -51, -323,  481}, { -224, -584, -527},{  494,  881,  682}, { -433, -306,-1002}, {  554,  659,  222},{  171, -160, -353}, {  681, 1798, 1565}, { -852,-1181,-1695},{ -336, -666,  114}, { -581, -756, -744}, { -195,  375,  497},{ -465, -804,-1098}, {  154,  282, -131}, {  -50, -191, -719},{  323,  732, 1542}, { -722, -819,-1404}, {  105, -250,  185},{ -178, -502, -742}, {  321,  510, 1111}, { -323, -567, -966},{  127,  484,  338}, { -160,   52, -338}, {  732, 1367, 1554},{ -626, -802,-1696}, { -286, -586,  676}, { -695, -343, -370},{ -490,  295, 1893}, { -630, -574,-1014}, {  -80,  645,  -69},{   -6, -318, -364}, {  782, 1450, 1038}, { -313, -733,-1395},{  120,   60,  477}, { -264, -585, -123}, {  711, 1245,  633},{  -91, -355,-1016}, {  771,  758,  261}, {  253,   81, -474},{  930, 2215, 1720}, { -808,-1099,-1925}, { -560, -782,  169},{ -804,-1074, -188}, { -626,  -55, 1405}, { -694, -716,-1194},{ -660,  354,  329}, { -514,  -55, -543}, {  366, 1033, 1182},{ -658, -959,-1357}, {  -55, -184,   93}, { -605, -286, -662},{  404,  449,  827}, { -286, -350,-1263}, {  628,  306,  227},{  -16,  147, -623}, {  186,  923, 2146}, { -674, -890,-1606},{ -443, -228,  339}, { -369, -790, -409}, {  231,   86, 1469},{ -448, -581,-1061}, {  594,  450, -177}, { -124, -170, -447},{  671, 1159, 1404}, { -476, -667,-1511}, {  -77, -138,  716},{ -177, -372, -381}, {  451,  934,  915}, { -250, -432, -822},{  272,  828,  446}, {   26,   19,  -31}, {  698, 1692, 2168},{ -646, -977,-1924}, { -179, -473,  268}, { -379, -745, -691},{   11,  127, 1033}, { -488, -917, -825}, {   61,  323,  135},{  147, -145, -686}, {  685,  786, 1682}, { -506, -848,-1297},{   35,   90,  222}, {  -23, -346, -670}, {  455,  591, 1287},{ -203, -593,-1086}, {  652,  352,  437}, {   39,   63, -457},{  841, 1265, 2105}, { -520, -882,-1584}, { -328, -711, 1421},{ -596, -342,  -70}, {  209,  173, 1928}, { -423, -598, -921},{  421,  605,  -38}, {   -2, -245, -127}, {  896, 1969, 1135},{ -379, -518,-1579}, {  173,  118,  753}, {  -55, -381,  -52},

Lines 1–500 of 1666.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t