📄 g723codec.c
字号:
ReadFromBitstream(&data,&bit,&dd,24); dst_line->lspID=dd; //read adaptive codebook lag ReadFromBitstream(&data,&bit,&dd,7); if(dd<=123) //reject wrong data dst_line->olp[0]=(short)dd+pitchmin; else { dst_line->Crc=1; return; } ReadFromBitstream(&data,&bit,&dd,2); dst_line->closelag[1]=(short)dd; ReadFromBitstream(&data,&bit,&dd,7); if(dd<=123) dst_line->olp[1]=(short)dd+pitchmin; else{ dst_line->Crc=1; return; } ReadFromBitstream(&data,&bit,&dd,2); dst_line->closelag[3]=(short)dd; dst_line->closelag[0]=1; dst_line->closelag[2]=1; //read gain for(j=0;j<4;j++) { ReadFromBitstream(&data,&bit,&dd,12); if((*rate==0)&&(dst_line->olp[j>>1]<(sfsize-2))) { dst_line->traindrt[j]=(short)(dd>>11); dd&=(short)0x7ff; bound=85; } else{ dst_line->traindrt[j]=0; bound=170; } dst_line->adptgid[j]=(short)(dd/FixedCodeGainLev); if(dst_line->adptgid[j]<bound) dst_line->ampindex[j]=(short)(dd%FixedCodeGainLev); else{ dst_line->Crc=1; return; } } //read pulse grid for(j=0;j<4;j++) { ReadFromBitstream(&data,&bit,&dd,1); dst_line->grid[j]=(short)dd; } //read pulse position and sign index if(*rate==0) {//high rate ReadFromBitstream(&data,&bit,&dd,1); //reject reserved bit ReadFromBitstream(&data,&bit,&dd,13); //decode high 13 bits dst_line->pos[0]=(int)(dd/90)/9; dst_line->pos[1]=(int)(dd/90)%9; dst_line->pos[2]=(int)(dd%90)/9; dst_line->pos[3]=(int)(dd%90)%9; ReadFromBitstream(&data,&bit,&dd,16); dst_line->pos[0]=(int)dd+(dst_line->pos[0]<<16); ReadFromBitstream(&data,&bit,&dd,14); dst_line->pos[1]=(int)dd+(dst_line->pos[1]<<14); ReadFromBitstream(&data,&bit,&dd,16); dst_line->pos[2]=(int)dd+(dst_line->pos[2]<<16); ReadFromBitstream(&data,&bit,&dd,14); dst_line->pos[3]=(int)dd+(dst_line->pos[3]<<14); ReadFromBitstream(&data,&bit,&dd,6); //decode pulse sign index dst_line->sign[0]=(short)dd; ReadFromBitstream(&data,&bit,&dd,5); dst_line->sign[1]=(short)dd; ReadFromBitstream(&data,&bit,&dd,6); dst_line->sign[2]=(short)dd; ReadFromBitstream(&data,&bit,&dd,5); dst_line->sign[3]=(short)dd; } else{ for(j=0;j<4;j++) { ReadFromBitstream(&data,&bit,&dd,12); dst_line->pos[j]=(short)dd; } for(j=0;j<4;j++) { ReadFromBitstream(&data,&bit,&dd,4); dst_line->sign[j]=(short)dd; } } return; } /******Read bits from bitstream*****/void ReadFromBitstream(char **bstr,int *bits,int *dst,int len) //*bits presents the bit to be read{ int i,tmp;// printf("Welcome to ReadFromBitstream\n"); *dst=0; for(i=0;i<len;i++) { tmp=1<<(*bits); tmp&=**bstr; if(tmp>0) (*dst)+=1<<i; (*bits)++; if(*bits>7) { *bits=0; (*bstr)++; } } return;}short Band0Tb8[LspCbSize*3] = { 0, 0, 0, -270, -1372, -1032, -541, -1650, -1382, -723, -2011, -2213, -941, -1122, -1942, -780, -1145, -2454, -884, -1309, -1373, -1051, -1523, -1766, -1083, -1622, -2300, -777, -1377, -2147, -935, -1467, -2763, -802, -1327, -3471, -935, -1959, -3999, -240, -89, 222, -661, -257, -160, -994, -466, -419, -188, -164, -278, -342, -512, -415, -607, -511, -797, 16, 19, -716, 374, 425, -972, -346, 245, -282, -265, 506, -754, -620, -147, 1955, -742, -860, 2597, -150, -352, 2704, 305, 880, 1954, 123, 731, 2766, -348, 765, 3327, 618, 221, 3258, -178, -47, 4219, 393, 1304, 3842, 698, 1702, 4801, 63, -584, 1229, -215, -732, 1704, 172, -335, 1909, -2, 216, 1797, 353, 127, 2205, -1208, 188, 11, -513, -75, -683, -973, 222, -646, -616, -843, -388, -950, -1113, -359, -1431, -623, -705, -1398, -1063, -178, -45, -461, 35, -9, -657, -216, 127, -1078, 95, -950, -1156, 584, -1480, -1494, 449, -120, -705, 516, -368, -961, 727, -378, -526, 973, -793, -614, 676, -801, -755, 1287, -1476, -340, 1636, -505, -1254, 1543, -1243, -1622, 1532, -776, -1477, -655, -1151, -1296, -823, -1153, -1672, -1124, -1291, -2003, -1702, -622, -1283, 57, -471, -1611, 509, -1060, -1570, -139, -873, -2156, -536, -1716, -2021, -364, -2150, -3218, -1291, -1248, -1945, -2904, -1215, -2633, -2855, 167, -244, 84, 349, -412, -217, -40, -352, 632, 227, -529, 405, 68, -383, -443, 167, -558, -706, -275, -854, -14, -351, -1089, -449, 341, -72, -289, 603, -106, -474, 322, -219, -649, 179, -317, -998, 450, -291, -996, 555, 195, -525, 784, 272, -831, -148, -384, -849, 82, -536, -1357, 238, -172, -1354, 422, -268, -1841, 297, -737, -2079, -111, -801, -598, 1, -668, -984, -131, -818, -1299, -329, -521, -1310, -151, -778, -1834, -93, -352, -1746, -568, -640, -1821, -509, -941, -2183, 464, -815, -1250, 79, -1133, -1597, -184, -1353, -2123, -196, -410, -2427, -192, -833, -2810, -259, -1382, -3045, -217, 4, -1166, -800, -325, -1219, -363, -830, -898, -661, -1134, -960, -386, -980, -1501, -627, -1159, -1722, -903, -829, -855, -685, -829, -1313, -1065, -959, -1405, 441, 25, -847, 655, -27, -1181, 1159, -110, -705, 856, 253, -1671, 415, 404, -1, 322, 903, -398, 670, 499, -292, 803, 591, -610, 1144, 591, -814, 717, 183, 393, 857, 381, 106, 609, 62, -27, 792, 198, -325, 735, 805, 88, 1142, 812, 78, 1028, 366, -292, 1309, 743, -237, 1615, 589, -79, 1010, 639, -243, 999, 964, -311, 1500, 1137, -615, 988, 357, 646, 1227, 667, 683, 1164, 1565, 894, 1392, 2015, 477, 1138, 533, 250, 1437, 896, 391, 1765, 1118, 99, 1112, 1090, 802, 1596, 846, 1134, 937, 1161, 279, 1719, 1254, 683, 1338, 1086, 35, 1419, 1324, 428, 1428, 1524, 40, 2108, 1594, 89, 1015, 544, 1222, 1121, 925, 1263, 1030, 1318, 1485, 1295, 789, 1817, 1323, 1272, 1909, 1724, 1237, 1803, 1797, 1689, 858, 2149, 1367, 1301, 2302, 1867, 761, 2863, 2351, 1053, 52, 163, -76, 230, 309, -492, -71, 619, 39, -218, 856, 499, -654, 736, -207, -535, 1259, 155, -480, 1476, 643, 262, 1081, 102, 309, 1592, -182, 627, 1629, 534, 337, 643, 456, 758, 670, 713, 202, 1126, 658, 612, 1131, 666, 686, 1223, 1136, -131, 377, 525, 42, 708, 907, 87, 1488, 1035, 432, 2117, 904, 137, 981, 1332, -447, 1014, 1136, -839, 1793, 1246, -559, 297, 198, -850, 685, 446, -1273, 632, 826, -401, -544, 173, -753, -793, 144, -436, -9, 772, -115, -243, 1310, -670, -269, 374, -1027, -13, 639, -887, -81, 1137, -1277, -455, 158, -1411, -720, 736, 172, 88, 403, 386, 255, 756, -500, 522, 910, -958, 659, 1388, -395, 301, 1344, -356, 768, 1813, -613, 841, 2419, 445, -122, 252, 629, -87, 723, 283, -253, 870, 456, -116, 1381, 757, 180, 1059, 532, 408, 1509, 947, 288, 1806, 1325, 994, 2524, 892, 1219, 3023, 1397, 1596, 3406, 1143, 1552, 2546, 1850, 1433, 2710, -10, 134, 1002, 154, 499, 1323, 508, 792, 1117, 509, 1340, 1616, 762, 862, 1608, 787, 740, 2320, 794, 1727, 1283, 465, 2108, 1660, -120, 1451, 1613, -386, 2016, 2169, 891, 1225, 2050, 456, 1480, 2185, 1493, 1283, 1209, 1397, 1636, 1518, 1776, 1738, 1552, 1572, 1698, 2141, 1389, 2126, 1271, 1959, 2413, 1119, 1365, 2892, 1505, 2206, 1971, 1623, 2076, 1950, 2280, 1717, 2291, 1867, 2366, 2515, 1953, 2865, 2838, 2522, 2535, 3465, 2011, 3381, 4127, 2638, 836, 2667, 2289, 1761, 2773, 2337, 1415, 3325, 2911, 2354, 3138, 3126, 2659, 4192, 4010, 1048, 1786, 1818, 1242, 2111, 2240, 1512, 2079, 2780, 1573, 2491, 3138, 2230, 2377, 2782, 416, 1773, 2704, 725, 2336, 3297, 1252, 2373, 3978, 2094, 2268, 3568, 2011, 2712, 4528, 1341, 3507, 3876, 1216, 3919, 4922, 1693, 4793, 6012, } ;/*** Band1Tb8:**** Purpose:** Vector Quantize the second 3-vector of the 10 LSP parameters.**** Table Structure:** 8 bit, 256 entry table.*/short Band1Tb8[LspCbSize*3] = { 0, 0, 0, -2114, -1302, 76, -2652, -1278, -1368, -2847, -828, -349, -3812, -2190, -349, -3946, -364, -449, -2725, -4492, -3607, -3495, -4764, -1744, -51, -756, 84, -153, -1191, 504, 108, -1418, 1167, -835, -896, 390, -569, -1702, 87, -1151, -1818, 933, -1826, -2547, 411, -1842, -1818, 1451, -2438, -1611, 781, -2747, -2477, 1311, -940, 1252, 477, -1629, 1688, 602, -1202, 617, 280, -1737, 393, 580, -1528, 1077, 1199, -2165, -161, 1408, -2504, -1087, 2371, -3458, -175, 1395, -1397, -98, -843, -2252, -177, -1149, -1489, -726, -1283, -1558, -265, -1744, -1867, -821, -1897, -2062, -1516, -2340, -2595, -1142, -2861, 170, 46, -819, -193, -204, -1151, 326, -196, -1532, 780, 329, -816, 201, 369, -1243, 650, -209, -1060, 1144, -15, -1216, 1203, -259, -1867, -890, -564, -1430, -638, -852, -1921, 177, -739, -1358, -261, -526, -1666, 206, -407, -2255, 338, -526, -822, 421, -1095, -1009, 765, -607, -1408, 825, -1295, -2004, 357, -905, -1815, -58, -1248, -1588, -596, -1436, -2046, -73, -1159, -2116, -115, -1382, -2581, -160, -1723, -1952, -6, -2196, -2954, -649, -1705, -2603, -617, -1453, -3282, -949, -2019, -3102, -812, 1544, 1937, -1854, 574, 2000, -1463, 1140, 2649, -2683, 1748, 1452, -2486, 2241, 2523, 783, 1910, 1435, 581, 2682, 1376, 236, 2197, 1885, -453, 2943, 2057, -682, 2178, 2565, -1342, 3201, 3328, -288, -184, 262, 121, -149, -183, 758, -412, 206, 1038, -204, 853, 1577, -457, 700, 937, -640, -567, 1508, -528, -1024, -225, -527, -427, -564, -1095, -332, -742, -353, -186,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -