化痰止咳吃什么药最好| 樟脑是什么东西| 物色是什么意思| 虚岁30岁属什么生肖| 1963年发生了什么| 杯葛是什么意思| 霉菌性阴道炎是什么引起的| crp是什么| 什么皮肤病会传染| 88属什么生肖| 经常头疼挂什么科| 为什么血压高| 什么车性价比最高| 怀孕什么时候能测出来| 什么地爬| 晚上头疼是什么原因| 头发轻轻一拉就掉了是什么原因| 大便成细条状是什么病| 尿不干净有余尿是什么原因| 1995年是什么年| 八字带什么的长寿| 改年龄需要什么手续| 腹胀是什么病的前兆| 血常规wbc是什么意思| 什么龟最贵| 吃什么可以快速美白| 七月十一是什么星座| 身体缺钾有什么症状| 肌酐高用什么药| 夫妻少配无刑是什么意思| 母亲节一般送什么礼物| 总胆汁酸高说明什么| 踏实是什么意思| 导火索是什么意思| 梦见古墓是什么意思| 四十年婚姻是什么婚| 什么的老虎| 小孩爱吃手指头是什么原因| 门客是什么意思| 月加亏念什么| 武夷山岩茶属于什么茶| 咽喉痛吃什么药| 血热吃什么| 牙疼不能吃什么| chocker是什么| bc是什么牌子| 空囊是什么原因造成的| 十周年是什么婚| 寅时五行属什么| 腰疼吃点什么药| 有志什么成| 三七粉适合什么人群喝| 胃炎吃什么食物好| icicle是什么牌子| 疱疹吃什么药好| 时柱比肩是什么意思| 亮油什么时候涂| 痛风什么蔬菜不能吃| 甲鱼是什么| 胸闷气短呼吸困难心慌是什么原因| 淼淼是什么意思| 正视是什么意思| 男人肾虚吃什么最补| 国企混改是什么意思| 深海鱼油什么牌子好| 补血吃什么水果| 血红蛋白浓度偏高是什么意思| 钙果是什么水果| 茉字五行属什么| 布洛芬的副作用是什么| 你为什么背着我爱别人| 多囊肾是什么意思| 黄牛什么意思| 社会抚养费是什么意思| 南瓜和什么不能一起吃| 手指缝里长水泡还痒是什么原因| 恶性循环是什么意思| 4月2号什么星座| 入港是什么意思| 蒙脱石散是什么药| au999是什么意思| 西字里面加一横是什么字| 结膜出血是什么原因| 甲状腺腺体回声欠均匀是什么意思| 经常肚子疼拉肚子是什么原因| 蛇缠腰用什么药| 云南白药里面的保险子有什么用| 孤独症有什么表现| 出山是什么意思| 无痛肠镜和普通肠镜有什么区别| 甲状腺做什么检查| 化疗后白细胞低吃什么食物补得快| 变爻是什么意思| 听吧新征程号角吹响是什么歌| 黄鼻涕是什么类型的感冒| gt是什么意思| 远在天边近在眼前是什么意思| 什么牌子的蜂胶最好| 得糖尿病的原因是什么| 杏仁是什么| 什么的小朋友填词语| 人为什么要睡觉| whirlpool是什么牌子| 晚上12点是什么时辰| 学分是什么| 字形是什么意思| 窦性早搏是什么意思| 褥疮用什么药膏最好| 腹泻能吃什么| 四大皆空是什么意思| 放射治疗是什么意思| 病毒性发烧吃什么药| 什么是分子| 微量元素六项是什么检查| 喉咙上火吃什么药| 银壶一般什么价位| 高处不胜寒什么意思| 梦见打仗是什么意思| 乌鸡汤放什么材料| 水痘擦什么药膏好得快| 吃什么皮肤会变白| 826是什么星座| 空腹不能吃什么水果| 什么可当| 可爱的动物是什么生肖| 想吃辣是身体缺乏什么| 羊膜束带是什么意思| 美籍华人是什么意思| 月经安全期是什么时候| 属牛男最在乎女人什么| 心气不足是什么意思| 6月是什么星座| 淋巴细胞高是什么意思| 12月1日什么星座| 人体的三道防线是什么| 进口二甲双胍叫什么| 已是什么生肖| 男朋友生日送什么礼物| 能够握紧的就别放了是什么歌| 梦见掉牙齿是什么意思| 爱放屁是什么原因| hds是什么意思| 孕晚期血糖高对胎儿有什么影响| 舞蹈考级有什么用| 人参和什么泡酒壮阳| 大便颗粒状是什么原因| 指甲挂什么科| 躲春是什么意思| 脚心有痣代表什么意思| 发热是什么症状| 清歌是什么意思| cga是什么意思| 身体皮肤痒是什么原因| 米咖色是什么颜色| 保养是什么意思| 有什么不能说| 桉是什么意思| 蛀牙是什么原因引起的| 耳根疼是什么原因| 什么是梅雨季节| 宝宝发烧是什么原因引起的| 儿童支气管炎吃什么药| 玩得什么| 氯雷他定片是什么药| OK镜适合什么年龄| 会来事是什么意思| 胃怕凉怕冷是什么原因| rsa是什么意思| 兽中之王是什么动物| 唐僧肉是什么意思| 孩子手抖是什么原因| 送男生什么生日礼物| 食少便溏是什么意思| 孕妇感冒了可以吃什么药| 梦到买房子是什么意思| 外来猫进家有什么预兆| 梦见表姐是什么意思| 公积金有什么作用| 辟邪剑谱和葵花宝典有什么关系| 邂逅什么意思| 曹操属什么| 两胸中间疼是什么原因| 377是什么意思| 今年72岁属什么生肖| 贤内助什么意思| 引产挂什么科| 下午两点多是什么时辰| 黄疸高对婴儿有什么影响| 什么是金融行业| 卜留克是什么菜| 夜尿频多吃什么药效果好| 橱窗是什么意思| 花胶是鱼的什么部位| 211是什么星座| 蓝色加红色等于什么颜色| 痔疮用什么药膏| 菠萝不能和什么一起吃| 金国是什么民族| 呸是什么意思| bopv是什么疫苗| 市组织部长是什么级别| 什么的点头| 心跳慢吃什么药| 大于90度的角是什么角| 肾功能不好有什么症状| 关税是什么意思| 孕初期有什么症状| 澳门车牌号是什么样子| 越吃越瘦是什么原因| 经行是什么意思| 橡胶过敏是什么症状| 带状疱疹用什么药好| 慢性咽炎用什么药| 炖牛肉放什么调料最好| 1月14日什么星座| 1980年是什么年| 泰州有什么好玩的地方| 门诊号是什么意思| 脑膜瘤钙化意味着什么| 脚老抽筋是什么原因| 痔疮手术后可以吃什么| 柏油是什么| md鞋底是什么材质| 关节退行性变是什么意思| 氨咖黄敏胶囊主治什么| cnb是什么意思| 尿道感染流脓吃什么药| 花甲吃什么| 辣椒什么时候种| 大拇指发抖是什么原因| 疣是什么东西| 肠胃不好吃什么比较好| 公务员国考和省考有什么区别| 萧何字什么| 六七年属什么生肖| 吃什么生精养精最快| 46岁属什么| 薏米有什么功效| 儿童过敏性咳嗽吃什么药| 为什么招蚊子咬| 小腹疼痛是什么原因| 动物的尾巴有什么用处| 成人改名字需要什么手续| 奔跑吧什么时候播出| 男人本色是什么意思| 推拿是什么意思| 亥是什么意思| 干燥综合征挂什么科| 出库是什么意思| 怀孕了不能吃什么| 今天美国什么节日| 冰箱保鲜室不制冷是什么原因| 吃西兰花有什么好处| swisse是什么药| 绿豆汤什么颜色| 台风什么时候结束| 男性生殖器官叫什么| 什么是腺体| 霉菌阴道炎用什么药| 什么减肥效果最好| 什么是年金| 口苦口臭是什么原因| 蛤蜊是什么| 重庆为什么叫雾都| 百度

