• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 /*------------------------------------------------------------------------------
17  *
18  *  All table definitions used for the quantizer.
19  *
20  *----------------------------------------------------------------------------*/
21 
22 #ifndef APTXTABLES_H
23 #define APTXTABLES_H
24 
25 #include "AptxParameters.h"
26 
27 /* Quantisation threshold, logDelta increment and dither tables for 4-bit codes
28  */
29 static const int32_t dq4bit24_sl1[9] = {
30         -95044, 95044, 295844, 528780, 821332, 1226438, 1890540, 3344850, 6450664,
31 };
32 
33 static const int32_t q4incr24[9] = {
34         0, -17, 5, 30, 62, 105, 177, 334, 518,
35 };
36 
37 static const int32_t dq4dith24_sf1[9] = {
38         95044, 95044, 105754, 127180, 165372, 39736, 424366, 1029946, 2075866,
39 };
40 
41 static const int32_t dq4mLamb24[8] = {
42         0, -2678, -5357, -9548, 31409, -96158, -151395, -261480,
43 };
44 
45 /* Quantisation threshold, logDelta increment and dither tables for 5-bit codes
46  */
47 static const int32_t dq5bit24_sl1[17] = {
48         -45754,  45754,   138496,  234896,  337336,  448310,  570738,  708380,  866534,
49         1053262, 1281958, 1577438, 1993050, 2665984, 3900982, 5902844, 8897462,
50 };
51 
52 static const int32_t q5incr24[17] = {
53         0, -18, -8, 2, 13, 25, 38, 53, 70, 90, 115, 147, 192, 264, 398, 521, 521,
54 };
55 
56 static const int32_t dq5dith24_sf1[17] = {
57         45754,  45754,  46988,  49412,  53026,  57950,  64478,   73164,   84988,
58         101740, 126958, 168522, 247092, 425842, 809154, 1192708, 1801910,
59 };
60 
61 static const int32_t dq5mLamb24[16] = {
62         0,     -309,  -606,   -904,   -1231,  -1632,  -2172,  -2956,
63         -4188, -6305, -10391, -19643, -44688, -95828, -95889, -152301,
64 };
65 
66 /* Quantisation threshold, logDelta increment and dither tables for 6-bit codes
67  */
68 static const int32_t dq6bit24_sl1[33] = {
69         -21236,  21236,   63830,   106798,  150386,  194832,   240376,  287258,  335726,
70         386034,  438460,  493308,  550924,  611696,  676082,   744626,  817986,  896968,
71         982580,  1076118, 1179278, 1294344, 1424504, 1574386,  1751090, 1966260, 2240868,
72         2617662, 3196432, 4176450, 5658260, 7671068, 10380372,
73 };
74 
75 static const int32_t q6incr24[33] = {
76         0,  -21, -16, -12, -7,  -2,  3,   8,   13,  19,  24,  30,  36,  43,  50,  57,  65,
77         74, 83,  93,  104, 117, 131, 147, 166, 189, 219, 259, 322, 427, 521, 521, 521,
78 };
79 
80 static const int32_t dq6dith24_sf1[33] = {
81         21236, 21236, 21360, 21608,  21978,  22468,  23076,  23806,  24660,  25648,   26778,
82         28070, 29544, 31228, 33158,  35386,  37974,  41008,  44606,  48934,  54226,   60840,
83         69320, 80564, 96140, 119032, 155576, 221218, 357552, 622468, 859344, 1153464, 1555840,
84 };
85 
86 static const int32_t dq6mLamb24[32] = {
87         0,     -31,   -62,   -93,   -123,   -152,   -183,   -214,   -247,   -283,    -323,
88         -369,  -421,  -483,  -557,  -647,   -759,   -900,   -1082,  -1323,  -1654,   -2120,
89         -2811, -3894, -5723, -9136, -16411, -34084, -66229, -59219, -73530, -100594,
90 };
91 
92 /* Quantisation threshold, logDelta increment and dither tables for 9-bit codes
93  */
94 static const int32_t dq9bit24_sl1[257] = {
95         -2436,   2436,    7308,    12180,   17054,   21930,   26806,    31686,   36566,   41450,
96         46338,   51230,   56124,   61024,   65928,   70836,   75750,    80670,   85598,   90530,
97         95470,   100418,  105372,  110336,  115308,  120288,  125278,   130276,  135286,  140304,
98         145334,  150374,  155426,  160490,  165566,  170654,  175756,   180870,  185998,  191138,
99         196294,  201466,  206650,  211850,  217068,  222300,  227548,   232814,  238096,  243396,
100         248714,  254050,  259406,  264778,  270172,  275584,  281018,   286470,  291944,  297440,
101         302956,  308496,  314056,  319640,  325248,  330878,  336532,   342212,  347916,  353644,
102         359398,  365178,  370986,  376820,  382680,  388568,  394486,   400430,  406404,  412408,
103         418442,  424506,  430600,  436726,  442884,  449074,  455298,   461554,  467844,  474168,
104         480528,  486922,  493354,  499820,  506324,  512866,  519446,   526064,  532722,  539420,
105         546160,  552940,  559760,  566624,  573532,  580482,  587478,   594520,  601606,  608740,
106         615920,  623148,  630426,  637754,  645132,  652560,  660042,   667576,  675164,  682808,
107         690506,  698262,  706074,  713946,  721876,  729868,  737920,   746036,  754216,  762460,
108         770770,  779148,  787594,  796108,  804694,  813354,  822086,   830892,  839774,  848736,
109         857776,  866896,  876100,  885386,  894758,  904218,  913766,   923406,  933138,  942964,
110         952886,  962908,  973030,  983254,  993582,  1004020, 1014566,  1025224, 1035996, 1046886,
111         1057894, 1069026, 1080284, 1091670, 1103186, 1114838, 1126628,  1138558, 1150634, 1162858,
112         1175236, 1187768, 1200462, 1213320, 1226346, 1239548, 1252928,  1266490, 1280242, 1294188,
113         1308334, 1322688, 1337252, 1352034, 1367044, 1382284, 1397766,  1413494, 1429478, 1445728,
114         1462252, 1479058, 1496158, 1513562, 1531280, 1549326, 1567710,  1586446, 1605550, 1625034,
115         1644914, 1665208, 1685932, 1707108, 1728754, 1750890, 1773542,  1796732, 1820488, 1844840,
116         1869816, 1895452, 1921780, 1948842, 1976680, 2005338, 2034868,  2065322, 2096766, 2129260,
117         2162880, 2197708, 2233832, 2271352, 2310384, 2351050, 2393498,  2437886, 2484404, 2533262,
118         2584710, 2639036, 2696578, 2757738, 2822998, 2892940, 2968278,  3049896, 3138912, 3236760,
119         3345312, 3467068, 3605434, 3765154, 3952904, 4177962, 4452178,  4787134, 5187290, 5647128,
120         6159120, 6720518, 7332904, 8000032, 8726664, 9518152, 10380372,
121 };
122 
123 static const int32_t q9incr24[257] = {
124         0,   -22, -21, -21, -20, -20, -19, -19, -18, -18, -17, -17, -16, -16, -15, -14, -14, -13,
125         -13, -12, -12, -11, -11, -10, -10, -9,  -9,  -8,  -7,  -7,  -6,  -6,  -5,  -5,  -4,  -4,
126         -3,  -3,  -2,  -1,  -1,  0,   0,   1,   1,   2,   2,   3,   4,   4,   5,   5,   6,   6,
127         7,   8,   8,   9,   9,   10,  11,  11,  12,  12,  13,  14,  14,  15,  15,  16,  17,  17,
128         18,  19,  19,  20,  20,  21,  22,  22,  23,  24,  24,  25,  26,  26,  27,  28,  28,  29,
129         30,  30,  31,  32,  33,  33,  34,  35,  35,  36,  37,  38,  38,  39,  40,  41,  41,  42,
130         43,  44,  44,  45,  46,  47,  48,  48,  49,  50,  51,  52,  52,  53,  54,  55,  56,  57,
131         58,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  69,  70,  71,  72,  73,
132         74,  75,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  89,  90,  91,  92,  93,
133         94,  96,  97,  98,  99,  101, 102, 103, 105, 106, 107, 109, 110, 112, 113, 115, 116, 118,
134         119, 121, 122, 124, 125, 127, 129, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149,
135         151, 153, 155, 158, 160, 162, 164, 167, 169, 172, 174, 177, 180, 182, 185, 188, 191, 194,
136         197, 201, 204, 208, 211, 215, 219, 223, 227, 232, 236, 241, 246, 251, 257, 263, 269, 275,
137         283, 290, 298, 307, 317, 327, 339, 352, 367, 384, 404, 429, 458, 494, 522, 522, 522, 522,
138         522, 522, 522, 522, 522,
139 };
140 
141 static const int32_t dq9dith24_sf1[257] = {
142         2436,   2436,   2436,   2436,   2438,   2438,   2438,   2440,   2442,   2442,   2444,
143         2446,   2448,   2450,   2454,   2456,   2458,   2462,   2464,   2468,   2472,   2476,
144         2480,   2484,   2488,   2492,   2498,   2502,   2506,   2512,   2518,   2524,   2528,
145         2534,   2540,   2548,   2554,   2560,   2568,   2574,   2582,   2588,   2596,   2604,
146         2612,   2620,   2628,   2636,   2646,   2654,   2664,   2672,   2682,   2692,   2702,
147         2712,   2722,   2732,   2742,   2752,   2764,   2774,   2786,   2798,   2810,   2822,
148         2834,   2846,   2858,   2870,   2884,   2896,   2910,   2924,   2938,   2952,   2966,
149         2980,   2994,   3010,   3024,   3040,   3056,   3070,   3086,   3104,   3120,   3136,
150         3154,   3170,   3188,   3206,   3224,   3242,   3262,   3280,   3300,   3320,   3338,
151         3360,   3380,   3400,   3422,   3442,   3464,   3486,   3508,   3532,   3554,   3578,
152         3602,   3626,   3652,   3676,   3702,   3728,   3754,   3780,   3808,   3836,   3864,
153         3892,   3920,   3950,   3980,   4010,   4042,   4074,   4106,   4138,   4172,   4206,
154         4240,   4276,   4312,   4348,   4384,   4422,   4460,   4500,   4540,   4580,   4622,
155         4664,   4708,   4752,   4796,   4842,   4890,   4938,   4986,   5036,   5086,   5138,
156         5192,   5246,   5300,   5358,   5416,   5474,   5534,   5596,   5660,   5726,   5792,
157         5860,   5930,   6002,   6074,   6150,   6226,   6306,   6388,   6470,   6556,   6644,
158         6736,   6828,   6924,   7022,   7124,   7228,   7336,   7448,   7562,   7680,   7802,
159         7928,   8058,   8192,   8332,   8476,   8624,   8780,   8940,   9106,   9278,   9458,
160         9644,   9840,   10042,  10252,  10472,  10702,  10942,  11194,  11458,  11734,  12024,
161         12328,  12648,  12986,  13342,  13720,  14118,  14540,  14990,  15466,  15976,  16520,
162         17102,  17726,  18398,  19124,  19908,  20760,  21688,  22702,  23816,  25044,  26404,
163         27922,  29622,  31540,  33720,  36222,  39116,  42502,  46514,  51334,  57218,  64536,
164         73830,  85890,  101860, 123198, 151020, 183936, 216220, 243618, 268374, 293022, 319362,
165         347768, 378864, 412626, 449596,
166 };
167 
168 static const int32_t dq9mLamb24[256] = {
169         0,     0,     0,     -1,    0,     0,     -1,    -1,    0,     -1,    -1,    -1,    -1,
170         -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -2,
171         -1,    -1,    -2,    -2,    -2,    -1,    -2,    -2,    -2,    -2,    -2,    -2,    -2,
172         -2,    -2,    -2,    -2,    -2,    -2,    -2,    -2,    -3,    -2,    -3,    -2,    -3,
173         -3,    -3,    -3,    -3,    -3,    -3,    -3,    -3,    -3,    -3,    -3,    -3,    -3,
174         -3,    -3,    -3,    -3,    -4,    -3,    -4,    -4,    -4,    -4,    -4,    -4,    -4,
175         -4,    -4,    -4,    -4,    -4,    -4,    -5,    -4,    -4,    -5,    -4,    -5,    -5,
176         -5,    -5,    -5,    -5,    -5,    -5,    -5,    -6,    -5,    -5,    -6,    -5,    -6,
177         -6,    -6,    -6,    -6,    -6,    -6,    -6,    -7,    -6,    -7,    -7,    -7,    -7,
178         -7,    -7,    -7,    -7,    -7,    -8,    -8,    -8,    -8,    -8,    -8,    -8,    -9,
179         -9,    -9,    -9,    -9,    -9,    -9,    -10,   -10,   -10,   -10,   -10,   -11,   -11,
180         -11,   -11,   -11,   -12,   -12,   -12,   -12,   -13,   -13,   -13,   -14,   -14,   -14,
181         -15,   -15,   -15,   -15,   -16,   -16,   -17,   -17,   -17,   -18,   -18,   -18,   -19,
182         -19,   -20,   -21,   -21,   -22,   -22,   -23,   -23,   -24,   -25,   -26,   -26,   -27,
183         -28,   -29,   -30,   -31,   -32,   -33,   -34,   -35,   -36,   -37,   -39,   -40,   -42,
184         -43,   -45,   -47,   -49,   -51,   -53,   -55,   -58,   -60,   -63,   -66,   -69,   -73,
185         -76,   -80,   -85,   -89,   -95,   -100,  -106,  -113,  -119,  -128,  -136,  -146,  -156,
186         -168,  -182,  -196,  -213,  -232,  -254,  -279,  -307,  -340,  -380,  -425,  -480,  -545,
187         -626,  -724,  -847,  -1003, -1205, -1471, -1830, -2324, -3015, -3993, -5335, -6956, -8229,
188         -8071, -6850, -6189, -6162, -6585, -7102, -7774, -8441, -9243,
189 };
190 
191 /* Array of structures containing subband parameters. */
192 static const SubbandParameters subbandParameters[NUMSUBBANDS] = {
193         /* LL band */
194         {0, dq9bit24_sl1, 0, dq9dith24_sf1, dq9mLamb24, q9incr24, 9, (18 * 256) - 1, -20, 24},
195 
196         /* LH band */
197         {0, dq6bit24_sl1, 0, dq6dith24_sf1, dq6mLamb24, q6incr24, 6, (21 * 256) - 1, -23, 12},
198 
199         /* HL band */
200         {0, dq4bit24_sl1, 0, dq4dith24_sf1, dq4mLamb24, q4incr24, 4, (23 * 256) - 1, -25, 6},
201 
202         /* HH band */
203         {0, dq5bit24_sl1, 0, dq5dith24_sf1, dq5mLamb24, q5incr24, 5, (22 * 256) - 1, -24, 12}};
204 
205 #endif  // APTXTABLES_H
206