📄 funcg722.c
字号:
. Inputs : Outputs : none Return Value : ___________________________________________________________________________*/Word16 invqbl (ilr, detl, mode)Word16 ilr;Word16 detl;Word16 mode;{ /* Inverse quantizer 4, 5, and 6 bit tables for the decoder */ static Word16 ril4[16] = {0, 7, 6, 5, 4, 3, 2, 1, 7, 6, 5, 4, 3, 2, 1, 0}; static Word16 risi4[16] = {0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0}; static Word16 oq4[8] = {0, 150, 323, 530, 786, 1121, 1612, 2557}; static Word16 ril5[32] = { 1, 1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1}; static Word16 risi5[32] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}; static Word16 oq5[16] = { 0, 35, 110, 190, 276, 370, 473, 587, 714, 858, 1023, 1219, 1458, 1765, 2195, 2919}; static Word16 ril6[64] = { 1, 1, 1, 1, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2, 1}; static Word16 risi6[64] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, -1, -1}; static Word16 oq6[31] = { 0, 17, 54, 91, 130, 170, 211, 254, 300, 347, 396, 447, 501, 558, 618, 682, 750, 822, 899, 982, 1072, 1170, 1279, 1399, 1535, 1689, 1873, 2088, 2376, 2738, 3101}; /* Local variables */ Word16 ril, wd1, wd2; switch (mode) { case 0: case 1: ril = ilr; wd1 = shl (oq6[ril6[ril]], 3); wd2 = (risi6[ril] == 0) ? add (0, wd1) : sub (0, wd1); break; case 2: ril = shr (ilr, 1); wd1 = shl (oq5[ril5[ril]], 3); wd2 = (risi5[ril] == 0) ? add (0, wd1) : sub (0, wd1); break; case 3: ril = shr (ilr, 2); wd1 = shl (oq4[ril4[ril]], 3); wd2 = (risi4[ril] == 0) ? add (0, wd1) : sub (0, wd1); break; default: /* default to mode 3 */ ril = shr (ilr, 2); wd1 = shl (oq4[ril4[ril]], 3); wd2 = (risi4[ril] == 0) ? add (0, wd1) : sub (0, wd1); break; } return (mult (detl, wd2));}/* ..................... End of invqbl() ..................... *//*___________________________________________________________________________ Function Name : invqah Purpose : . Inputs : Outputs : none Return Value : ___________________________________________________________________________*/Word16 invqah (ih, deth)Word16 ih;Word16 deth;{ static Word16 ih2[4] = {2, 1, 2, 1}; static Word16 sih[4] = {-1, -1, 0, 0}; static Word16 oq2[3] = {0, 202, 926}; Word16 wd1, wd2; wd1 = shl (oq2[ih2[ih]], 3); wd2 = (sih[ih] == 0) ? wd1 : negate (wd1); return mult (wd2, deth);}/* ..................... End of invqah() ..................... *//*___________________________________________________________________________ Function Name : limit Purpose : . Inputs : Outputs : none Return Value : ___________________________________________________________________________*/Word16 limit (rl)Word16 rl;{ Word16 yl; yl = (rl > 16383) ? 16383 : ((rl < -16384) ? -16384 : rl); return (yl);}/* ..................... End of limit() ..................... *//*___________________________________________________________________________ Function Name : logsch Purpose : . Inputs : Outputs : none Return Value : ___________________________________________________________________________*/Word16 logsch (ih, nbh)Word16 ih;Word16 nbh;{ static Word16 ih2[4] = {2, 1, 2, 1}; static Word16 wh[3] = {0, -214, 798}; Word16 wd, nbph; wd = mult (nbh, 32512); nbph = add (wd, wh[ih2[ih]]); nbph = (nbph < 0) ? 0 : ((nbph > 22528) ? 22528 : nbph); return (nbph);}/* ..................... End of logsch() ..................... *//*___________________________________________________________________________ Function Name : logscl Purpose : . Inputs : Outputs : none Return Value : ___________________________________________________________________________*/Word16 logscl (il,nbl )Word16 il;Word16 nbl;{ static Word16 ril4[16] = {0, 7, 6, 5, 4, 3, 2, 1, 7, 6, 5, 4, 3, 2, 1, 0}; static Word16 wl[8] = {-60, -30, 58, 172, 334, 538, 1198, 3042}; Word16 ril, wd, nbpl, il4; ril = shr (il, 2); wd = mult (nbl, 32512); il4 = ril4[ril]; nbpl = add (wd, wl[il4]); nbpl = (nbpl < 0) ? 0 : ((nbpl > 18432) ? 18432 : nbpl); return (nbpl);}/* ..................... End of logscl() ..................... *//* ************** Table ILA used by scalel and scaleh ******************** */static Word16 ila[353] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 18, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 27, 27, 28, 28, 29, 30, 31, 31, 32, 33, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 60, 61, 63, 64, 65, 67, 68, 70, 71, 73, 75, 76, 78, 80, 82, 83, 85, 87, 89, 91, 93, 95, 97, 99, 102, 104, 106, 109, 111, 113, 116, 118, 121, 124, 127, 129, 132, 135, 138, 141, 144, 147, 151, 154, 157, 161, 165, 168, 172, 176, 180, 184, 188, 192, 196, 200, 205, 209, 214, 219, 223, 228, 233, 238, 244, 249, 255, 260, 266, 272, 278, 284, 290, 296, 303, 310, 316, 323, 331, 338, 345, 353, 361, 369, 377, 385, 393, 402, 411, 420, 429, 439, 448, 458, 468, 478, 489, 500, 511, 522, 533, 545, 557, 569, 582, 594, 607, 621, 634, 648, 663, 677, 692, 707, 723, 739, 755, 771, 788, 806, 823, 841, 860, 879, 898, 918, 938, 958, 979, 1001, 1023, 1045, 1068, 1092, 1115, 1140, 1165, 1190, 1216, 1243, 1270, 1298, 1327, 1356, 1386, 1416, 1447, 1479, 1511, 1544, 1578, 1613, 1648, 1684, 1721, 1759, 1797, 1837, 1877, 1918, 1960, 2003, 2047, 2092, 2138, 2185, 2232, 2281, 2331, 2382, 2434, 2488, 2542, 2598, 2655, 2713, 2773, 2833, 2895, 2959, 3024, 3090, 3157, 3227, 3297, 3370, 3443, 3519, 3596, 3675, 3755, 3837, 3921, 4007, 4095};/* ************************* End of Table ILA **************************** *//*___________________________________________________________________________ Function Name : scalel Purpose : . Inputs : Outputs : none Return Value :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -