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