-
Notifications
You must be signed in to change notification settings - Fork 0
/
computed.h
27 lines (26 loc) · 23.9 KB
/
computed.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//File created with precompute.py
const unsigned int n_fft = 1024;
const unsigned int n_mels = 48;
const unsigned int n_mfcc = 13;
const unsigned short hanning[1024] = {0, 0, 0, 0, 1, 1, 2, 3, 4, 6, 7, 9, 11, 13, 15, 17, 19, 22, 24, 27, 30, 33, 37, 40, 44, 48, 52, 56, 60, 64, 69, 73, 78, 83, 88, 94, 99, 105, 110, 116, 122, 128, 135, 141, 148, 155, 162, 169, 176, 183, 191, 198, 206, 214, 222, 231, 239, 247, 256, 265, 274, 283, 292, 302, 311, 321, 331, 341, 351, 361, 372, 382, 393, 404, 415, 426, 437, 448, 460, 471, 483, 495, 507, 519, 532, 544, 557, 569, 582, 595, 608, 622, 635, 648, 662, 676, 690, 704, 718, 732, 747, 761, 776, 791, 806, 821, 836, 851, 866, 882, 898, 913, 929, 945, 961, 978, 994, 1010, 1027, 1044, 1061, 1077, 1095, 1112, 1129, 1146, 1164, 1181, 1199, 1217, 1235, 1253, 1271, 1289, 1308, 1326, 1345, 1363, 1382, 1401, 1420, 1439, 1458, 1478, 1497, 1517, 1536, 1556, 1576, 1595, 1615, 1635, 1656, 1676, 1696, 1716, 1737, 1758, 1778, 1799, 1820, 1841, 1862, 1883, 1904, 1925, 1947, 1968, 1990, 2011, 2033, 2055, 2077, 2098, 2120, 2143, 2165, 2187, 2209, 2231, 2254, 2276, 2299, 2322, 2344, 2367, 2390, 2413, 2436, 2459, 2482, 2505, 2528, 2551, 2575, 2598, 2621, 2645, 2668, 2692, 2716, 2739, 2763, 2787, 2811, 2835, 2858, 2882, 2906, 2931, 2955, 2979, 3003, 3027, 3052, 3076, 3100, 3125, 3149, 3174, 3198, 3223, 3247, 3272, 3296, 3321, 3346, 3370, 3395, 3420, 3445, 3470, 3494, 3519, 3544, 3569, 3594, 3619, 3644, 3669, 3694, 3719, 3744, 3769, 3794, 3819, 3844, 3869, 3895, 3920, 3945, 3970, 3995, 4020, 4045, 4070, 4096, 4121, 4146, 4171, 4196, 4221, 4246, 4271, 4296, 4322, 4347, 4372, 4397, 4422, 4447, 4472, 4497, 4522, 4547, 4572, 4597, 4622, 4647, 4672, 4697, 4721, 4746, 4771, 4796, 4821, 4845, 4870, 4895, 4919, 4944, 4968, 4993, 5017, 5042, 5066, 5091, 5115, 5139, 5164, 5188, 5212, 5236, 5260, 5285, 5309, 5333, 5356, 5380, 5404, 5428, 5452, 5475, 5499, 5523, 5546, 5570, 5593, 5616, 5640, 5663, 5686, 5709, 5732, 5755, 5778, 5801, 5824, 5847, 5869, 5892, 5915, 5937, 5960, 5982, 6004, 6026, 6048, 6071, 6093, 6114, 6136, 6158, 6180, 6201, 6223, 6244, 6266, 6287, 6308, 6329, 6350, 6371, 6392, 6413, 6433, 6454, 6475, 6495, 6515, 6535, 6556, 6576, 6596, 6615, 6635, 6655, 6674, 6694, 6713, 6733, 6752, 6771, 6790, 6809, 6828, 6846, 6865, 6883, 6902, 6920, 6938, 6956, 6974, 6992, 7010, 7027, 7045, 7062, 7079, 7096, 7114, 7130, 7147, 7164, 7181, 7197, 7213, 7230, 7246, 7262, 7278, 7293, 7309, 7325, 7340, 7355, 7370, 7385, 7400, 7415, 7430, 7444, 7459, 7473, 7487, 7501, 7515, 7529, 7543, 7556, 7569, 7583, 7596, 7609, 7622, 7634, 7647, 7659, 7672, 7684, 7696, 7708, 7720, 7731, 7743, 7754, 7765, 7776, 7787, 7798, 7809, 7819, 7830, 7840, 7850, 7860, 7870, 7880, 7889, 7899, 7908, 7917, 7926, 7935, 7944, 7952, 7960, 7969, 7977, 7985, 7993, 8000, 8008, 8015, 8022, 8029, 8036, 8043, 8050, 8056, 8063, 8069, 8075, 8081, 8086, 8092, 8097, 8103, 8108, 8113, 8118, 8122, 8127, 8131, 8135, 8139, 8143, 8147, 8151, 8154, 8158, 8161, 8164, 8167, 8169, 8172, 8174, 8176, 8178, 8180, 8182, 8184, 8185, 8187, 8188, 8189, 8190, 8190, 8191, 8191, 8191, 8192, 8191, 8191, 8191, 8190, 8190, 8189, 8188, 8187, 8185, 8184, 8182, 8180, 8178, 8176, 8174, 8172, 8169, 8167, 8164, 8161, 8158, 8154, 8151, 8147, 8143, 8139, 8135, 8131, 8127, 8122, 8118, 8113, 8108, 8103, 8097, 8092, 8086, 8081, 8075, 8069, 8063, 8056, 8050, 8043, 8036, 8029, 8022, 8015, 8008, 8000, 7993, 7985, 7977, 7969, 7960, 7952, 7944, 7935, 7926, 7917, 7908, 7899, 7889, 7880, 7870, 7860, 7850, 7840, 7830, 7819, 7809, 7798, 7787, 7776, 7765, 7754, 7743, 7731, 7720, 7708, 7696, 7684, 7672, 7659, 7647, 7634, 7622, 7609, 7596, 7583, 7569, 7556, 7543, 7529, 7515, 7501, 7487, 7473, 7459, 7444, 7430, 7415, 7400, 7385, 7370, 7355, 7340, 7325, 7309, 7293, 7278, 7262, 7246, 7230, 7213, 7197, 7181, 7164, 7147, 7130, 7114, 7096, 7079, 7062, 7045, 7027, 7010, 6992, 6974, 6956, 6938, 6920, 6902, 6883, 6865, 6846, 6828, 6809, 6790, 6771, 6752, 6733, 6713, 6694, 6674, 6655, 6635, 6615, 6596, 6576, 6556, 6535, 6515, 6495, 6475, 6454, 6433, 6413, 6392, 6371, 6350, 6329, 6308, 6287, 6266, 6244, 6223, 6201, 6180, 6158, 6136, 6114, 6093, 6071, 6048, 6026, 6004, 5982, 5960, 5937, 5915, 5892, 5869, 5847, 5824, 5801, 5778, 5755, 5732, 5709, 5686, 5663, 5640, 5616, 5593, 5570, 5546, 5523, 5499, 5475, 5452, 5428, 5404, 5380, 5356, 5333, 5309, 5285, 5260, 5236, 5212, 5188, 5164, 5139, 5115, 5091, 5066, 5042, 5017, 4993, 4968, 4944, 4919, 4895, 4870, 4845, 4821, 4796, 4771, 4746, 4721, 4697, 4672, 4647, 4622, 4597, 4572, 4547, 4522, 4497, 4472, 4447, 4422, 4397, 4372, 4347, 4322, 4296, 4271, 4246, 4221, 4196, 4171, 4146, 4121, 4096, 4070, 4045, 4020, 3995, 3970, 3945, 3920, 3895, 3869, 3844, 3819, 3794, 3769, 3744, 3719, 3694, 3669, 3644, 3619, 3594, 3569, 3544, 3519, 3494, 3470, 3445, 3420, 3395, 3370, 3346, 3321, 3296, 3272, 3247, 3223, 3198, 3174, 3149, 3125, 3100, 3076, 3052, 3027, 3003, 2979, 2955, 2931, 2906, 2882, 2858, 2835, 2811, 2787, 2763, 2739, 2716, 2692, 2668, 2645, 2621, 2598, 2575, 2551, 2528, 2505, 2482, 2459, 2436, 2413, 2390, 2367, 2344, 2322, 2299, 2276, 2254, 2231, 2209, 2187, 2165, 2143, 2120, 2098, 2077, 2055, 2033, 2011, 1990, 1968, 1947, 1925, 1904, 1883, 1862, 1841, 1820, 1799, 1778, 1758, 1737, 1716, 1696, 1676, 1656, 1635, 1615, 1595, 1576, 1556, 1536, 1517, 1497, 1478, 1458, 1439, 1420, 1401, 1382, 1363, 1345, 1326, 1308, 1289, 1271, 1253, 1235, 1217, 1199, 1181, 1164, 1146, 1129, 1112, 1095, 1077, 1061, 1044, 1027, 1010, 994, 978, 961, 945, 929, 913, 898, 882, 866, 851, 836, 821, 806, 791, 776, 761, 747, 732, 718, 704, 690, 676, 662, 648, 635, 622, 608, 595, 582, 569, 557, 544, 532, 519, 507, 495, 483, 471, 460, 448, 437, 426, 415, 404, 393, 382, 372, 361, 351, 341, 331, 321, 311, 302, 292, 283, 274, 265, 256, 247, 239, 231, 222, 214, 206, 198, 191, 183, 176, 169, 162, 155, 148, 141, 135, 128, 122, 116, 110, 105, 99, 94, 88, 83, 78, 73, 69, 64, 60, 56, 52, 48, 44, 40, 37, 33, 30, 27, 24, 22, 19, 17, 15, 13, 11, 9, 7, 6, 4, 3, 2, 1, 1, 0, 0, 0};
const unsigned short sin_data[256] = {0, 403, 807, 1211, 1614, 2018, 2421, 2824, 3228, 3631, 4034, 4437, 4839, 5242, 5644, 6046, 6448, 6850, 7251, 7652, 8053, 8453, 8854, 9253, 9653, 10052, 10451, 10849, 11247, 11644, 12042, 12438, 12834, 13230, 13625, 14020, 14414, 14807, 15200, 15593, 15984, 16376, 16766, 17156, 17545, 17934, 18322, 18709, 19096, 19482, 19867, 20251, 20634, 21017, 21399, 21780, 22161, 22540, 22919, 23297, 23673, 24049, 24425, 24799, 25172, 25544, 25915, 26286, 26655, 27023, 27391, 27757, 28122, 28486, 28849, 29211, 29572, 29931, 30290, 30647, 31004, 31359, 31713, 32065, 32417, 32767, 33116, 33464, 33810, 34155, 34499, 34842, 35183, 35523, 35862, 36199, 36535, 36869, 37202, 37534, 37864, 38193, 38520, 38846, 39170, 39493, 39815, 40134, 40453, 40770, 41085, 41399, 41711, 42021, 42330, 42638, 42944, 43248, 43550, 43851, 44150, 44448, 44743, 45038, 45330, 45621, 45910, 46197, 46482, 46766, 47048, 47328, 47606, 47883, 48158, 48430, 48701, 48971, 49238, 49504, 49767, 50029, 50289, 50547, 50802, 51057, 51309, 51559, 51807, 52053, 52298, 52540, 52780, 53018, 53255, 53489, 53721, 53951, 54180, 54406, 54630, 54852, 55071, 55289, 55505, 55718, 55930, 56139, 56346, 56552, 56754, 56955, 57154, 57350, 57545, 57737, 57927, 58114, 58300, 58483, 58664, 58843, 59019, 59194, 59366, 59536, 59703, 59869, 60032, 60193, 60351, 60507, 60661, 60813, 60962, 61109, 61254, 61396, 61536, 61674, 61809, 61942, 62073, 62201, 62327, 62451, 62572, 62691, 62807, 62921, 63033, 63142, 63249, 63353, 63455, 63555, 63652, 63747, 63840, 63930, 64017, 64102, 64185, 64265, 64343, 64419, 64492, 64562, 64630, 64696, 64759, 64820, 64878, 64934, 64987, 65038, 65086, 65132, 65175, 65216, 65255, 65291, 65324, 65356, 65384, 65410, 65434, 65455, 65474, 65490, 65503, 65515, 65523, 65530, 65533, 65535};
const unsigned int filter_bank_scale = 17338;
const unsigned char even_mel_weights[513] = {0, 80, 161, 242, 186, 105, 24, 56, 137, 218, 211, 130, 49, 31, 112, 193, 236, 155, 74, 6, 87, 168, 249, 180, 99, 18, 62, 143, 224, 205, 124, 43, 37, 118, 199, 230, 149, 68, 12, 93, 174, 254, 174, 93, 12, 64, 141, 217, 196, 125, 54, 13, 70, 127, 184, 181, 128, 75, 21, 25, 69, 112, 155, 168, 128, 88, 47, 7, 26, 59, 92, 124, 157, 130, 100, 69, 39, 8, 17, 42, 67, 91, 116, 136, 113, 90, 66, 43, 20, 1, 20, 39, 57, 76, 95, 113, 109, 91, 74, 57, 39, 22, 4, 10, 24, 38, 52, 66, 80, 94, 100, 87, 74, 61, 48, 34, 21, 8, 3, 14, 25, 35, 46, 57, 67, 78, 89, 82, 72, 63, 53, 43, 33, 23, 13, 3, 5, 13, 21, 29, 37, 45, 53, 61, 69, 77, 72, 65, 57, 50, 42, 35, 27, 20, 12, 5, 1, 8, 14, 20, 26, 32, 38, 44, 50, 56, 62, 68, 62, 57, 51, 45, 40, 34, 28, 23, 17, 11, 6, 0, 4, 8, 13, 18, 22, 27, 31, 36, 41, 45, 50, 54, 59, 55, 51, 47, 42, 38, 34, 30, 25, 21, 17, 12, 8, 4, 0, 3, 6, 10, 13, 17, 20, 24, 27, 31, 34, 38, 41, 45, 48, 51, 48, 45, 42, 38, 35, 32, 29, 25, 22, 19, 16, 12, 9, 6, 3, 0, 2, 5, 7, 10, 13, 15, 18, 21, 23, 26, 28, 31, 34, 36, 39, 42, 44, 43, 40, 38, 35, 33, 30, 28, 26, 23, 21, 18, 16, 13, 11, 8, 6, 3, 1, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 38, 36, 34, 32, 30, 28, 27, 25, 23, 21, 19, 17, 15, 14, 12, 10, 8, 6, 4, 2, 1, 0, 2, 3, 5, 6, 8, 9, 11, 12, 14, 15, 17, 18, 20, 21, 23, 24, 26, 27, 29, 30, 32, 33, 33, 31, 30, 29, 27, 26, 24, 23, 22, 20, 19, 17, 16, 15, 13, 12, 10, 9, 8, 6, 5, 3, 2, 1, 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 12, 13, 14, 15, 16, 17, 18, 18, 19, 20, 21, 22, 23, 24, 24, 25, 25, 24, 23, 22, 21, 21, 20, 19, 18, 17, 17, 16, 15, 14, 13, 13, 12, 11, 10, 9, 9, 8, 7, 6, 5, 5, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
const unsigned char odd_mel_weights[513] = {0, 0, 0, 0, 68, 149, 230, 199, 118, 37, 43, 124, 205, 224, 143, 62, 18, 99, 180, 248, 167, 87, 6, 74, 155, 236, 192, 111, 30, 50, 131, 211, 217, 136, 55, 25, 106, 187, 242, 161, 80, 0, 80, 161, 241, 186, 106, 26, 43, 109, 175, 212, 150, 89, 27, 27, 76, 126, 176, 169, 122, 76, 29, 13, 51, 88, 126, 163, 142, 107, 72, 37, 2, 26, 55, 83, 112, 140, 129, 103, 76, 50, 23, 2, 23, 45, 66, 88, 109, 127, 107, 87, 67, 47, 27, 7, 10, 26, 42, 59, 75, 91, 107, 101, 86, 71, 55, 40, 25, 10, 3, 16, 28, 40, 52, 65, 77, 89, 93, 82, 70, 59, 47, 36, 24, 13, 2, 7, 16, 26, 35, 44, 53, 63, 72, 81, 79, 70, 61, 53, 44, 35, 27, 18, 9, 1, 5, 12, 19, 26, 33, 40, 47, 54, 61, 69, 71, 65, 58, 52, 45, 39, 32, 25, 19, 12, 6, 0, 5, 10, 16, 21, 26, 31, 37, 42, 47, 53, 58, 63, 59, 54, 49, 44, 39, 34, 30, 25, 20, 15, 10, 5, 0, 3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 52, 48, 44, 40, 37, 33, 29, 25, 22, 18, 14, 11, 7, 3, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 45, 42, 39, 37, 34, 31, 28, 25, 23, 20, 17, 14, 11, 8, 6, 3, 0, 1, 4, 6, 8, 11, 13, 15, 17, 20, 22, 24, 27, 29, 31, 33, 36, 38, 40, 41, 39, 37, 34, 32, 30, 28, 26, 24, 22, 20, 17, 15, 13, 11, 9, 7, 5, 2, 0, 1, 2, 4, 6, 7, 9, 11, 13, 14, 16, 18, 20, 21, 23, 25, 26, 28, 30, 32, 33, 35, 35, 34, 32, 31, 29, 27, 26, 24, 23, 21, 19, 18, 16, 15, 13, 11, 10, 8, 7, 5, 3, 2, 0, 0, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 30, 29, 27, 26, 25, 24, 23, 21, 20, 19, 18, 16, 15, 14, 13, 12, 10, 9, 8, 7, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 26, 25, 24, 23, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22, 23, 23, 23, 22, 22, 21, 20, 20, 19, 18, 18, 17, 16, 15, 15, 14, 13, 13, 12, 11, 11, 10, 9, 9, 8, 7, 6, 6, 5, 4, 4, 3, 2, 2, 1, 0, 0};
const unsigned char even_mel_indicies[513] = {0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 18, 18, 18, 18, 18, 18, 18, 18, 18, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
const unsigned char odd_mel_indicies[513] = {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 13, 13, 13, 15, 15, 15, 15, 15, 15, 15, 17, 17, 17, 17, 17, 17, 17, 17, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0};
const float dct_basis[13][48] = {
{0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, 0.14433756f, },
{0.20401485f, 0.20314124f, 0.20139773f, 0.19879180f, 0.19533461f, 0.19104099f, 0.18592930f, 0.18002142f, 0.17334267f, 0.16592163f, 0.15779008f, 0.14898288f, 0.13953769f, 0.12949498f, 0.11889777f, 0.10779139f, 0.09622346f, 0.08424345f, 0.07190273f, 0.05925410f, 0.04635175f, 0.03325091f, 0.02000766f, 0.00667876f, -0.00667876f, -0.02000766f, -0.03325091f, -0.04635175f, -0.05925410f, -0.07190273f, -0.08424345f, -0.09622346f, -0.10779139f, -0.11889777f, -0.12949498f, -0.13953769f, -0.14898288f, -0.15779008f, -0.16592163f, -0.17334267f, -0.18002142f, -0.18592930f, -0.19104099f, -0.19533461f, -0.19879180f, -0.20139773f, -0.20314124f, -0.20401485f, },
{0.20368712f, 0.20020196f, 0.19329131f, 0.18307340f, 0.16972303f, 0.15346865f, 0.13458841f, 0.11340531f, 0.09028181f, 0.06561356f, 0.03982265f, 0.01335035f, -0.01335035f, -0.03982265f, -0.06561356f, -0.09028181f, -0.11340531f, -0.13458841f, -0.15346865f, -0.16972303f, -0.18307340f, -0.19329131f, -0.20020196f, -0.20368712f, -0.20368712f, -0.20020196f, -0.19329131f, -0.18307340f, -0.16972303f, -0.15346865f, -0.13458841f, -0.11340531f, -0.09028181f, -0.06561356f, -0.03982265f, -0.01335035f, 0.01335035f, 0.03982265f, 0.06561356f, 0.09028181f, 0.11340531f, 0.13458841f, 0.15346865f, 0.16972303f, 0.18307340f, 0.19329131f, 0.20020196f, 0.20368712f, },
{0.20314124f, 0.19533461f, 0.18002144f, 0.15779009f, 0.12949499f, 0.09622345f, 0.05925410f, 0.02000767f, -0.02000767f, -0.05925410f, -0.09622345f, -0.12949499f, -0.15779009f, -0.18002144f, -0.19533461f, -0.20314124f, -0.20314124f, -0.19533461f, -0.18002144f, -0.15779009f, -0.12949499f, -0.09622345f, -0.05925412f, -0.02000767f, 0.02000767f, 0.05925412f, 0.09622345f, 0.12949499f, 0.15779009f, 0.18002144f, 0.19533461f, 0.20314124f, 0.20314124f, 0.19533461f, 0.18002144f, 0.15779009f, 0.12949499f, 0.09622345f, 0.05925410f, 0.02000767f, -0.02000767f, -0.05925410f, -0.09622345f, -0.12949499f, -0.15779009f, -0.18002144f, -0.19533461f, -0.20314124f, },
{0.20237784f, 0.18858613f, 0.16194259f, 0.12426291f, 0.07811494f, 0.02664354f, -0.02664354f, -0.07811494f, -0.12426291f, -0.16194259f, -0.18858613f, -0.20237784f, -0.20237784f, -0.18858613f, -0.16194259f, -0.12426291f, -0.07811494f, -0.02664354f, 0.02664354f, 0.07811494f, 0.12426291f, 0.16194259f, 0.18858613f, 0.20237784f, 0.20237784f, 0.18858613f, 0.16194259f, 0.12426291f, 0.07811494f, 0.02664354f, -0.02664354f, -0.07811494f, -0.12426291f, -0.16194259f, -0.18858613f, -0.20237784f, -0.20237784f, -0.18858613f, -0.16194259f, -0.12426291f, -0.07811494f, -0.02664354f, 0.02664354f, 0.07811494f, 0.12426291f, 0.16194259f, 0.18858613f, 0.20237784f, },
{0.20139773f, 0.18002144f, 0.13953769f, 0.08424348f, 0.02000766f, -0.04635175f, -0.10779139f, -0.15779011f, -0.19104101f, -0.20401485f, -0.19533463f, -0.16592163f, -0.11889777f, -0.05925412f, 0.00667875f, 0.07190274f, 0.12949498f, 0.17334267f, 0.19879180f, 0.20314124f, 0.18592930f, 0.14898290f, 0.09622346f, 0.03325090f, -0.03325090f, -0.09622346f, -0.14898290f, -0.18592930f, -0.20314124f, -0.19879180f, -0.17334267f, -0.12949498f, -0.07190274f, -0.00667875f, 0.05925412f, 0.11889777f, 0.16592163f, 0.19533463f, 0.20401485f, 0.19104101f, 0.15779011f, 0.10779139f, 0.04635175f, -0.02000766f, -0.08424348f, -0.13953769f, -0.18002144f, -0.20139773f, },
{0.20020196f, 0.16972302f, 0.11340530f, 0.03982264f, -0.03982264f, -0.11340530f, -0.16972302f, -0.20020196f, -0.20020196f, -0.16972303f, -0.11340530f, -0.03982264f, 0.03982264f, 0.11340530f, 0.16972303f, 0.20020196f, 0.20020196f, 0.16972302f, 0.11340530f, 0.03982264f, -0.03982264f, -0.11340530f, -0.16972302f, -0.20020196f, -0.20020196f, -0.16972302f, -0.11340530f, -0.03982264f, 0.03982264f, 0.11340530f, 0.16972302f, 0.20020196f, 0.20020196f, 0.16972303f, 0.11340530f, 0.03982264f, -0.03982264f, -0.11340530f, -0.16972303f, -0.20020196f, -0.20020196f, -0.16972302f, -0.11340530f, -0.03982264f, 0.03982264f, 0.11340530f, 0.16972302f, 0.20020196f, },
{0.19879180f, 0.15779008f, 0.08424346f, -0.00667875f, -0.09622346f, -0.16592164f, -0.20139772f, -0.19533464f, -0.14898288f, -0.07190274f, 0.02000766f, 0.10779140f, 0.17334267f, 0.20314121f, 0.19104098f, 0.13953772f, 0.05925412f, -0.03325089f, -0.11889776f, -0.18002142f, -0.20401485f, -0.18592930f, -0.12949498f, -0.04635175f, 0.04635175f, 0.12949498f, 0.18592930f, 0.20401485f, 0.18002142f, 0.11889776f, 0.03325089f, -0.05925412f, -0.13953772f, -0.19104098f, -0.20314121f, -0.17334267f, -0.10779140f, -0.02000766f, 0.07190274f, 0.14898288f, 0.19533464f, 0.20139772f, 0.16592164f, 0.09622346f, 0.00667875f, -0.08424346f, -0.15779008f, -0.19879180f, },
{0.19716878f, 0.14433756f, 0.05283122f, -0.05283122f, -0.14433756f, -0.19716878f, -0.19716878f, -0.14433756f, -0.05283122f, 0.05283122f, 0.14433756f, 0.19716878f, 0.19716878f, 0.14433756f, 0.05283122f, -0.05283122f, -0.14433756f, -0.19716878f, -0.19716878f, -0.14433756f, -0.05283122f, 0.05283122f, 0.14433756f, 0.19716878f, 0.19716878f, 0.14433756f, 0.05283122f, -0.05283122f, -0.14433756f, -0.19716878f, -0.19716878f, -0.14433756f, -0.05283122f, 0.05283122f, 0.14433756f, 0.19716878f, 0.19716878f, 0.14433756f, 0.05283122f, -0.05283122f, -0.14433756f, -0.19716878f, -0.19716878f, -0.14433756f, -0.05283122f, 0.05283122f, 0.14433756f, 0.19716878f, },
{0.19533464f, 0.12949499f, 0.02000766f, -0.09622346f, -0.18002142f, -0.20314124f, -0.15779011f, -0.05925411f, 0.05925411f, 0.15779011f, 0.20314121f, 0.18002142f, 0.09622346f, -0.02000766f, -0.12949499f, -0.19533464f, -0.19533464f, -0.12949498f, -0.02000766f, 0.09622346f, 0.18002142f, 0.20314124f, 0.15779011f, 0.05925411f, -0.05925411f, -0.15779011f, -0.20314124f, -0.18002142f, -0.09622346f, 0.02000766f, 0.12949498f, 0.19533464f, 0.19533464f, 0.12949499f, 0.02000766f, -0.09622346f, -0.18002142f, -0.20314121f, -0.15779011f, -0.05925411f, 0.05925411f, 0.15779011f, 0.20314124f, 0.18002142f, 0.09622346f, -0.02000766f, -0.12949499f, -0.19533464f, },
{0.19329131f, 0.11340530f, -0.01335037f, -0.13458841f, -0.20020196f, -0.18307339f, -0.09028180f, 0.03982264f, 0.15346867f, 0.20368710f, 0.16972302f, 0.06561357f, -0.06561357f, -0.16972302f, -0.20368710f, -0.15346867f, -0.03982264f, 0.09028180f, 0.18307339f, 0.20020196f, 0.13458841f, 0.01335037f, -0.11340530f, -0.19329131f, -0.19329131f, -0.11340530f, 0.01335037f, 0.13458841f, 0.20020196f, 0.18307339f, 0.09028180f, -0.03982264f, -0.15346867f, -0.20368710f, -0.16972302f, -0.06561357f, 0.06561357f, 0.16972302f, 0.20368710f, 0.15346867f, 0.03982264f, -0.09028180f, -0.18307339f, -0.20020196f, -0.13458841f, -0.01335037f, 0.11340530f, 0.19329131f, },
{0.19104101f, 0.09622344f, -0.04635174f, -0.16592163f, -0.20314124f, -0.13953769f, -0.00667875f, 0.12949499f, 0.20139775f, 0.17334267f, 0.05925412f, -0.08424348f, -0.18592930f, -0.19533461f, -0.10779141f, 0.03325091f, 0.15779009f, 0.20401485f, 0.14898288f, 0.02000766f, -0.11889776f, -0.19879182f, -0.18002144f, -0.07190274f, 0.07190274f, 0.18002144f, 0.19879182f, 0.11889776f, -0.02000766f, -0.14898288f, -0.20401485f, -0.15779009f, -0.03325091f, 0.10779141f, 0.19533461f, 0.18592930f, 0.08424348f, -0.05925412f, -0.17334267f, -0.20139775f, -0.12949499f, 0.00667875f, 0.13953769f, 0.20314124f, 0.16592163f, 0.04635174f, -0.09622344f, -0.19104101f, },
{0.18858612f, 0.07811493f, -0.07811493f, -0.18858612f, -0.18858612f, -0.07811493f, 0.07811493f, 0.18858612f, 0.18858612f, 0.07811493f, -0.07811493f, -0.18858612f, -0.18858612f, -0.07811493f, 0.07811493f, 0.18858612f, 0.18858612f, 0.07811493f, -0.07811493f, -0.18858612f, -0.18858612f, -0.07811493f, 0.07811493f, 0.18858612f, 0.18858612f, 0.07811493f, -0.07811493f, -0.18858612f, -0.18858612f, -0.07811493f, 0.07811493f, 0.18858612f, 0.18858612f, 0.07811493f, -0.07811493f, -0.18858612f, -0.18858612f, -0.07811493f, 0.07811493f, 0.18858612f, 0.18858612f, 0.07811493f, -0.07811493f, -0.18858612f, -0.18858612f, -0.07811493f, 0.07811493f, 0.18858612f, },
};