包煎是什么意思


Directory: ../../../ffmpeg/
File: src/libavcodec/bgmc.c
Date: 2025-08-04 00:43:16
Exec Total Coverage
Lines: 67 71 94.4%
Functions: 7 7 100.0%
Branches: 23 26 88.5%

Line Branch Exec Source
1 /*
2 * Block Gilbert-Moore decoder
3 * Copyright (c) 2010 Thilo Borgmann <thilo.borgmann _at_ mail.de>
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22 /**
23 * @file
24 * Block Gilbert-Moore decoder as used by MPEG-4 ALS
25 * @author Thilo Borgmann <thilo.borgmann _at_ mail.de>
26 */
27
28 #include "libavutil/attributes.h"
29 #include "libavutil/mem.h"
30 #include "bgmc.h"
31
32 #define FREQ_BITS 14 // bits used by frequency counters
33 #define VALUE_BITS 18 // bits used to represent the values
34 #define TOP_VALUE ((1 << VALUE_BITS) - 1) // maximum value
35 #define FIRST_QTR (TOP_VALUE / 4 + 1) // first quarter of values maximum value
36 #define HALF (2 * FIRST_QTR) // first half of values maximum value
37 #define THIRD_QTR (3 * FIRST_QTR) // third quarter of values maximum value
38
39 #define LUT_BITS (FREQ_BITS - 8) // number of bits used to index lookup tables
40 #define LUT_SIZE (1 << LUT_BITS) // size of the lookup tables
41 #define LUT_BUFF 4 // number of buffered lookup tables
42
43
44 /** Cumulative frequency tables for block Gilbert-Moore coding. */
45 static const uint16_t cf_tables_1[3][129] = {
46 {
47 16384, 16066, 15748, 15431, 15114, 14799, 14485, 14173, 13861, 13552,
48 13243, 12939, 12635, 12336, 12038, 11745, 11452, 11161, 10870, 10586,
49 10303, 10027, 9751, 9483, 9215, 8953, 8692, 8440, 8189, 7946,
50 7704, 7472, 7240, 7008, 6776, 6554, 6333, 6122, 5912, 5711,
51 5512, 5320, 5128, 4947, 4766, 4595, 4425, 4264, 4104, 3946,
52 3788, 3640, 3493, 3355, 3218, 3090, 2963, 2842, 2721, 2609,
53 2498, 2395, 2292, 2196, 2100, 2004, 1908, 1820, 1732, 1651,
54 1570, 1497, 1424, 1355, 1287, 1223, 1161, 1100, 1044, 988,
55 938, 888, 839, 790, 746, 702, 662, 623, 588, 553,
56 520, 488, 459, 431, 405, 380, 357, 334, 311, 288,
57 268, 248, 230, 213, 197, 182, 168, 154, 142, 130,
58 119, 108, 99, 90, 81, 72, 64, 56, 49, 42,
59 36, 30, 25, 20, 15, 11, 7, 3, 0
60 },
61 {
62 16384, 16080, 15776, 15473, 15170, 14868, 14567, 14268, 13970, 13674,
63 13378, 13086, 12794, 12505, 12218, 11936, 11654, 11373, 11092, 10818,
64 10544, 10276, 10008, 9749, 9490, 9236, 8982, 8737, 8492, 8256,
65 8020, 7792, 7564, 7336, 7108, 6888, 6669, 6459, 6249, 6050,
66 5852, 5660, 5468, 5286, 5104, 4931, 4760, 4598, 4436, 4275,
67 4115, 3965, 3816, 3674, 3534, 3403, 3272, 3147, 3023, 2907,
68 2792, 2684, 2577, 2476, 2375, 2274, 2173, 2079, 1986, 1897,
69 1810, 1724, 1645, 1567, 1493, 1419, 1351, 1284, 1222, 1161,
70 1105, 1050, 995, 941, 891, 842, 797, 753, 713, 673,
71 636, 599, 566, 533, 503, 473, 446, 419, 392, 365,
72 340, 316, 294, 272, 253, 234, 216, 199, 184, 169,
73 155, 142, 130, 118, 106, 95, 85, 75, 66, 57,
74 49, 41, 34, 27, 21, 15, 10, 5, 0
75 },
76 {
77 16384, 16092, 15801, 15510, 15219, 14930, 14641, 14355, 14069, 13785,
78 13501, 13219, 12938, 12661, 12384, 12112, 11841, 11571, 11301, 11037,
79 10773, 10514, 10256, 10005, 9754, 9508, 9263, 9025, 8787, 8557,
80 8327, 8103, 7879, 7655, 7431, 7215, 7000, 6792, 6585, 6387,
81 6190, 5998, 5807, 5625, 5445, 5272, 5100, 4937, 4774, 4613,
82 4452, 4301, 4150, 4007, 3865, 3731, 3597, 3469, 3341, 3218,
83 3099, 2981, 2869, 2758, 2652, 2546, 2440, 2334, 2234, 2134,
84 2041, 1949, 1864, 1779, 1699, 1620, 1547, 1474, 1407, 1340,
85 1278, 1217, 1157, 1097, 1043, 989, 940, 891, 846, 801,
86 759, 718, 680, 643, 609, 575, 543, 511, 479, 447,
87 418, 389, 363, 337, 314, 291, 270, 249, 230, 212,
88 195, 179, 164, 149, 135, 121, 108, 96, 85, 74,
89 64, 54, 45, 36, 28, 20, 13, 6, 0
90 }
91 };
92
93
94 static const uint16_t cf_tables_2[8][193] = {
95 {
96 16384, 16104, 15825, 15546, 15268, 14991, 14714, 14439, 14164, 13891,
97 13620, 13350, 13081, 12815, 12549, 12287, 12025, 11765, 11505, 11250,
98 10996, 10746, 10497, 10254, 10011, 9772, 9534, 9303, 9072, 8848,
99 8624, 8406, 8188, 7970, 7752, 7539, 7327, 7123, 6919, 6724,
100 6529, 6339, 6150, 5970, 5790, 5618, 5446, 5282, 5119, 4957,
101 4795, 4642, 4490, 4345, 4201, 4065, 3929, 3798, 3669, 3547,
102 3425, 3310, 3196, 3086, 2976, 2866, 2756, 2650, 2545, 2447,
103 2350, 2260, 2170, 2085, 2000, 1921, 1843, 1770, 1698, 1632,
104 1566, 1501, 1436, 1376, 1316, 1261, 1207, 1157, 1108, 1061,
105 1015, 973, 931, 893, 855, 819, 783, 747, 711, 677,
106 644, 614, 584, 557, 530, 505, 480, 458, 436, 416,
107 396, 378, 360, 343, 326, 310, 295, 281, 267, 255,
108 243, 232, 221, 211, 201, 192, 183, 174, 166, 158,
109 150, 142, 134, 126, 119, 112, 106, 100, 95, 90,
110 85, 80, 76, 72, 69, 66, 63, 60, 57, 54,
111 51, 48, 46, 44, 42, 40, 38, 36, 34, 33,
112 32, 31, 30, 29, 28, 27, 26, 25, 24, 23,
113 22, 21, 20, 19, 18, 17, 16, 15, 14, 13,
114 12, 11, 10, 9, 8, 7, 6, 5, 4, 3,
115 2, 1, 0
116 },
117 {
118 16384, 16116, 15849, 15582, 15316, 15050, 14785, 14521, 14257, 13995,
119 13734, 13476, 13218, 12963, 12708, 12457, 12206, 11956, 11706, 11460,
120 11215, 10975, 10735, 10500, 10265, 10034, 9803, 9579, 9355, 9136,
121 8917, 8703, 8489, 8275, 8061, 7853, 7645, 7444, 7244, 7051,
122 6858, 6671, 6484, 6305, 6127, 5956, 5785, 5622, 5459, 5298,
123 5137, 4983, 4830, 4684, 4539, 4401, 4263, 4131, 3999, 3874,
124 3750, 3632, 3515, 3401, 3287, 3173, 3059, 2949, 2840, 2737,
125 2635, 2539, 2444, 2354, 2264, 2181, 2098, 2020, 1943, 1872,
126 1801, 1731, 1661, 1596, 1532, 1472, 1412, 1357, 1303, 1251,
127 1200, 1153, 1106, 1063, 1020, 979, 938, 897, 856, 818,
128 780, 746, 712, 681, 650, 621, 592, 566, 540, 517,
129 494, 473, 452, 431, 410, 391, 373, 356, 340, 325,
130 310, 296, 282, 270, 258, 247, 236, 225, 214, 203,
131 192, 182, 172, 162, 153, 144, 136, 128, 121, 114,
132 108, 102, 97, 92, 87, 82, 77, 73, 69, 65,
133 62, 59, 56, 53, 50, 47, 45, 43, 41, 39,
134 37, 35, 33, 31, 29, 27, 26, 25, 24, 23,
135 22, 21, 20, 19, 18, 17, 16, 15, 14, 13,
136 12, 11, 10, 9, 8, 7, 6, 5, 4, 3,
137 2, 1, 0
138 },
139 {
140 16384, 16128, 15872, 15617, 15362, 15107, 14853, 14600, 14347, 14096,
141 13846, 13597, 13350, 13105, 12860, 12618, 12376, 12135, 11894, 11657,
142 11421, 11189, 10957, 10730, 10503, 10279, 10056, 9838, 9620, 9407,
143 9195, 8987, 8779, 8571, 8363, 8159, 7955, 7758, 7561, 7371,
144 7182, 6997, 6812, 6635, 6459, 6289, 6120, 5957, 5795, 5634,
145 5473, 5319, 5165, 5018, 4871, 4732, 4593, 4458, 4324, 4197,
146 4071, 3951, 3831, 3714, 3597, 3480, 3363, 3250, 3138, 3032,
147 2927, 2828, 2729, 2635, 2541, 2453, 2366, 2284, 2202, 2126,
148 2050, 1975, 1900, 1830, 1761, 1697, 1633, 1574, 1515, 1459,
149 1403, 1351, 1300, 1252, 1205, 1160, 1115, 1070, 1025, 982,
150 939, 899, 860, 824, 789, 756, 723, 693, 663, 636,
151 609, 584, 559, 535, 511, 489, 467, 447, 427, 409,
152 391, 374, 358, 343, 328, 313, 300, 287, 274, 261,
153 248, 235, 223, 211, 200, 189, 179, 169, 160, 151,
154 143, 135, 128, 121, 115, 109, 103, 97, 92, 87,
155 82, 77, 73, 69, 65, 61, 58, 55, 52, 49,
156 46, 43, 40, 37, 35, 33, 31, 29, 27, 25,
157 23, 21, 20, 19, 18, 17, 16, 15, 14, 13,
158 12, 11, 10, 9, 8, 7, 6, 5, 4, 3,
159 2, 1, 0
160 },
161 {
162 16384, 16139, 15894, 15649, 15405, 15162, 14919, 14677, 14435, 14195,
163 13955, 13717, 13479, 13243, 13008, 12775, 12542, 12310, 12079, 11851,
164 11623, 11399, 11176, 10956, 10737, 10521, 10305, 10094, 9883, 9677,
165 9471, 9268, 9065, 8862, 8659, 8459, 8260, 8067, 7874, 7688,
166 7502, 7321, 7140, 6965, 6790, 6621, 6452, 6290, 6128, 5968,
167 5808, 5655, 5503, 5356, 5209, 5069, 4929, 4794, 4660, 4532,
168 4404, 4282, 4160, 4041, 3922, 3803, 3684, 3568, 3452, 3343,
169 3234, 3131, 3029, 2931, 2833, 2741, 2649, 2563, 2477, 2396,
170 2316, 2236, 2157, 2083, 2009, 1940, 1871, 1807, 1743, 1683,
171 1623, 1567, 1511, 1459, 1407, 1357, 1307, 1257, 1207, 1159,
172 1111, 1067, 1023, 983, 943, 905, 868, 834, 800, 769,
173 738, 709, 681, 653, 625, 600, 575, 552, 529, 508,
174 487, 466, 447, 428, 410, 392, 376, 360, 344, 328,
175 313, 298, 283, 268, 255, 242, 230, 218, 207, 196,
176 186, 176, 167, 158, 150, 142, 135, 128, 121, 114,
177 108, 102, 97, 92, 87, 82, 78, 74, 70, 66,
178 62, 58, 54, 50, 47, 44, 41, 38, 35, 32,
179 30, 28, 26, 24, 22, 20, 18, 16, 14, 13,
180 12, 11, 10, 9, 8, 7, 6, 5, 4, 3,
181 2, 1, 0
182 },
183 {
184 16384, 16149, 15915, 15681, 15447, 15214, 14981, 14749, 14517, 14286,
185 14055, 13827, 13599, 13373, 13147, 12923, 12699, 12476, 12253, 12034,
186 11815, 11599, 11383, 11171, 10959, 10750, 10541, 10337, 10133, 9933,
187 9733, 9536, 9339, 9142, 8945, 8751, 8557, 8369, 8181, 7998,
188 7816, 7638, 7460, 7288, 7116, 6950, 6785, 6625, 6465, 6306,
189 6147, 5995, 5843, 5697, 5551, 5411, 5271, 5135, 5000, 4871,
190 4742, 4618, 4495, 4374, 4253, 4132, 4011, 3893, 3775, 3663,
191 3552, 3446, 3340, 3239, 3138, 3043, 2948, 2858, 2768, 2684,
192 2600, 2516, 2433, 2355, 2278, 2205, 2133, 2065, 1997, 1932,
193 1867, 1807, 1747, 1690, 1634, 1580, 1526, 1472, 1418, 1366,
194 1314, 1266, 1218, 1174, 1130, 1088, 1047, 1009, 971, 936,
195 901, 868, 836, 804, 772, 743, 714, 685, 658, 631,
196 606, 582, 559, 536, 515, 494, 475, 456, 437, 418,
197 399, 380, 362, 344, 328, 312, 297, 283, 270, 257,
198 245, 233, 222, 211, 201, 191, 181, 172, 163, 155,
199 147, 139, 132, 125, 119, 113, 107, 101, 96, 91,
200 86, 81, 76, 71, 66, 62, 58, 54, 50, 46,
201 43, 40, 37, 34, 31, 28, 26, 24, 22, 20,
202 18, 16, 14, 12, 10, 8, 6, 5, 4, 3,
203 2, 1, 0
204 },
205 {
206 16384, 16159, 15934, 15709, 15485, 15261, 15038, 14816, 14594, 14373,
207 14152, 13933, 13714, 13497, 13280, 13065, 12850, 12636, 12422, 12211,
208 12000, 11791, 11583, 11378, 11173, 10971, 10769, 10571, 10373, 10179,
209 9985, 9793, 9601, 9409, 9217, 9029, 8842, 8658, 8475, 8297,
210 8120, 7946, 7773, 7604, 7435, 7271, 7108, 6950, 6792, 6634,
211 6477, 6326, 6175, 6029, 5883, 5742, 5602, 5466, 5330, 5199,
212 5068, 4943, 4818, 4696, 4574, 4452, 4330, 4211, 4093, 3979,
213 3866, 3759, 3652, 3549, 3446, 3348, 3250, 3157, 3065, 2977,
214 2889, 2802, 2716, 2634, 2553, 2476, 2399, 2326, 2254, 2185,
215 2117, 2052, 1987, 1926, 1866, 1808, 1750, 1692, 1634, 1578,
216 1522, 1470, 1418, 1369, 1321, 1275, 1229, 1187, 1145, 1105,
217 1066, 1027, 991, 955, 919, 883, 850, 817, 786, 756,
218 728, 700, 674, 648, 624, 600, 578, 556, 534, 512,
219 490, 468, 447, 426, 407, 388, 371, 354, 338, 322,
220 307, 293, 280, 267, 255, 243, 231, 219, 209, 199,
221 189, 179, 170, 161, 153, 145, 138, 131, 124, 117,
222 111, 105, 99, 93, 87, 81, 76, 71, 66, 61,
223 57, 53, 49, 45, 42, 39, 36, 33, 30, 27,
224 24, 21, 19, 17, 15, 13, 11, 9, 7, 5,
225 3, 1, 0
226 },
227 {
228 16384, 16169, 15954, 15739, 15524, 15310, 15096, 14883, 14670, 14458,
229 14246, 14035, 13824, 13614, 13405, 13198, 12991, 12785, 12579, 12376,
230 12173, 11972, 11772, 11574, 11377, 11182, 10987, 10795, 10603, 10414,
231 10226, 10040, 9854, 9668, 9482, 9299, 9116, 8937, 8759, 8585,
232 8411, 8241, 8071, 7906, 7741, 7580, 7419, 7263, 7107, 6952,
233 6797, 6647, 6497, 6353, 6209, 6070, 5931, 5796, 5661, 5531,
234 5401, 5275, 5150, 5027, 4904, 4781, 4658, 4538, 4419, 4304,
235 4190, 4081, 3972, 3867, 3762, 3662, 3562, 3467, 3372, 3281,
236 3191, 3101, 3012, 2928, 2844, 2764, 2684, 2608, 2533, 2460,
237 2387, 2318, 2250, 2185, 2121, 2059, 1997, 1935, 1873, 1813,
238 1754, 1698, 1642, 1588, 1535, 1483, 1433, 1384, 1338, 1292,
239 1249, 1206, 1165, 1125, 1085, 1045, 1008, 971, 937, 903,
240 871, 840, 810, 780, 752, 724, 698, 672, 647, 622,
241 597, 572, 548, 524, 502, 480, 460, 440, 421, 403,
242 386, 369, 353, 337, 323, 309, 295, 281, 268, 255,
243 243, 231, 220, 209, 199, 189, 180, 171, 163, 155,
244 147, 139, 131, 123, 116, 109, 102, 95, 89, 83,
245 77, 72, 67, 62, 57, 52, 48, 44, 40, 36,
246 32, 28, 25, 22, 19, 16, 13, 10, 8, 6,
247 4, 2, 0
248 },
249 {
250 16384, 16177, 15970, 15764, 15558, 15353, 15148, 14944, 14740, 14537,
251 14334, 14132, 13930, 13729, 13529, 13330, 13131, 12933, 12735, 12539,
252 12343, 12150, 11957, 11766, 11576, 11388, 11200, 11015, 10830, 10647,
253 10465, 10285, 10105, 9925, 9745, 9568, 9391, 9218, 9045, 8876,
254 8707, 8541, 8375, 8213, 8051, 7894, 7737, 7583, 7429, 7277,
255 7125, 6977, 6830, 6687, 6544, 6406, 6268, 6133, 5998, 5868,
256 5738, 5612, 5487, 5364, 5241, 5118, 4995, 4875, 4755, 4640,
257 4525, 4414, 4304, 4198, 4092, 3990, 3888, 3790, 3693, 3600,
258 3507, 3415, 3323, 3235, 3147, 3064, 2981, 2902, 2823, 2746,
259 2670, 2594, 2522, 2450, 2382, 2314, 2248, 2182, 2116, 2050,
260 1987, 1924, 1864, 1804, 1748, 1692, 1638, 1585, 1534, 1484,
261 1437, 1390, 1346, 1302, 1258, 1215, 1174, 1133, 1095, 1057,
262 1021, 986, 952, 918, 887, 856, 827, 798, 770, 742,
263 714, 686, 659, 632, 607, 582, 559, 536, 514, 492,
264 472, 452, 433, 415, 398, 381, 364, 348, 333, 318,
265 304, 290, 277, 264, 252, 240, 229, 218, 208, 198,
266 188, 178, 168, 158, 149, 140, 132, 124, 116, 108,
267 101, 94, 87, 81, 75, 69, 64, 59, 54, 49,
268 44, 39, 35, 31, 27, 23, 19, 15, 12, 9,
269 6, 3, 0
270 }
271 };
272
273
274 static const uint16_t cf_tables_3[5][257] = {
275 {
276 16384, 16187, 15990, 15793, 15597, 15401, 15205, 15009, 14813, 14618,
277 14423, 14230, 14037, 13845, 13653, 13463, 13273, 13083, 12894, 12706,
278 12518, 12332, 12146, 11962, 11778, 11597, 11416, 11237, 11059, 10882,
279 10706, 10532, 10358, 10184, 10010, 9838, 9666, 9497, 9328, 9163,
280 8999, 8837, 8675, 8517, 8359, 8205, 8051, 7901, 7751, 7602,
281 7453, 7308, 7163, 7022, 6882, 6745, 6609, 6476, 6343, 6214,
282 6085, 5960, 5835, 5712, 5589, 5466, 5343, 5223, 5103, 4987,
283 4872, 4761, 4650, 4542, 4435, 4332, 4229, 4130, 4031, 3936,
284 3841, 3747, 3653, 3563, 3473, 3387, 3302, 3220, 3138, 3059,
285 2980, 2905, 2830, 2759, 2688, 2619, 2550, 2481, 2412, 2345,
286 2278, 2215, 2152, 2092, 2032, 1974, 1917, 1863, 1809, 1758,
287 1707, 1659, 1611, 1564, 1517, 1473, 1429, 1387, 1346, 1307,
288 1268, 1230, 1193, 1158, 1123, 1090, 1058, 1026, 994, 962,
289 930, 899, 869, 841, 813, 786, 760, 735, 710, 687,
290 664, 643, 622, 602, 582, 562, 543, 525, 507, 490,
291 473, 457, 442, 427, 412, 398, 385, 373, 361, 349,
292 337, 325, 313, 301, 290, 279, 269, 259, 249, 240,
293 231, 222, 214, 206, 199, 192, 185, 178, 171, 165,
294 159, 153, 148, 143, 138, 133, 128, 123, 119, 115,
295 111, 107, 103, 99, 95, 91, 87, 83, 80, 77,
296 74, 71, 68, 65, 63, 61, 59, 57, 55, 53,
297 51, 49, 47, 45, 43, 41, 40, 39, 38, 37,
298 36, 35, 34, 33, 32, 31, 30, 29, 28, 27,
299 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,
300 16, 15, 14, 13, 12, 11, 10, 9, 8, 7,
301 6, 5, 4, 3, 2, 1, 0
302 },
303 {
304 16384, 16195, 16006, 15817, 15629, 15441, 15253, 15065, 14878, 14692,
305 14506, 14321, 14136, 13952, 13768, 13585, 13402, 13219, 13037, 12857,
306 12677, 12499, 12321, 12144, 11967, 11792, 11617, 11444, 11271, 11100,
307 10930, 10762, 10594, 10426, 10258, 10091, 9925, 9761, 9598, 9438,
308 9278, 9120, 8963, 8809, 8655, 8504, 8354, 8207, 8060, 7914,
309 7769, 7627, 7485, 7347, 7209, 7074, 6939, 6807, 6676, 6548,
310 6420, 6296, 6172, 6050, 5928, 5806, 5684, 5564, 5444, 5328,
311 5212, 5100, 4988, 4879, 4771, 4667, 4563, 4462, 4362, 4265,
312 4169, 4073, 3978, 3886, 3795, 3707, 3619, 3535, 3451, 3369,
313 3288, 3210, 3133, 3059, 2985, 2913, 2841, 2769, 2697, 2627,
314 2557, 2490, 2424, 2360, 2297, 2237, 2177, 2119, 2062, 2007,
315 1953, 1901, 1849, 1798, 1748, 1700, 1652, 1607, 1562, 1519,
316 1476, 1435, 1394, 1355, 1317, 1281, 1245, 1210, 1175, 1140,
317 1105, 1071, 1037, 1005, 973, 943, 913, 885, 857, 830,
318 804, 779, 754, 731, 708, 685, 663, 642, 621, 601,
319 581, 563, 545, 528, 511, 495, 479, 463, 448, 433,
320 419, 405, 391, 377, 364, 351, 338, 326, 314, 302,
321 291, 280, 270, 260, 251, 242, 234, 226, 218, 210,
322 202, 195, 188, 181, 174, 168, 162, 156, 150, 144,
323 139, 134, 129, 124, 119, 114, 109, 104, 100, 96,
324 92, 88, 84, 80, 77, 74, 71, 68, 65, 62,
325 59, 56, 54, 52, 50, 48, 46, 44, 42, 40,
326 38, 36, 34, 33, 32, 31, 30, 29, 28, 27,
327 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,
328 16, 15, 14, 13, 12, 11, 10, 9, 8, 7,
329 6, 5, 4, 3, 2, 1, 0
330 },
331 {
332 16384, 16203, 16022, 15842, 15662, 15482, 15302, 15122, 14942, 14763,
333 14584, 14406, 14228, 14051, 13874, 13698, 13522, 13347, 13172, 12998,
334 12824, 12652, 12480, 12310, 12140, 11971, 11803, 11637, 11471, 11307,
335 11143, 10980, 10817, 10654, 10491, 10330, 10169, 10011, 9853, 9697,
336 9542, 9389, 9236, 9086, 8936, 8789, 8642, 8498, 8355, 8212,
337 8070, 7931, 7792, 7656, 7520, 7388, 7256, 7126, 6996, 6870,
338 6744, 6621, 6498, 6377, 6256, 6135, 6014, 5895, 5776, 5660,
339 5545, 5433, 5321, 5212, 5104, 4999, 4895, 4793, 4692, 4594,
340 4496, 4400, 4304, 4211, 4118, 4028, 3939, 3853, 3767, 3684,
341 3601, 3521, 3441, 3364, 3287, 3212, 3137, 3062, 2987, 2915,
342 2843, 2773, 2704, 2638, 2572, 2508, 2445, 2384, 2324, 2266,
343 2208, 2153, 2098, 2044, 1990, 1939, 1888, 1839, 1791, 1745,
344 1699, 1655, 1611, 1569, 1527, 1487, 1448, 1409, 1370, 1331,
345 1292, 1255, 1218, 1183, 1148, 1115, 1082, 1051, 1020, 990,
346 960, 932, 904, 878, 852, 826, 801, 777, 753, 731,
347 709, 687, 666, 645, 625, 605, 586, 567, 550, 533,
348 516, 499, 482, 465, 449, 433, 418, 403, 389, 375,
349 362, 349, 337, 325, 314, 303, 293, 283, 273, 263,
350 254, 245, 236, 227, 219, 211, 204, 197, 190, 183,
351 177, 171, 165, 159, 153, 147, 141, 135, 130, 125,
352 120, 115, 110, 105, 101, 97, 93, 89, 85, 81,
353 77, 74, 71, 68, 65, 62, 59, 56, 53, 51,
354 49, 47, 45, 43, 41, 39, 37, 35, 33, 31,
355 29, 27, 25, 23, 22, 21, 20, 19, 18, 17,
356 16, 15, 14, 13, 12, 11, 10, 9, 8, 7,
357 6, 5, 4, 3, 2, 1, 0
358 },
359 {
360 16384, 16210, 16036, 15863, 15690, 15517, 15344, 15172, 15000, 14828,
361 14656, 14485, 14314, 14145, 13976, 13808, 13640, 13472, 13304, 13137,
362 12970, 12804, 12639, 12475, 12312, 12149, 11987, 11827, 11667, 11508,
363 11349, 11192, 11035, 10878, 10721, 10565, 10410, 10257, 10104, 9953,
364 9802, 9654, 9506, 9359, 9213, 9070, 8927, 8787, 8647, 8508,
365 8369, 8233, 8097, 7964, 7831, 7700, 7570, 7442, 7315, 7190,
366 7065, 6943, 6821, 6701, 6581, 6461, 6341, 6223, 6105, 5990,
367 5876, 5764, 5653, 5545, 5437, 5331, 5226, 5124, 5022, 4924,
368 4826, 4729, 4632, 4538, 4444, 4353, 4262, 4174, 4087, 4002,
369 3917, 3835, 3753, 3674, 3595, 3518, 3441, 3364, 3287, 3212,
370 3138, 3066, 2995, 2926, 2858, 2792, 2726, 2662, 2599, 2538,
371 2478, 2420, 2362, 2305, 2249, 2195, 2141, 2089, 2037, 1988,
372 1939, 1891, 1844, 1799, 1754, 1711, 1668, 1626, 1584, 1542,
373 1500, 1459, 1418, 1380, 1342, 1305, 1269, 1234, 1199, 1166,
374 1133, 1102, 1071, 1041, 1012, 983, 954, 926, 899, 872,
375 847, 822, 798, 774, 751, 728, 707, 686, 666, 646,
376 627, 608, 589, 570, 552, 534, 517, 500, 484, 468,
377 453, 438, 424, 410, 397, 384, 372, 360, 348, 336,
378 325, 314, 303, 293, 283, 273, 264, 255, 246, 237,
379 229, 221, 213, 205, 197, 189, 181, 174, 167, 160,
380 154, 148, 142, 136, 131, 126, 121, 116, 111, 106,
381 101, 97, 93, 89, 85, 81, 77, 73, 70, 67,
382 64, 61, 58, 55, 52, 49, 46, 43, 40, 37,
383 35, 33, 31, 29, 27, 25, 23, 21, 19, 17,
384 16, 15, 14, 13, 12, 11, 10, 9, 8, 7,
385 6, 5, 4, 3, 2, 1, 0
386 },
387 {
388 16384, 16218, 16052, 15886, 15720, 15554, 15389, 15224, 15059, 14895,
389 14731, 14567, 14403, 14240, 14077, 13915, 13753, 13591, 13429, 13269,
390 13109, 12950, 12791, 12633, 12476, 12320, 12164, 12009, 11854, 11701,
391 11548, 11396, 11244, 11092, 10940, 10790, 10640, 10492, 10344, 10198,
392 10052, 9908, 9764, 9622, 9481, 9342, 9203, 9066, 8929, 8793,
393 8657, 8524, 8391, 8261, 8131, 8003, 7875, 7749, 7624, 7502,
394 7380, 7260, 7140, 7022, 6904, 6786, 6668, 6551, 6435, 6322,
395 6209, 6099, 5989, 5881, 5773, 5668, 5563, 5461, 5359, 5260,
396 5161, 5063, 4965, 4871, 4777, 4686, 4595, 4506, 4417, 4331,
397 4245, 4162, 4079, 3999, 3919, 3841, 3763, 3685, 3607, 3530,
398 3454, 3380, 3307, 3236, 3166, 3097, 3029, 2963, 2897, 2834,
399 2771, 2710, 2650, 2591, 2532, 2475, 2418, 2363, 2309, 2257,
400 2205, 2155, 2105, 2057, 2009, 1963, 1918, 1873, 1828, 1783,
401 1738, 1694, 1650, 1607, 1565, 1524, 1484, 1445, 1407, 1369,
402 1333, 1297, 1263, 1229, 1197, 1165, 1134, 1103, 1073, 1043,
403 1015, 987, 960, 933, 907, 882, 858, 834, 811, 788,
404 766, 744, 722, 700, 679, 658, 638, 618, 599, 581,
405 563, 545, 528, 511, 495, 480, 465, 451, 437, 423,
406 410, 397, 384, 372, 360, 348, 337, 326, 315, 305,
407 295, 285, 275, 265, 255, 245, 236, 227, 219, 211,
408 203, 195, 188, 181, 174, 167, 161, 155, 149, 143,
409 137, 131, 126, 121, 116, 111, 106, 101, 97, 93,
410 89, 85, 81, 77, 73, 69, 65, 61, 58, 55,
411 52, 49, 46, 43, 40, 37, 34, 32, 30, 28,
412 26, 24, 22, 20, 18, 16, 14, 12, 10, 8,
413 6, 5, 4, 3, 2, 1, 0
414 }
415 };
416
417
418 static const uint16_t *const cf_table[16] = {
419 cf_tables_1[0], cf_tables_1[1], cf_tables_1[2], cf_tables_2[0],
420 cf_tables_2[1], cf_tables_2[2], cf_tables_2[3], cf_tables_2[4],
421 cf_tables_2[5], cf_tables_2[6], cf_tables_2[7], cf_tables_3[0],
422 cf_tables_3[1], cf_tables_3[2], cf_tables_3[3], cf_tables_3[4]
423 };
424
425
426 /** Initialize a given lookup table using a given delta */
427 33 static void bgmc_lut_fillp(uint8_t *lut, int *lut_status, int delta)
428 {
429 unsigned int sx, i;
430
431
2/2
✓ Branch 0 taken 528 times.
✓ Branch 1 taken 33 times.
561 for (sx = 0; sx < 16; sx++)
432
2/2
✓ Branch 0 taken 33792 times.
✓ Branch 1 taken 528 times.
34320 for (i = 0; i < LUT_SIZE; i++) {
433 33792 unsigned int target = (i + 1) << (FREQ_BITS - LUT_BITS);
434 33792 unsigned int symbol = 1 << delta;
435
436
2/2
✓ Branch 0 taken 179727 times.
✓ Branch 1 taken 33792 times.
213519 while (cf_table[sx][symbol] > target)
437 179727 symbol += 1 << delta;
438
439 33792 *lut++ = symbol >> delta;
440 }
441
442 33 *lut_status = delta;
443 33 }
444
445
446 /** Retune the index of a suitable lookup table for a given delta */
447 3148 static uint8_t *bgmc_lut_getp(uint8_t *lut, int *lut_status, int delta)
448 {
449 3148 unsigned int i = av_clip(delta, 0, LUT_BUFF - 1);
450
451 3148 lut += (i * LUT_SIZE) << 4;
452
453
2/2
✓ Branch 0 taken 33 times.
✓ Branch 1 taken 3115 times.
3148 if (lut_status[i] != delta)
454 33 bgmc_lut_fillp(lut, &lut_status[i], delta);
455
456 3148 return lut;
457 }
458
459
460 /** Initialize the lookup table arrays */
461 4 av_cold int ff_bgmc_init(void *logctx,
462 uint8_t **cf_lut, int **cf_lut_status)
463 {
464 4 *cf_lut = av_malloc(sizeof(**cf_lut) * LUT_BUFF * 16 * LUT_SIZE);
465 4 *cf_lut_status = av_malloc(sizeof(**cf_lut_status) * LUT_BUFF);
466
467
2/4
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
4 if (!*cf_lut || !*cf_lut_status) {
468 ff_bgmc_end(cf_lut, cf_lut_status);
469 av_log(logctx, AV_LOG_ERROR, "Allocating buffer memory failed.\n");
470 return AVERROR(ENOMEM);
471 } else {
472 // initialize lut_status buffer to a value never used to compare against
473 4 memset(*cf_lut_status, -1, sizeof(**cf_lut_status) * LUT_BUFF);
474 }
475
476 4 return 0;
477 }
478
479
480 /** Release the lookup table arrays */
481 14 av_cold void ff_bgmc_end(uint8_t **cf_lut, int **cf_lut_status)
482 {
483 14 av_freep(cf_lut);
484 14 av_freep(cf_lut_status);
485 14 }
486
487
488 /** Initialize decoding and reads the first value */
489 1722 int ff_bgmc_decode_init(GetBitContext *gb, unsigned int *h,
490 unsigned int *l, unsigned int *v)
491 {
492
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 1722 times.
1722 if (get_bits_left(gb) < VALUE_BITS)
493 return AVERROR_INVALIDDATA;
494
495 1722 *h = TOP_VALUE;
496 1722 *l = 0;
497 1722 *v = get_bits(gb, VALUE_BITS);
498
499 1722 return 0;
500 }
501
502
503 /** Finish decoding */
504 1722 void ff_bgmc_decode_end(GetBitContext *gb)
505 {
506 1722 skip_bits_long(gb, -(VALUE_BITS - 2));
507 1722 }
508
509
510 /** Read and decode a block Gilbert-Moore coded symbol */
511 3148 void ff_bgmc_decode(GetBitContext *gb, unsigned int num, int32_t *dst,
512 int delta, unsigned int sx,
513 unsigned int *h, unsigned int *l, unsigned int *v,
514 uint8_t *cf_lut, int *cf_lut_status)
515 {
516 unsigned int i;
517 3148 uint8_t *lut = bgmc_lut_getp(cf_lut, cf_lut_status, delta);
518
519 // read current state
520 3148 unsigned int high = *h;
521 3148 unsigned int low = *l;
522 3148 unsigned int value = *v;
523
524 3148 lut += sx * LUT_SIZE;
525
526 // decode num samples
527
2/2
✓ Branch 0 taken 4580858 times.
✓ Branch 1 taken 3148 times.
4584006 for (i = 0; i < num; i++) {
528 4580858 unsigned int range = high - low + 1;
529 4580858 unsigned int target = (((value - low + 1) << FREQ_BITS) - 1) / range;
530 4580858 unsigned int symbol = lut[target >> (FREQ_BITS - LUT_BITS)] << delta;
531
532
2/2
✓ Branch 0 taken 2228540 times.
✓ Branch 1 taken 4580858 times.
6809398 while (cf_table[sx][symbol] > target)
533 2228540 symbol += 1 << delta;
534
535 4580858 symbol = (symbol >> delta) - 1;
536
537 4580858 high = low + ((range * cf_table[sx][(symbol) << delta] - (1 << FREQ_BITS)) >> FREQ_BITS);
538 4580858 low = low + ((range * cf_table[sx][(symbol + 1) << delta]) >> FREQ_BITS);
539
540 while (1) {
541
2/2
✓ Branch 0 taken 18189024 times.
✓ Branch 1 taken 9338050 times.
27527074 if (high >= HALF) {
542
2/2
✓ Branch 0 taken 9362337 times.
✓ Branch 1 taken 8826687 times.
18189024 if (low >= HALF) {
543 9362337 value -= HALF;
544 9362337 low -= HALF;
545 9362337 high -= HALF;
546
4/4
✓ Branch 0 taken 5975776 times.
✓ Branch 1 taken 2850911 times.
✓ Branch 2 taken 4245829 times.
✓ Branch 3 taken 1729947 times.
8826687 } else if (low >= FIRST_QTR && high < THIRD_QTR) {
547 4245829 value -= FIRST_QTR;
548 4245829 low -= FIRST_QTR;
549 4245829 high -= FIRST_QTR;
550 } else
551 break;
552 }
553
554 22946216 low *= 2;
555 22946216 high = 2 * high + 1;
556 22946216 value = 2 * value + get_bits1(gb);
557 }
558
559 4580858 *dst++ = symbol;
560 }
561
562 // save current state
563 3148 *h = high;
564 3148 *l = low;
565 3148 *v = value;
566 3148 }
567

