1/*
2 *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 *
4 *  Use of this source code is governed by a BSD-style license
5 *  that can be found in the LICENSE file in the root of the source
6 *  tree. An additional intellectual property rights grant can be found
7 *  in the file PATENTS.  All contributing project authors may
8 *  be found in the AUTHORS file in the root of the source tree.
9 */
10
11/*
12 * pitch_lag_tables.c
13 *
14 * This file contains tables for the pitch filter side-info in the entropy coder.
15 *
16 */
17
18#include "settings.h"
19#include "pitch_lag_tables.h"
20
21
22/********************* Pitch Filter Gain Coefficient Tables ************************/
23
24/* tables for use with small pitch gain */
25
26/* cdf for quantized pitch filter lags */
27const uint16_t WebRtcIsacfix_kPitchLagCdf1Lo[127] = {
28  0,  134,  336,  549,  778,  998,  1264,  1512,  1777,  2070,
29  2423,  2794,  3051,  3361,  3708,  3979,  4315,  4610,  4933,  5269,
30  5575,  5896,  6155,  6480,  6816,  7129,  7477,  7764,  8061,  8358,
31  8718,  9020,  9390,  9783,  10177,  10543,  10885,  11342,  11795,  12213,
32  12680,  13096,  13524,  13919,  14436,  14903,  15349,  15795,  16267,  16734,
33  17266,  17697,  18130,  18632,  19080,  19447,  19884,  20315,  20735,  21288,
34  21764,  22264,  22723,  23193,  23680,  24111,  24557,  25022,  25537,  26082,
35  26543,  27090,  27620,  28139,  28652,  29149,  29634,  30175,  30692,  31273,
36  31866,  32506,  33059,  33650,  34296,  34955,  35629,  36295,  36967,  37726,
37  38559,  39458,  40364,  41293,  42256,  43215,  44231,  45253,  46274,  47359,
38  48482,  49678,  50810,  51853,  53016,  54148,  55235,  56263,  57282,  58363,
39  59288,  60179,  61076,  61806,  62474,  63129,  63656,  64160,  64533,  64856,
40  65152,  65535,  65535,  65535,  65535,  65535,  65535
41};
42
43const uint16_t WebRtcIsacfix_kPitchLagCdf2Lo[20] = {
44  0,  429,  3558,  5861,  8558,  11639,  15210,  19502,  24773,  31983,
45  42602,  48567,  52601,  55676,  58160,  60172,  61889,  63235,  65383,  65535
46};
47
48const uint16_t WebRtcIsacfix_kPitchLagCdf3Lo[2] = {
49  0,  65535
50};
51
52const uint16_t WebRtcIsacfix_kPitchLagCdf4Lo[10] = {
53  0,  2966,  6368,  11182,  19431,  37793,  48532,  55353,  60626,  65535
54};
55
56const uint16_t *WebRtcIsacfix_kPitchLagPtrLo[4] = {
57  WebRtcIsacfix_kPitchLagCdf1Lo,
58  WebRtcIsacfix_kPitchLagCdf2Lo,
59  WebRtcIsacfix_kPitchLagCdf3Lo,
60  WebRtcIsacfix_kPitchLagCdf4Lo
61};
62
63/* size of first cdf table */
64const uint16_t WebRtcIsacfix_kPitchLagSizeLo[1] = {
65  128
66};
67
68/* index limits and ranges */
69const int16_t WebRtcIsacfix_kLowerLimitLo[4] = {
70  -140, -9,  0, -4
71};
72
73const int16_t WebRtcIsacfix_kUpperLimitLo[4] = {
74  -20,  9,  0,  4
75};
76
77/* initial index for arithmetic decoder */
78const uint16_t WebRtcIsacfix_kInitIndLo[3] = {
79  10,  1,  5
80};
81
82/* mean values of pitch filter lags in Q10 */
83
84const int16_t WebRtcIsacfix_kMeanLag2Lo[19] = {
85  -17627, -16207, -14409, -12319, -10253, -8200, -6054, -3986, -1948, -19,
86  1937, 3974, 6064, 8155, 10229, 12270, 14296, 16127, 17520
87};
88
89const int16_t WebRtcIsacfix_kMeanLag4Lo[9] = {
90  -7949, -6063, -4036, -1941, 38, 1977, 4060, 6059
91};
92
93
94
95/* tables for use with medium pitch gain */
96
97/* cdf for quantized pitch filter lags */
98const uint16_t WebRtcIsacfix_kPitchLagCdf1Mid[255] = {
99  0,  28,  61,  88,  121,  149,  233,  331,  475,  559,
100  624,  661,  689,  712,  745,  791,  815,  843,  866,  922,
101  959,  1024,  1061,  1117,  1178,  1238,  1280,  1350,  1453,  1513,
102  1564,  1625,  1671,  1741,  1788,  1904,  2072,  2421,  2626,  2770,
103  2840,  2900,  2942,  3012,  3068,  3115,  3147,  3194,  3254,  3319,
104  3366,  3520,  3678,  3780,  3850,  3911,  3957,  4032,  4106,  4185,
105  4292,  4474,  4683,  4842,  5019,  5191,  5321,  5428,  5540,  5675,
106  5763,  5847,  5959,  6127,  6304,  6564,  6839,  7090,  7263,  7421,
107  7556,  7728,  7872,  7984,  8142,  8361,  8580,  8743,  8938,  9227,
108  9409,  9539,  9674,  9795,  9930,  10060,  10177,  10382,  10614,  10861,
109  11038,  11271,  11415,  11629,  11792,  12044,  12193,  12416,  12574,  12821,
110  13007,  13235,  13445,  13654,  13901,  14134,  14488,  15000,  15703,  16285,
111  16504,  16797,  17086,  17328,  17579,  17807,  17998,  18268,  18538,  18836,
112  19087,  19274,  19474,  19716,  19935,  20270,  20833,  21303,  21532,  21741,
113  21978,  22207,  22523,  22770,  23054,  23613,  23943,  24204,  24399,  24651,
114  24832,  25074,  25270,  25549,  25759,  26015,  26150,  26424,  26713,  27048,
115  27342,  27504,  27681,  27854,  28021,  28207,  28412,  28664,  28859,  29064,
116  29278,  29548,  29748,  30107,  30377,  30656,  30856,  31164,  31452,  31755,
117  32011,  32328,  32626,  32919,  33319,  33789,  34329,  34925,  35396,  35973,
118  36443,  36964,  37551,  38156,  38724,  39357,  40023,  40908,  41587,  42602,
119  43924,  45037,  45810,  46597,  47421,  48291,  49092,  50051,  51448,  52719,
120  53440,  54241,  54944,  55977,  56676,  57299,  57872,  58389,  59059,  59688,
121  60237,  60782,  61094,  61573,  61890,  62290,  62658,  63030,  63217,  63454,
122  63622,  63882,  64003,  64273,  64427,  64529,  64581,  64697,  64758,  64902,
123  65414,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
124  65535,  65535,  65535,  65535,  65535
125};
126
127const uint16_t WebRtcIsacfix_kPitchLagCdf2Mid[36] = {
128  0,  71,  335,  581,  836,  1039,  1323,  1795,  2258,  2608,
129  3005,  3591,  4243,  5344,  7163,  10583,  16848,  28078,  49448,  57007,
130  60357,  61850,  62837,  63437,  63872,  64188,  64377,  64614,  64774,  64949,
131  65039,  65115,  65223,  65360,  65474,  65535
132};
133
134const uint16_t WebRtcIsacfix_kPitchLagCdf3Mid[2] = {
135  0,  65535
136};
137
138const uint16_t WebRtcIsacfix_kPitchLagCdf4Mid[20] = {
139  0,  28,  246,  459,  667,  1045,  1523,  2337,  4337,  11347,
140  44231,  56709,  60781,  62243,  63161,  63969,  64608,  65062,  65502,  65535
141};
142
143const uint16_t *WebRtcIsacfix_kPitchLagPtrMid[4] = {
144  WebRtcIsacfix_kPitchLagCdf1Mid,
145  WebRtcIsacfix_kPitchLagCdf2Mid,
146  WebRtcIsacfix_kPitchLagCdf3Mid,
147  WebRtcIsacfix_kPitchLagCdf4Mid
148};
149
150/* size of first cdf table */
151const uint16_t WebRtcIsacfix_kPitchLagSizeMid[1] = {
152  256
153};
154
155/* index limits and ranges */
156const int16_t WebRtcIsacfix_kLowerLimitMid[4] = {
157  -280, -17,  0, -9
158};
159
160const int16_t WebRtcIsacfix_kUpperLimitMid[4] = {
161  -40,  17,  0,  9
162};
163
164/* initial index for arithmetic decoder */
165const uint16_t WebRtcIsacfix_kInitIndMid[3] = {
166  18,  1,  10
167};
168
169/* mean values of pitch filter lags in Q10 */
170
171const int16_t WebRtcIsacfix_kMeanLag2Mid[35] = {
172  -17297, -16250, -15416, -14343, -13341, -12363, -11270,
173  -10355, -9122, -8217, -7172, -6083, -5102, -4004, -3060,
174  -1982, -952, -18, 935, 1976, 3040, 4032,
175  5082, 6065, 7257, 8202, 9264, 10225, 11242,
176  12234, 13337, 14336, 15374, 16187, 17347
177};
178
179
180const int16_t WebRtcIsacfix_kMeanLag4Mid[19] = {
181  -8811, -8081, -7203, -6003, -5057, -4025, -2983, -1964,
182  -891, 29, 921, 1920, 2988, 4064, 5187, 6079, 7173, 8074, 8849
183};
184
185
186/* tables for use with large pitch gain */
187
188/* cdf for quantized pitch filter lags */
189const uint16_t WebRtcIsacfix_kPitchLagCdf1Hi[511] = {
190  0,  7,  18,  33,  69,  105,  156,  228,  315,  612,
191  680,  691,  709,  724,  735,  738,  742,  746,  749,  753,
192  756,  760,  764,  774,  782,  785,  789,  796,  800,  803,
193  807,  814,  818,  822,  829,  832,  847,  854,  858,  869,
194  876,  883,  898,  908,  934,  977,  1010,  1050,  1060,  1064,
195  1075,  1078,  1086,  1089,  1093,  1104,  1111,  1122,  1133,  1136,
196  1151,  1162,  1183,  1209,  1252,  1281,  1339,  1364,  1386,  1401,
197  1411,  1415,  1426,  1430,  1433,  1440,  1448,  1455,  1462,  1477,
198  1487,  1495,  1502,  1506,  1509,  1516,  1524,  1531,  1535,  1542,
199  1553,  1556,  1578,  1589,  1611,  1625,  1639,  1643,  1654,  1665,
200  1672,  1687,  1694,  1705,  1708,  1719,  1730,  1744,  1752,  1759,
201  1791,  1795,  1820,  1867,  1886,  1915,  1936,  1943,  1965,  1987,
202  2041,  2099,  2161,  2175,  2200,  2211,  2226,  2233,  2244,  2251,
203  2266,  2280,  2287,  2298,  2309,  2316,  2331,  2342,  2356,  2378,
204  2403,  2418,  2447,  2497,  2544,  2602,  2863,  2895,  2903,  2935,
205  2950,  2971,  3004,  3011,  3018,  3029,  3040,  3062,  3087,  3127,
206  3152,  3170,  3199,  3243,  3293,  3322,  3340,  3377,  3402,  3427,
207  3474,  3518,  3543,  3579,  3601,  3637,  3659,  3706,  3731,  3760,
208  3818,  3847,  3869,  3901,  3920,  3952,  4068,  4169,  4220,  4271,
209  4524,  4571,  4604,  4632,  4672,  4730,  4777,  4806,  4857,  4904,
210  4951,  5002,  5031,  5060,  5107,  5150,  5212,  5266,  5331,  5382,
211  5432,  5490,  5544,  5610,  5700,  5762,  5812,  5874,  5972,  6022,
212  6091,  6163,  6232,  6305,  6402,  6540,  6685,  6880,  7090,  7271,
213  7379,  7452,  7542,  7625,  7687,  7770,  7843,  7911,  7966,  8024,
214  8096,  8190,  8252,  8320,  8411,  8501,  8585,  8639,  8751,  8842,
215  8918,  8986,  9066,  9127,  9203,  9269,  9345,  9406,  9464,  9536,
216  9612,  9667,  9735,  9844,  9931,  10036,  10119,  10199,  10260,  10358,
217  10441,  10514,  10666,  10734,  10872,  10951,  11053,  11125,  11223,  11324,
218  11516,  11664,  11737,  11816,  11892,  12008,  12120,  12200,  12280,  12392,
219  12490,  12576,  12685,  12812,  12917,  13003,  13108,  13210,  13300,  13384,
220  13470,  13579,  13673,  13771,  13879,  13999,  14136,  14201,  14368,  14614,
221  14759,  14867,  14958,  15030,  15121,  15189,  15280,  15385,  15461,  15555,
222  15653,  15768,  15884,  15971,  16069,  16145,  16210,  16279,  16380,  16463,
223  16539,  16615,  16688,  16818,  16919,  17017,  18041,  18338,  18523,  18649,
224  18790,  18917,  19047,  19167,  19315,  19460,  19601,  19731,  19858,  20068,
225  20173,  20318,  20466,  20625,  20741,  20911,  21045,  21201,  21396,  21588,
226  21816,  22022,  22305,  22547,  22786,  23072,  23322,  23600,  23879,  24168,
227  24433,  24769,  25120,  25511,  25895,  26289,  26792,  27219,  27683,  28077,
228  28566,  29094,  29546,  29977,  30491,  30991,  31573,  32105,  32594,  33173,
229  33788,  34497,  35181,  35833,  36488,  37255,  37921,  38645,  39275,  39894,
230  40505,  41167,  41790,  42431,  43096,  43723,  44385,  45134,  45858,  46607,
231  47349,  48091,  48768,  49405,  49955,  50555,  51167,  51985,  52611,  53078,
232  53494,  53965,  54435,  54996,  55601,  56125,  56563,  56838,  57244,  57566,
233  57967,  58297,  58771,  59093,  59419,  59647,  59886,  60143,  60461,  60693,
234  60917,  61170,  61416,  61634,  61891,  62122,  62310,  62455,  62632,  62839,
235  63103,  63436,  63639,  63805,  63906,  64015,  64192,  64355,  64475,  64558,
236  64663,  64742,  64811,  64865,  64916,  64956,  64981,  65025,  65068,  65115,
237  65195,  65314,  65419,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
238  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
239  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
240  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
241  65535
242};
243
244const uint16_t WebRtcIsacfix_kPitchLagCdf2Hi[68] = {
245  0,  7,  11,  22,  37,  52,  56,  59,  81,  85,
246  89,  96,  115,  130,  137,  152,  170,  181,  193,  200,
247  207,  233,  237,  259,  289,  318,  363,  433,  592,  992,
248  1607,  3062,  6149,  12206,  25522,  48368,  58223,  61918,  63640,  64584,
249  64943,  65098,  65206,  65268,  65294,  65335,  65350,  65372,  65387,  65402,
250  65413,  65420,  65428,  65435,  65439,  65450,  65454,  65468,  65472,  65476,
251  65483,  65491,  65498,  65505,  65516,  65520,  65528,  65535
252};
253
254const uint16_t WebRtcIsacfix_kPitchLagCdf3Hi[2] = {
255  0,  65535
256};
257
258const uint16_t WebRtcIsacfix_kPitchLagCdf4Hi[35] = {
259  0,  7,  19,  30,  41,  48,  63,  74,  82,  96,
260  122,  152,  215,  330,  701,  2611,  10931,  48106,  61177,  64341,
261  65112,  65238,  65309,  65338,  65364,  65379,  65401,  65427,  65453,
262  65465,  65476,  65490,  65509,  65528,  65535
263};
264
265const uint16_t *WebRtcIsacfix_kPitchLagPtrHi[4] = {
266  WebRtcIsacfix_kPitchLagCdf1Hi,
267  WebRtcIsacfix_kPitchLagCdf2Hi,
268  WebRtcIsacfix_kPitchLagCdf3Hi,
269  WebRtcIsacfix_kPitchLagCdf4Hi
270};
271
272/* size of first cdf table */
273const uint16_t WebRtcIsacfix_kPitchLagSizeHi[1] = {
274  512
275};
276
277/* index limits and ranges */
278const int16_t WebRtcIsacfix_kLowerLimitHi[4] = {
279  -552, -34,  0, -16
280};
281
282const int16_t WebRtcIsacfix_kUpperLimitHi[4] = {
283  -80,  32,  0,  17
284};
285
286/* initial index for arithmetic decoder */
287const uint16_t WebRtcIsacfix_kInitIndHi[3] = {
288  34,  1,  18
289};
290
291/* mean values of pitch filter lags */
292
293const int16_t WebRtcIsacfix_kMeanLag2Hi[67] = {
294  -17482, -16896, -16220, -15929, -15329, -14848, -14336, -13807, -13312, -12800, -12218, -11720,
295  -11307, -10649, -10396, -9742, -9148, -8668, -8297, -7718, -7155, -6656, -6231, -5600, -5129,
296  -4610, -4110, -3521, -3040, -2525, -2016, -1506, -995, -477, -5, 469, 991, 1510, 2025, 2526, 3079,
297  3555, 4124, 4601, 5131, 5613, 6194, 6671, 7140, 7645, 8207, 8601, 9132, 9728, 10359, 10752, 11302,
298  11776, 12288, 12687, 13204, 13759, 14295, 14810, 15360, 15764, 16350
299};
300
301
302const int16_t WebRtcIsacfix_kMeanLag4Hi[34] = {
303  -8175, -7659, -7205, -6684, -6215, -5651, -5180, -4566, -4087, -3536, -3096,
304  -2532, -1990, -1482, -959, -440, 11, 451, 954, 1492, 2020, 2562, 3059,
305  3577, 4113, 4618, 5134, 5724, 6060, 6758, 7015, 7716, 8066, 8741
306};
307