22 #ifndef AVCODEC_QCELPDATA_H
23 #define AVCODEC_QCELPDATA_H
82 #define QCELP_OF(variable, bit, len) {offsetof(QCELPFrame, variable), bit, len}
293 { 327, 118},{ 919, 111},{ 427, 440},{1327, 185},
294 { 469, 50},{1272, 91},{ 892, 59},{1771, 193},
295 { 222, 158},{1100, 127},{ 827, 55},{ 978, 791},
296 { 665, 47},{ 700,1401},{ 670, 859},{1913,1048},
297 { 471, 215},{1046, 125},{ 645, 298},{1599, 160},
298 { 593, 39},{1187, 462},{ 749, 341},{1520, 511},
299 { 290, 792},{ 909, 362},{ 753, 81},{1111,1058},
300 { 519, 253},{ 828, 839},{ 685, 541},{1421,1258},
301 { 386, 130},{ 962, 119},{ 542, 387},{1431, 185},
302 { 526, 51},{1175, 260},{ 831, 167},{1728, 510},
303 { 273, 437},{1172, 113},{ 771, 144},{1122, 751},
304 { 619, 119},{ 492,1276},{ 658, 695},{1882, 615},
305 { 415, 200},{1018, 88},{ 681, 339},{1436, 325},
306 { 555, 122},{1042, 485},{ 826, 345},{1374, 743},
307 { 383,1018},{1005, 358},{ 704, 86},{1301, 586},
308 { 597, 241},{ 832, 621},{ 555, 573},{1504, 839}};
311 { 255, 293},{ 904, 219},{ 151,1211},{1447, 498},
312 { 470, 253},{1559, 177},{1547, 994},{2394, 242},
313 { 91, 813},{ 857, 590},{ 934,1326},{1889, 282},
314 { 813, 472},{1057,1494},{ 450,3315},{2163,1895},
315 { 538, 532},{1399, 218},{ 146,1552},{1755, 626},
316 { 822, 202},{1299, 663},{ 706,1732},{2656, 401},
317 { 418, 745},{ 762,1038},{ 583,1748},{1746,1285},
318 { 527,1169},{1314, 830},{ 556,2116},{1073,2321},
319 { 297, 570},{ 981, 403},{ 468,1103},{1740, 243},
320 { 725, 179},{1255, 474},{1374,1362},{1922, 912},
321 { 285, 947},{ 930, 700},{ 593,1372},{1909, 576},
322 { 588, 916},{1110,1116},{ 224,2719},{1633,2220},
323 { 402, 520},{1061, 448},{ 402,1352},{1499, 775},
324 { 664, 589},{1081, 727},{ 801,2206},{2165,1157},
325 { 566, 802},{ 911,1116},{ 306,1703},{1792, 836},
326 { 655, 999},{1061,1038},{ 298,2089},{1110,1753},
327 { 361, 311},{ 970, 239},{ 265,1231},{1495, 573},
328 { 566, 262},{1569, 293},{1341,1144},{2271, 544},
329 { 214, 877},{ 847, 719},{ 794,1384},{2067, 274},
330 { 703, 688},{1099,1306},{ 391,2947},{2024,1670},
331 { 471, 525},{1245, 290},{ 264,1557},{1568, 807},
332 { 718, 399},{1193, 685},{ 883,1594},{2729, 764},
333 { 500, 754},{ 809,1108},{ 541,1648},{1523,1385},
334 { 614,1196},{1209, 847},{ 345,2242},{1442,1747},
335 { 199, 560},{1092, 194},{ 349,1253},{1653, 507},
336 { 625, 354},{1376, 431},{1187,1465},{2164, 872},
337 { 360, 974},{1008, 698},{ 704,1346},{2114, 452},
338 { 720, 816},{1240,1089},{ 439,2475},{1498,2040},
339 { 336, 718},{1213, 187},{ 451,1450},{1368, 885},
340 { 592, 578},{1131, 531},{ 861,1855},{1764,1500},
341 { 444, 970},{ 935, 903},{ 424,1687},{1633,1102},
342 { 793, 897},{1060, 897},{ 185,2011},{1205,1855}};
345 { 225, 283},{1296, 355},{ 543, 343},{2073, 274},
346 { 204,1099},{1562, 523},{1388, 161},{2784, 274},
347 { 112, 849},{1870, 175},{1189, 160},{1490,1088},
348 { 969,1115},{ 659,3322},{1158,1073},{3183,1363},
349 { 517, 223},{1740, 223},{ 704, 387},{2637, 234},
350 { 692,1005},{1287,1610},{ 952, 532},{2393, 646},
351 { 490, 552},{1619, 657},{ 845, 670},{1784,2280},
352 { 191,1775},{ 272,2868},{ 942, 952},{2628,1479},
353 { 278, 579},{1565, 218},{ 814, 180},{2379, 187},
354 { 276,1444},{1199,1223},{1200, 349},{3009, 307},
355 { 312, 844},{1898, 306},{ 863, 470},{1685,1241},
356 { 513,1727},{ 711,2233},{1085, 864},{3398, 527},
357 { 414, 440},{1356, 612},{ 964, 147},{2173, 738},
358 { 465,1292},{ 877,1749},{1104, 689},{2105,1311},
359 { 580, 864},{1895, 752},{ 652, 609},{1485,1699},
360 { 514,1400},{ 386,2131},{ 933, 798},{2473, 986},
361 { 334, 360},{1375, 398},{ 621, 276},{2183, 280},
362 { 311,1114},{1382, 807},{1284, 175},{2605, 636},
363 { 230, 816},{1739, 408},{1074, 176},{1619,1120},
364 { 784,1371},{ 448,3050},{1189, 880},{3039,1165},
365 { 424, 241},{1672, 186},{ 815, 333},{2432, 324},
366 { 584,1029},{1137,1546},{1015, 585},{2198, 995},
367 { 574, 581},{1746, 647},{ 733, 740},{1938,1737},
368 { 347,1710},{ 373,2429},{ 787,1061},{2439,1438},
369 { 185, 536},{1489, 178},{ 703, 216},{2178, 487},
370 { 154,1421},{1414, 994},{1103, 352},{3072, 473},
371 { 408, 819},{2055, 168},{ 998, 354},{1917,1140},
372 { 665,1799},{ 993,2213},{1234, 631},{3003, 762},
373 { 373, 620},{1518, 425},{ 913, 300},{1966, 836},
374 { 402,1185},{ 948,1385},{1121, 555},{1802,1509},
375 { 474, 886},{1888, 610},{ 739, 585},{1231,2379},
376 { 661,1335},{ 205,2211},{ 823, 822},{2480,1179}};
379 { 348, 311},{ 812,1145},{ 552, 461},{1826, 263},
380 { 601, 675},{1730, 172},{1523, 193},{2449, 277},
381 { 334, 668},{ 805,1441},{1319, 207},{1684, 910},
382 { 582,1318},{1403,1098},{ 979, 832},{2700,1359},
383 { 624, 228},{1292, 979},{ 800, 195},{2226, 285},
384 { 730, 862},{1537, 601},{1115, 509},{2720, 354},
385 { 218,1167},{1212,1538},{1074, 247},{1674,1710},
386 { 322,2142},{1263, 777},{ 981, 556},{2119,1710},
387 { 193, 596},{1035, 957},{ 694, 397},{1997, 253},
388 { 743, 603},{1584, 321},{1346, 346},{2221, 708},
389 { 451, 732},{1040,1415},{1184, 230},{1853, 919},
390 { 310,1661},{1625, 706},{ 856, 843},{2902, 702},
391 { 467, 348},{1108,1048},{ 859, 306},{1964, 463},
392 { 560,1013},{1425, 533},{1142, 634},{2391, 879},
393 { 397,1084},{1345,1700},{ 976, 248},{1887,1189},
394 { 644,2087},{1262, 603},{ 877, 550},{2203,1307}};
397 { 360, 222},{ 820,1097},{ 601, 319},{1656, 198},
398 { 604, 513},{1552, 141},{1391, 155},{2474, 261},
399 { 269, 785},{1463, 646},{1123, 191},{2015, 223},
400 { 785, 844},{1202,1011},{ 980, 807},{3014, 793},
401 { 570, 180},{1135,1382},{ 778, 256},{1901, 179},
402 { 807, 622},{1461, 458},{1231, 178},{2028, 821},
403 { 387, 927},{1496,1004},{ 888, 392},{2246, 341},
404 { 295,1462},{1156, 694},{1022, 473},{2226,1364},
405 { 210, 478},{1029,1020},{ 722, 181},{1730, 251},
406 { 730, 488},{1465, 293},{1303, 326},{2595, 387},
407 { 458, 584},{1569, 742},{1029, 173},{1910, 495},
408 { 605,1159},{1268, 719},{ 973, 646},{2872, 428},
409 { 443, 334},{ 835,1465},{ 912, 138},{1716, 442},
410 { 620, 778},{1316, 450},{1186, 335},{1446,1665},
411 { 486,1050},{1675,1019},{ 880, 278},{2214, 202},
412 { 539,1564},{1142, 533},{ 984, 391},{2130,1089}};
425 #define QCELP_SCALE 8192.
460 10, -65, -59, 12, 110, 34, -134, 157,
461 104, -84, -34, -115, 23, -101, 3, 45,
462 -101, -16, -59, 28, -45, 134, -67, 22,
463 61, -29, 226, -26, -55, -179, 157, -51,
464 -220, -93, -37, 60, 118, 74, -48, -95,
465 -181, 111, 36, -52, -215, 78, -112, 39,
466 -17, -47, -223, 19, 12, -98, -142, 130,
467 54, -127, 21, -12, 39, -48, 12, 128,
468 6, -167, 82, -102, -79, 55, -44, 48,
469 -20, -53, 8, -61, 11, -70, -157, -168,
470 20, -56, -74, 78, 33, -63, -173, -2,
471 -75, -53, -146, 77, 66, -29, 9, -75,
472 65, 119, -43, 76, 233, 98, 125, -156,
473 -27, 78, -9, 170, 176, 143, -148, -7,
474 27, -136, 5, 27, 18, 139, 204, 7,
475 -184, -197, 52, -3, 78, -189, 8, -65
477 #define QCELP_RATE_FULL_CODEBOOK_RATIO .01
485 0, -4, 0, -3, 0, 0, 0, 0,
486 0, 0, 0, 0, 0, 0, 0, 0,
487 0, -3, -2, 0, 0, 0, 0, 0,
488 0, 0, 0, 0, 0, 0, 0, 5,
489 0, 0, 0, 0, 0, 0, 4, 0,
490 0, 3, 2, 0, 3, 4, 0, 0,
491 0, 0, 0, 0, 0, 0, 0, 0,
492 0, 0, 0, 0, 0, 3, 0, 0,
493 -3, 3, 0, 0, -2, 0, 3, 0,
494 0, 0, 0, 0, 0, 0, -5, 0,
495 0, 0, 0, 3, 0, 0, 0, 3,
496 0, 0, 0, 0, 0, 0, 0, 4,
497 0, 0, 0, 0, 0, 0, 0, 0,
498 0, 3, 6, -3, -4, 0, -3, -3,
499 3, -3, 0, 0, 0, 0, 0, 0,
500 0, 0, 0, 0, 0, 0, 0, 0
502 #define QCELP_RATE_HALF_CODEBOOK_RATIO 0.5
511 #define QCELP_SQRT1887 1.373681186
522 -1.344519e-1, 1.735384e-2, -6.905826e-2, 2.434368e-2,
523 -8.210701e-2, 3.041388e-2, -9.251384e-2, 3.501983e-2,
524 -9.918777e-2, 3.749518e-2, 8.985137e-1
533 #define QCELP_LSP_SPREAD_FACTOR 0.02
541 #define QCELP_LSP_OCTAVE_PREDICTOR 29.0/32
550 #define QCELP_BANDWIDTH_EXPANSION_COEFF 0.9883
common internal and external API header
static const float qcelp_hammsinc_table[4]
Pre-calculated table for hammsinc function.
static const int8_t qcelp_rate_half_codebook[128]
Circular codebook for rate 1/2 frames in x*2 form.
static const qcelp_vector qcelp_lspvq2[128]
static const float qcelp_g12ga[61]
Table for computing Ga (decoded linear codebook gain magnitude)
static const int16_t qcelp_rate_full_codebook[128]
Circular codebook for rate 1 frames in x*100 form.
static const QCELPBitmap qcelp_rate_quarter_bitmap[]
Bitmap unpacking tables for RATE_QUARTER.
static const qcelp_vector *const qcelp_lspvq[5]
static const uint16_t qcelp_unpacking_bitmaps_lengths[5]
static const qcelp_vector qcelp_lspvq1[64]
LSP vector quantization tables in x*10000 form.
#define QCELP_SCALE
The final gain scalefactor before clipping into a usable output float.
static const QCELPBitmap *const qcelp_unpacking_bitmaps_per_rate[5]
Bitmapping data position for each packet type in the QCELPContext.
static const QCELPBitmap qcelp_rate_octave_bitmap[]
Bitmap unpacking tables for RATE_OCTAVE.
static const QCELPBitmap qcelp_rate_half_bitmap[]
Bitmap unpacking tables for RATE_HALF.
static const QCELPBitmap qcelp_rate_full_bitmap[]
Bitmap unpacking tables for RATE_FULL.
static const qcelp_vector qcelp_lspvq5[64]
static const double qcelp_rnd_fir_coefs[11]
Table for impulse response of BPF used to filter the white excitation for bitrate 1/4 synthesis.
static const qcelp_vector qcelp_lspvq4[64]
static const qcelp_vector qcelp_lspvq3[128]
#define QCELP_OF(variable, bit, len)
#define FF_ARRAY_ELEMS(a)
uint8_t bitlen
number of bits to read
uint8_t index
index into the QCELPContext structure
uint8_t bitpos
position of the lowest bit in the value's byte
QCELP unpacked data frame.
uint8_t reserved
reserved bits only present in bitrate 1, 1/4 and 1/8 packets
uint8_t pfrac[4]
fractional pitch lag for each pitch subframe
uint8_t cbgain[16]
unsigned codebook gain for each codebook subframe
uint8_t cbsign[16]
sign of the codebook gain for each codebook subframe
uint8_t lspv[10]
line spectral pair frequencies (LSP) for RATE_OCTAVE, line spectral pair frequencies grouped into fiv...
uint8_t plag[4]
pitch lag for each pitch subframe
uint8_t cindex[16]
codebook index for each codebook subframe
uint8_t pgain[4]
pitch gain for each pitch subframe