霍金什么时候去世的 张字五行属什么 得意门生是什么意思 茅庐是什么意思 香港身份证有什么好处
毛爷爷是什么意思 木薯淀粉是什么粉 咳嗽买什么药 依字五行属什么 左小腹疼是什么原因
尿酸高有什么危害 脚心长痣代表什么 漏尿挂什么科 鱼用什么游泳 血常规五项能检查出什么病
植物油是什么油 asa是什么意思 放疗为什么死得更快 高沫是什么茶 吃什么去湿气最好最快
白衣天使是什么意思hcv8jop5ns8r.cn 排骨炖什么最好吃hcv9jop2ns7r.cn 吃瓜什么意思hcv7jop9ns5r.cn 智齿什么时候长hcv9jop6ns6r.cn 人肉什么味道adwl56.com
生物钟是什么意思zhongyiyatai.com 阑尾粪石是什么意思hcv8jop7ns4r.cn 多种维生素什么牌子的效果最好hcv9jop6ns1r.cn 女人的网名叫什么好听hcv8jop2ns3r.cn s是什么牌子hcv8jop4ns7r.cn
健康证都检查什么项目hcv8jop0ns3r.cn 碳酸钙d3颗粒什么时候吃最好hcv7jop6ns5r.cn 二十二岁属什么hcv8jop0ns0r.cn 火山飘雪是什么菜aiwuzhiyu.com 一个车一个罔是什么字hcv8jop4ns8r.cn
慰劳是什么意思hcv8jop8ns5r.cn 县委办公室主任是什么级别cl108k.com 甲亢是什么回事hcv9jop6ns0r.cn 定力是什么意思ff14chat.com 白带发黄吃什么药hcv8jop6ns7r.cn
百度