喝什么胸会变大| 吃什么油对心脑血管好| 什么叫尿毒症| 梦见和死去的亲人说话是什么意思| 霜花店讲了什么故事| 粒细胞低是什么原因| 懿代表什么意思| 逸夫是什么意思| 更年期吃什么药好| 尿检红细胞高是什么原因| 低血压吃什么药效果好| 一物降一物指什么生肖| 十九畏是什么意思| 杜仲是什么| 什么芦荟可以直接擦脸| 得意忘形是什么意思| 饭后打嗝是什么原因| 斑点狗是什么品种| 为什么打牌老输| 什么不什么身| 什么样的土豆不能吃| 什么精神成语| 6月17日是什么星座| 招蚊子咬是什么血型| 尬是什么意思| 大象是什么意思| 3价铁离子是什么颜色| 西瓜适合什么土壤种植| 尿频尿急吃什么药效果最好| 滴虫性阴道炎用什么药好| 熬夜喝什么提神醒脑| 翻白草长什么样| 孕妇缺维生素D对胎儿有什么影响| cc代表什么意思| 小苏打和柠檬酸反应产生什么| 家里有壁虎是什么征兆| 肝气不舒有什么症状| 胸膈痞闷什么意思| 掌中宝是什么肉| 食指长痣代表什么| 牙齿发麻是什么原因| 芥子是什么| 肉蒲团是什么| 什么的照射| 沅字的寓意是什么| 肱骨头小囊变什么意思| 梦见骂人是什么意思| 什么地赶来| 垂体瘤是什么| 海龟汤是什么| 黄疸偏高有什么危害| 摩羯男喜欢什么类型的女生| 愈合是什么意思| 张起灵和吴邪什么关系| 什么东西吃了壮阳| 下腹痛挂什么科| 头晕挂什么科室| 多多益善的益是什么意思| 梦见棺材什么意思| 孩子打呼噜是什么原因| 73年属牛的是什么命| 成年人改名字需要什么手续| 尿路感染吃什么药比较好的快| 人性是什么| 5.25是什么星座| 葫芦五行属什么| 小肚子胀痛什么原因| 属蛇适合佩戴什么饰品| 流量加油包是什么意思| 臭氧有什么作用| 6月5日是世界什么日| 手指甲发紫是什么原因| 喝隔夜茶有什么好处和坏处| 旅游穿什么鞋最舒服| 一身傲骨是什么意思| 塔姆是什么动物| 肺炎吃什么水果| 霍乱是什么| 什么的寒冷| 备孕检查什么项目| 蚝油可以用什么代替| human什么意思| 金色搭配什么颜色好看| 夜里12点是什么时辰| 圣诞节是什么时候| 金骏眉是什么茶类| 脚心发热吃什么药| 什么可以去湿气| 立克次体病是什么意思| 硬汉是什么意思| 投诉与举报有什么区别| 什么时候是安全期| 贫血是什么意思| 1954属什么生肖| 急躁是什么意思| 海参什么季节吃好| 黄芪主要治疗什么| 粘膜充血水肿什么意思| 舌头发黑是什么原因| 孕妇梦到蛇是什么意思| 怀孕20天有什么症状| 手上有痣代表什么| 羊水污染是什么原因造成的| 跳楼是什么感觉| 心血管堵塞吃什么好| 用什么自慰| 肝硬化什么症状| lancome是什么品牌| 预防脑梗吃什么药| 梦见家里死人了代表什么预兆| 多多保重是什么生肖| 体态是什么意思| 轻浮的女人是什么意思| 子宫后位是什么意思| 蜘蛛的血液是什么颜色| 燥是什么意思| 富甲一方什么意思| 前方起飞是什么意思| 星月菩提是什么材质| 自信过头叫什么| 为什么啊| 翊字是什么意思| ab型血和o型血的孩子是什么血型| 心力衰竭吃什么药最好| 经常扁桃体发炎是什么原因| 梅毒查血查什么项目| 芹菜炒什么| 孕晚期呕吐是什么原因| 文殊菩萨保佑什么| 手脚脱皮是什么原因导致的| 防是什么生肖| 洋葱与什么食物相克| 天蝎座的幸运色是什么| 肉五行属什么| 八月十五什么星座| 腰间盘突出有什么好的治疗方法| 什么是潜意识| 什么牌子的空调好用又省电| 奥氮平片治疗什么病| 为什么不建议吃茵栀黄| 淡盐水是什么| 首套房有什么优惠政策| 阴唇为什么会变黑| 桂圆是什么| 夹腿综合症是什么| 股骨长径是指胎儿什么| 喉咙不舒服吃什么药| ch表示什么意思| 更年期是什么时候| 牙痛吃什么药最快见效| 精子不液化吃什么药| 秋天是什么样子的| 胸推是什么意思| 气血不足吃什么药最好| 胜造七级浮屠是什么意思| 胸口正中间疼是什么病| 1126是什么星座| 阴道口出血是什么原因| 12点半是什么时辰| 深是什么生肖| 集成灶什么品牌最好| 嗨体是什么| 香水前调中调后调是什么意思| 海螺姑娘是什么意思| 什么是历史虚无主义| 肌酐500多属于什么期怎么治疗| 胡萝卜和什么不能一起吃| 护士是干什么的| 七月初七是什么节| 狗跟什么生肖最配| 震字五行属什么| 70年是什么婚| 火红的太阳像什么| 珍惜眼前人是什么意思| 敏感肌肤用什么护肤品| 宫颈纳囊用什么药治疗效果好| 偷鸡不成蚀把米什么意思| 逍遥丸主治什么病| 腰部酸胀是什么原因| 盘古是一个什么样的人| 孕检唐筛是检查什么的| 人为什么会长痔疮| 内膜居中是什么意思| 皮肤黄的人适合穿什么颜色的衣服| 神经衰弱吃什么药好| 稀奶油是什么奶油| 扁平疣用什么药膏除根| primark是什么牌子| 就这样吧是什么意思| 饱和什么意思| 全身无力吃什么药| 黄疸高是什么原因引起的| loser是什么意思| 晚上吃什么可以减肥| 什么是有氧运动和无氧运动| 吃葵花籽有什么好处和坏处吗| 痛风不能吃什么蔬菜| 姜水什么时候喝最好| 胆囊壁结晶是什么意思| 五步蛇长什么样| 疏风解表的意思是什么| 副乳是什么| 宫颈那囊是什么| 芥末是用什么做的| 眼睛干痒用什么眼药水比较好| 肛门周围痒是什么原因| 竹笋炒什么好吃| 肌肉疼痛挂什么科| 胰岛素为什么不能口服| 肾阳虚和肾阴虚有什么区别症状| 初伏是什么意思| 品行是什么意思| 什么的嗓音| 咖啡是什么做的| 烤鱼用什么鱼| 献血浆有什么好处| 风疹是什么症状| 身体虚弱打什么营养针| 秋天有什么花| 补铁吃什么食物好| 表面活性剂是什么| clinique是什么牌子的化妆品| 多西环素片主治什么| 什么药止痒效果最好| 贼头贼脑是什么生肖| 为什么来月经会头疼| 来月经腰酸腰痛什么原因造成的| 什么的月光| 屁股出血什么原因| 2021年属什么| 晚上吃什么减肥效果最好| 什么是有氧运动包括哪些| 头发掉的多是什么原因| 维生素B3叫什么名字| 右下腹有什么器官| 新生儿痤疮用什么药膏| 贫嘴是什么意思| 文五行属什么| 山东有什么特产| 牙齿为什么会变黑| 月经正常颜色是什么色| 什么病会引起皮肤瘙痒| 泌乳素什么时候查最准确| 拉肚子出血是什么原因| 四肢麻木是什么病| 为什么会长针眼| 伤口撒什么药粉好得快| 黑京念什么| 腿脚浮肿是什么原因引起的| 大腿粗是什么原因导致的| 卡介疫苗什么时候打| 豆角没熟中毒什么症状| 胃痛可以吃什么水果| 毛囊炎的症状是什么原因引起的| 苏铁是什么植物| 骨密度检查是查什么| 獭尾肝是什么意思| 什么人容易得小脑萎缩| 活死人是什么意思| 一什么童话| 胃疼吃什么消炎药| 喝什么有助于睡眠| 灰指甲挂号挂什么科| 奢华是什么意思| 百度

最高人民法院办公厅副主任陈志远解读最高法工


Directory: ../../../ffmpeg/
File: src/libavcodec/h264_cabac.c
Date: 2025-08-04 11:35:17
Exec Total Coverage
Lines: 627 644 97.4%
Functions: 23 23 100.0%
Branches: 514 542 94.8%

Line Branch Exec Source
1 /*
2 * H.26L/H.264/AVC/JVT/14496-10/... cabac decoding
3 * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
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 * H.264 / AVC / MPEG-4 part10 cabac decoding.
25 * @author Michael Niedermayer <michaelni@gmx.at>
26 */
27
28 #define CABAC(h) 1
29 #define UNCHECKED_BITSTREAM_READER 1
30 #define INT_BIT (CHAR_BIT * sizeof(int))
31
32 #include "libavutil/attributes.h"
33 #include "libavutil/avassert.h"
34 #include "config.h"
35 #include "cabac.h"
36 #include "cabac_functions.h"
37 #include "h264dec.h"
38 #include "h264data.h"
39 #include "h264_mvpred.h"
40 #include "mpegutils.h"
41
42 #if ARCH_X86
43 #include "x86/h264_cabac.c"
44 #elif ARCH_LOONGARCH64
45 #include "loongarch/h264_cabac.c"
46 #endif
47
48 /* Cabac pre state table */
49
50 static const int8_t cabac_context_init_I[1024][2] =
51 {
52 /* 0 - 10 */
53 { 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
54 { 2, 54 }, { 3, 74 }, { -28,127 }, { -23, 104 },
55 { -6, 53 }, { -1, 54 }, { 7, 51 },
56
57 /* 11 - 23 unused for I */
58 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
59 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
60 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
61 { 0, 0 },
62
63 /* 24- 39 */
64 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
65 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
66 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
67 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
68
69 /* 40 - 53 */
70 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
71 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
72 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
73 { 0, 0 }, { 0, 0 },
74
75 /* 54 - 59 */
76 { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
77 { 0, 0 }, { 0, 0 },
78
79 /* 60 - 69 */
80 { 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
81 { -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
82 { 13, 41 }, { 3, 62 },
83
84 /* 70 -> 87 */
85 { 0, 11 }, { 1, 55 }, { 0, 69 }, { -17, 127 },
86 { -13, 102 },{ 0, 82 }, { -7, 74 }, { -21, 107 },
87 { -27, 127 },{ -31, 127 },{ -24, 127 }, { -18, 95 },
88 { -27, 127 },{ -21, 114 },{ -30, 127 }, { -17, 123 },
89 { -12, 115 },{ -16, 122 },
90
91 /* 88 -> 104 */
92 { -11, 115 },{ -12, 63 }, { -2, 68 }, { -15, 84 },
93 { -13, 104 },{ -3, 70 }, { -8, 93 }, { -10, 90 },
94 { -30, 127 },{ -1, 74 }, { -6, 97 }, { -7, 91 },
95 { -20, 127 },{ -4, 56 }, { -5, 82 }, { -7, 76 },
96 { -22, 125 },
97
98 /* 105 -> 135 */
99 { -7, 93 }, { -11, 87 }, { -3, 77 }, { -5, 71 },
100 { -4, 63 }, { -4, 68 }, { -12, 84 }, { -7, 62 },
101 { -7, 65 }, { 8, 61 }, { 5, 56 }, { -2, 66 },
102 { 1, 64 }, { 0, 61 }, { -2, 78 }, { 1, 50 },
103 { 7, 52 }, { 10, 35 }, { 0, 44 }, { 11, 38 },
104 { 1, 45 }, { 0, 46 }, { 5, 44 }, { 31, 17 },
105 { 1, 51 }, { 7, 50 }, { 28, 19 }, { 16, 33 },
106 { 14, 62 }, { -13, 108 },{ -15, 100 },
107
108 /* 136 -> 165 */
109 { -13, 101 },{ -13, 91 }, { -12, 94 }, { -10, 88 },
110 { -16, 84 }, { -10, 86 }, { -7, 83 }, { -13, 87 },
111 { -19, 94 }, { 1, 70 }, { 0, 72 }, { -5, 74 },
112 { 18, 59 }, { -8, 102 }, { -15, 100 }, { 0, 95 },
113 { -4, 75 }, { 2, 72 }, { -11, 75 }, { -3, 71 },
114 { 15, 46 }, { -13, 69 }, { 0, 62 }, { 0, 65 },
115 { 21, 37 }, { -15, 72 }, { 9, 57 }, { 16, 54 },
116 { 0, 62 }, { 12, 72 },
117
118 /* 166 -> 196 */
119 { 24, 0 }, { 15, 9 }, { 8, 25 }, { 13, 18 },
120 { 15, 9 }, { 13, 19 }, { 10, 37 }, { 12, 18 },
121 { 6, 29 }, { 20, 33 }, { 15, 30 }, { 4, 45 },
122 { 1, 58 }, { 0, 62 }, { 7, 61 }, { 12, 38 },
123 { 11, 45 }, { 15, 39 }, { 11, 42 }, { 13, 44 },
124 { 16, 45 }, { 12, 41 }, { 10, 49 }, { 30, 34 },
125 { 18, 42 }, { 10, 55 }, { 17, 51 }, { 17, 46 },
126 { 0, 89 }, { 26, -19 }, { 22, -17 },
127
128 /* 197 -> 226 */
129 { 26, -17 }, { 30, -25 }, { 28, -20 }, { 33, -23 },
130 { 37, -27 }, { 33, -23 }, { 40, -28 }, { 38, -17 },
131 { 33, -11 }, { 40, -15 }, { 41, -6 }, { 38, 1 },
132 { 41, 17 }, { 30, -6 }, { 27, 3 }, { 26, 22 },
133 { 37, -16 }, { 35, -4 }, { 38, -8 }, { 38, -3 },
134 { 37, 3 }, { 38, 5 }, { 42, 0 }, { 35, 16 },
135 { 39, 22 }, { 14, 48 }, { 27, 37 }, { 21, 60 },
136 { 12, 68 }, { 2, 97 },
137
138 /* 227 -> 251 */
139 { -3, 71 }, { -6, 42 }, { -5, 50 }, { -3, 54 },
140 { -2, 62 }, { 0, 58 }, { 1, 63 }, { -2, 72 },
141 { -1, 74 }, { -9, 91 }, { -5, 67 }, { -5, 27 },
142 { -3, 39 }, { -2, 44 }, { 0, 46 }, { -16, 64 },
143 { -8, 68 }, { -10, 78 }, { -6, 77 }, { -10, 86 },
144 { -12, 92 }, { -15, 55 }, { -10, 60 }, { -6, 62 },
145 { -4, 65 },
146
147 /* 252 -> 275 */
148 { -12, 73 }, { -8, 76 }, { -7, 80 }, { -9, 88 },
149 { -17, 110 },{ -11, 97 }, { -20, 84 }, { -11, 79 },
150 { -6, 73 }, { -4, 74 }, { -13, 86 }, { -13, 96 },
151 { -11, 97 }, { -19, 117 },{ -8, 78 }, { -5, 33 },
152 { -4, 48 }, { -2, 53 }, { -3, 62 }, { -13, 71 },
153 { -10, 79 }, { -12, 86 }, { -13, 90 }, { -14, 97 },
154
155 /* 276 a bit special (not used, bypass is used instead) */
156 { 0, 0 },
157
158 /* 277 -> 307 */
159 { -6, 93 }, { -6, 84 }, { -8, 79 }, { 0, 66 },
160 { -1, 71 }, { 0, 62 }, { -2, 60 }, { -2, 59 },
161 { -5, 75 }, { -3, 62 }, { -4, 58 }, { -9, 66 },
162 { -1, 79 }, { 0, 71 }, { 3, 68 }, { 10, 44 },
163 { -7, 62 }, { 15, 36 }, { 14, 40 }, { 16, 27 },
164 { 12, 29 }, { 1, 44 }, { 20, 36 }, { 18, 32 },
165 { 5, 42 }, { 1, 48 }, { 10, 62 }, { 17, 46 },
166 { 9, 64 }, { -12, 104 },{ -11, 97 },
167
168 /* 308 -> 337 */
169 { -16, 96 }, { -7, 88 }, { -8, 85 }, { -7, 85 },
170 { -9, 85 }, { -13, 88 }, { 4, 66 }, { -3, 77 },
171 { -3, 76 }, { -6, 76 }, { 10, 58 }, { -1, 76 },
172 { -1, 83 }, { -7, 99 }, { -14, 95 }, { 2, 95 },
173 { 0, 76 }, { -5, 74 }, { 0, 70 }, { -11, 75 },
174 { 1, 68 }, { 0, 65 }, { -14, 73 }, { 3, 62 },
175 { 4, 62 }, { -1, 68 }, { -13, 75 }, { 11, 55 },
176 { 5, 64 }, { 12, 70 },
177
178 /* 338 -> 368 */
179 { 15, 6 }, { 6, 19 }, { 7, 16 }, { 12, 14 },
180 { 18, 13 }, { 13, 11 }, { 13, 15 }, { 15, 16 },
181 { 12, 23 }, { 13, 23 }, { 15, 20 }, { 14, 26 },
182 { 14, 44 }, { 17, 40 }, { 17, 47 }, { 24, 17 },
183 { 21, 21 }, { 25, 22 }, { 31, 27 }, { 22, 29 },
184 { 19, 35 }, { 14, 50 }, { 10, 57 }, { 7, 63 },
185 { -2, 77 }, { -4, 82 }, { -3, 94 }, { 9, 69 },
186 { -12, 109 },{ 36, -35 }, { 36, -34 },
187
188 /* 369 -> 398 */
189 { 32, -26 }, { 37, -30 }, { 44, -32 }, { 34, -18 },
190 { 34, -15 }, { 40, -15 }, { 33, -7 }, { 35, -5 },
191 { 33, 0 }, { 38, 2 }, { 33, 13 }, { 23, 35 },
192 { 13, 58 }, { 29, -3 }, { 26, 0 }, { 22, 30 },
193 { 31, -7 }, { 35, -15 }, { 34, -3 }, { 34, 3 },
194 { 36, -1 }, { 34, 5 }, { 32, 11 }, { 35, 5 },
195 { 34, 12 }, { 39, 11 }, { 30, 29 }, { 34, 26 },
196 { 29, 39 }, { 19, 66 },
197
198 /* 399 -> 435 */
199 { 31, 21 }, { 31, 31 }, { 25, 50 },
200 { -17, 120 }, { -20, 112 }, { -18, 114 }, { -11, 85 },
201 { -15, 92 }, { -14, 89 }, { -26, 71 }, { -15, 81 },
202 { -14, 80 }, { 0, 68 }, { -14, 70 }, { -24, 56 },
203 { -23, 68 }, { -24, 50 }, { -11, 74 }, { 23, -13 },
204 { 26, -13 }, { 40, -15 }, { 49, -14 }, { 44, 3 },
205 { 45, 6 }, { 44, 34 }, { 33, 54 }, { 19, 82 },
206 { -3, 75 }, { -1, 23 }, { 1, 34 }, { 1, 43 },
207 { 0, 54 }, { -2, 55 }, { 0, 61 }, { 1, 64 },
208 { 0, 68 }, { -9, 92 },
209
210 /* 436 -> 459 */
211 { -14, 106 }, { -13, 97 }, { -15, 90 }, { -12, 90 },
212 { -18, 88 }, { -10, 73 }, { -9, 79 }, { -14, 86 },
213 { -10, 73 }, { -10, 70 }, { -10, 69 }, { -5, 66 },
214 { -9, 64 }, { -5, 58 }, { 2, 59 }, { 21, -10 },
215 { 24, -11 }, { 28, -8 }, { 28, -1 }, { 29, 3 },
216 { 29, 9 }, { 35, 20 }, { 29, 36 }, { 14, 67 },
217
218 /* 460 -> 1024 */
219 { -17, 123 }, { -12, 115 }, { -16, 122 }, { -11, 115 },
220 { -12, 63 }, { -2, 68 }, { -15, 84 }, { -13, 104 },
221 { -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 },
222 { -17, 123 }, { -12, 115 }, { -16, 122 }, { -11, 115 },
223 { -12, 63 }, { -2, 68 }, { -15, 84 }, { -13, 104 },
224 { -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 },
225 { -7, 93 }, { -11, 87 }, { -3, 77 }, { -5, 71 },
226 { -4, 63 }, { -4, 68 }, { -12, 84 }, { -7, 62 },
227 { -7, 65 }, { 8, 61 }, { 5, 56 }, { -2, 66 },
228 { 1, 64 }, { 0, 61 }, { -2, 78 }, { 1, 50 },
229 { 7, 52 }, { 10, 35 }, { 0, 44 }, { 11, 38 },
230 { 1, 45 }, { 0, 46 }, { 5, 44 }, { 31, 17 },
231 { 1, 51 }, { 7, 50 }, { 28, 19 }, { 16, 33 },
232 { 14, 62 }, { -13, 108 }, { -15, 100 }, { -13, 101 },
233 { -13, 91 }, { -12, 94 }, { -10, 88 }, { -16, 84 },
234 { -10, 86 }, { -7, 83 }, { -13, 87 }, { -19, 94 },
235 { 1, 70 }, { 0, 72 }, { -5, 74 }, { 18, 59 },
236 { -7, 93 }, { -11, 87 }, { -3, 77 }, { -5, 71 },
237 { -4, 63 }, { -4, 68 }, { -12, 84 }, { -7, 62 },
238 { -7, 65 }, { 8, 61 }, { 5, 56 }, { -2, 66 },
239 { 1, 64 }, { 0, 61 }, { -2, 78 }, { 1, 50 },
240 { 7, 52 }, { 10, 35 }, { 0, 44 }, { 11, 38 },
241 { 1, 45 }, { 0, 46 }, { 5, 44 }, { 31, 17 },
242 { 1, 51 }, { 7, 50 }, { 28, 19 }, { 16, 33 },
243 { 14, 62 }, { -13, 108 }, { -15, 100 }, { -13, 101 },
244 { -13, 91 }, { -12, 94 }, { -10, 88 }, { -16, 84 },
245 { -10, 86 }, { -7, 83 }, { -13, 87 }, { -19, 94 },
246 { 1, 70 }, { 0, 72 }, { -5, 74 }, { 18, 59 },
247 { 24, 0 }, { 15, 9 }, { 8, 25 }, { 13, 18 },
248 { 15, 9 }, { 13, 19 }, { 10, 37 }, { 12, 18 },
249 { 6, 29 }, { 20, 33 }, { 15, 30 }, { 4, 45 },
250 { 1, 58 }, { 0, 62 }, { 7, 61 }, { 12, 38 },
251 { 11, 45 }, { 15, 39 }, { 11, 42 }, { 13, 44 },
252 { 16, 45 }, { 12, 41 }, { 10, 49 }, { 30, 34 },
253 { 18, 42 }, { 10, 55 }, { 17, 51 }, { 17, 46 },
254 { 0, 89 }, { 26, -19 }, { 22, -17 }, { 26, -17 },
255 { 30, -25 }, { 28, -20 }, { 33, -23 }, { 37, -27 },
256 { 33, -23 }, { 40, -28 }, { 38, -17 }, { 33, -11 },
257 { 40, -15 }, { 41, -6 }, { 38, 1 }, { 41, 17 },
258 { 24, 0 }, { 15, 9 }, { 8, 25 }, { 13, 18 },
259 { 15, 9 }, { 13, 19 }, { 10, 37 }, { 12, 18 },
260 { 6, 29 }, { 20, 33 }, { 15, 30 }, { 4, 45 },
261 { 1, 58 }, { 0, 62 }, { 7, 61 }, { 12, 38 },
262 { 11, 45 }, { 15, 39 }, { 11, 42 }, { 13, 44 },
263 { 16, 45 }, { 12, 41 }, { 10, 49 }, { 30, 34 },
264 { 18, 42 }, { 10, 55 }, { 17, 51 }, { 17, 46 },
265 { 0, 89 }, { 26, -19 }, { 22, -17 }, { 26, -17 },
266 { 30, -25 }, { 28, -20 }, { 33, -23 }, { 37, -27 },
267 { 33, -23 }, { 40, -28 }, { 38, -17 }, { 33, -11 },
268 { 40, -15 }, { 41, -6 }, { 38, 1 }, { 41, 17 },
269 { -17, 120 }, { -20, 112 }, { -18, 114 }, { -11, 85 },
270 { -15, 92 }, { -14, 89 }, { -26, 71 }, { -15, 81 },
271 { -14, 80 }, { 0, 68 }, { -14, 70 }, { -24, 56 },
272 { -23, 68 }, { -24, 50 }, { -11, 74 }, { -14, 106 },
273 { -13, 97 }, { -15, 90 }, { -12, 90 }, { -18, 88 },
274 { -10, 73 }, { -9, 79 }, { -14, 86 }, { -10, 73 },
275 { -10, 70 }, { -10, 69 }, { -5, 66 }, { -9, 64 },
276 { -5, 58 }, { 2, 59 }, { 23, -13 }, { 26, -13 },
277 { 40, -15 }, { 49, -14 }, { 44, 3 }, { 45, 6 },
278 { 44, 34 }, { 33, 54 }, { 19, 82 }, { 21, -10 },
279 { 24, -11 }, { 28, -8 }, { 28, -1 }, { 29, 3 },
280 { 29, 9 }, { 35, 20 }, { 29, 36 }, { 14, 67 },
281 { -3, 75 }, { -1, 23 }, { 1, 34 }, { 1, 43 },
282 { 0, 54 }, { -2, 55 }, { 0, 61 }, { 1, 64 },
283 { 0, 68 }, { -9, 92 }, { -17, 120 }, { -20, 112 },
284 { -18, 114 }, { -11, 85 }, { -15, 92 }, { -14, 89 },
285 { -26, 71 }, { -15, 81 }, { -14, 80 }, { 0, 68 },
286 { -14, 70 }, { -24, 56 }, { -23, 68 }, { -24, 50 },
287 { -11, 74 }, { -14, 106 }, { -13, 97 }, { -15, 90 },
288 { -12, 90 }, { -18, 88 }, { -10, 73 }, { -9, 79 },
289 { -14, 86 }, { -10, 73 }, { -10, 70 }, { -10, 69 },
290 { -5, 66 }, { -9, 64 }, { -5, 58 }, { 2, 59 },
291 { 23, -13 }, { 26, -13 }, { 40, -15 }, { 49, -14 },
292 { 44, 3 }, { 45, 6 }, { 44, 34 }, { 33, 54 },
293 { 19, 82 }, { 21, -10 }, { 24, -11 }, { 28, -8 },
294 { 28, -1 }, { 29, 3 }, { 29, 9 }, { 35, 20 },
295 { 29, 36 }, { 14, 67 }, { -3, 75 }, { -1, 23 },
296 { 1, 34 }, { 1, 43 }, { 0, 54 }, { -2, 55 },
297 { 0, 61 }, { 1, 64 }, { 0, 68 }, { -9, 92 },
298 { -6, 93 }, { -6, 84 }, { -8, 79 }, { 0, 66 },
299 { -1, 71 }, { 0, 62 }, { -2, 60 }, { -2, 59 },
300 { -5, 75 }, { -3, 62 }, { -4, 58 }, { -9, 66 },
301 { -1, 79 }, { 0, 71 }, { 3, 68 }, { 10, 44 },
302 { -7, 62 }, { 15, 36 }, { 14, 40 }, { 16, 27 },
303 { 12, 29 }, { 1, 44 }, { 20, 36 }, { 18, 32 },
304 { 5, 42 }, { 1, 48 }, { 10, 62 }, { 17, 46 },
305 { 9, 64 }, { -12, 104 }, { -11, 97 }, { -16, 96 },
306 { -7, 88 }, { -8, 85 }, { -7, 85 }, { -9, 85 },
307 { -13, 88 }, { 4, 66 }, { -3, 77 }, { -3, 76 },
308 { -6, 76 }, { 10, 58 }, { -1, 76 }, { -1, 83 },
309 { -6, 93 }, { -6, 84 }, { -8, 79 }, { 0, 66 },
310 { -1, 71 }, { 0, 62 }, { -2, 60 }, { -2, 59 },
311 { -5, 75 }, { -3, 62 }, { -4, 58 }, { -9, 66 },
312 { -1, 79 }, { 0, 71 }, { 3, 68 }, { 10, 44 },
313 { -7, 62 }, { 15, 36 }, { 14, 40 }, { 16, 27 },
314 { 12, 29 }, { 1, 44 }, { 20, 36 }, { 18, 32 },
315 { 5, 42 }, { 1, 48 }, { 10, 62 }, { 17, 46 },
316 { 9, 64 }, { -12, 104 }, { -11, 97 }, { -16, 96 },
317 { -7, 88 }, { -8, 85 }, { -7, 85 }, { -9, 85 },
318 { -13, 88 }, { 4, 66 }, { -3, 77 }, { -3, 76 },
319 { -6, 76 }, { 10, 58 }, { -1, 76 }, { -1, 83 },
320 { 15, 6 }, { 6, 19 }, { 7, 16 }, { 12, 14 },
321 { 18, 13 }, { 13, 11 }, { 13, 15 }, { 15, 16 },
322 { 12, 23 }, { 13, 23 }, { 15, 20 }, { 14, 26 },
323 { 14, 44 }, { 17, 40 }, { 17, 47 }, { 24, 17 },
324 { 21, 21 }, { 25, 22 }, { 31, 27 }, { 22, 29 },
325 { 19, 35 }, { 14, 50 }, { 10, 57 }, { 7, 63 },
326 { -2, 77 }, { -4, 82 }, { -3, 94 }, { 9, 69 },
327 { -12, 109 }, { 36, -35 }, { 36, -34 }, { 32, -26 },
328 { 37, -30 }, { 44, -32 }, { 34, -18 }, { 34, -15 },
329 { 40, -15 }, { 33, -7 }, { 35, -5 }, { 33, 0 },
330 { 38, 2 }, { 33, 13 }, { 23, 35 }, { 13, 58 },
331 { 15, 6 }, { 6, 19 }, { 7, 16 }, { 12, 14 },
332 { 18, 13 }, { 13, 11 }, { 13, 15 }, { 15, 16 },
333 { 12, 23 }, { 13, 23 }, { 15, 20 }, { 14, 26 },
334 { 14, 44 }, { 17, 40 }, { 17, 47 }, { 24, 17 },
335 { 21, 21 }, { 25, 22 }, { 31, 27 }, { 22, 29 },
336 { 19, 35 }, { 14, 50 }, { 10, 57 }, { 7, 63 },
337 { -2, 77 }, { -4, 82 }, { -3, 94 }, { 9, 69 },
338 { -12, 109 }, { 36, -35 }, { 36, -34 }, { 32, -26 },
339 { 37, -30 }, { 44, -32 }, { 34, -18 }, { 34, -15 },
340 { 40, -15 }, { 33, -7 }, { 35, -5 }, { 33, 0 },
341 { 38, 2 }, { 33, 13 }, { 23, 35 }, { 13, 58 },
342 { -3, 71 }, { -6, 42 }, { -5, 50 }, { -3, 54 },
343 { -2, 62 }, { 0, 58 }, { 1, 63 }, { -2, 72 },
344 { -1, 74 }, { -9, 91 }, { -5, 67 }, { -5, 27 },
345 { -3, 39 }, { -2, 44 }, { 0, 46 }, { -16, 64 },
346 { -8, 68 }, { -10, 78 }, { -6, 77 }, { -10, 86 },
347 { -12, 92 }, { -15, 55 }, { -10, 60 }, { -6, 62 },
348 { -4, 65 }, { -12, 73 }, { -8, 76 }, { -7, 80 },
349 { -9, 88 }, { -17, 110 }, { -3, 71 }, { -6, 42 },
350 { -5, 50 }, { -3, 54 }, { -2, 62 }, { 0, 58 },
351 { 1, 63 }, { -2, 72 }, { -1, 74 }, { -9, 91 },
352 { -5, 67 }, { -5, 27 }, { -3, 39 }, { -2, 44 },
353 { 0, 46 }, { -16, 64 }, { -8, 68 }, { -10, 78 },
354 { -6, 77 }, { -10, 86 }, { -12, 92 }, { -15, 55 },
355 { -10, 60 }, { -6, 62 }, { -4, 65 }, { -12, 73 },
356 { -8, 76 }, { -7, 80 }, { -9, 88 }, { -17, 110 },
357 { -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 },
358 { -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 },
359 { -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 }
360 };
361
362 static const int8_t cabac_context_init_PB[3][1024][2] =
363 {
364 /* i_cabac_init_idc == 0 */
365 {
366 /* 0 - 10 */
367 { 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
368 { 2, 54 }, { 3, 74 }, { -28, 127 }, { -23, 104 },
369 { -6, 53 }, { -1, 54 }, { 7, 51 },
370
371 /* 11 - 23 */
372 { 23, 33 }, { 23, 2 }, { 21, 0 }, { 1, 9 },
373 { 0, 49 }, { -37, 118 }, { 5, 57 }, { -13, 78 },
374 { -11, 65 }, { 1, 62 }, { 12, 49 }, { -4, 73 },
375 { 17, 50 },
376
377 /* 24 - 39 */
378 { 18, 64 }, { 9, 43 }, { 29, 0 }, { 26, 67 },
379 { 16, 90 }, { 9, 104 }, { -46, 127 }, { -20, 104 },
380 { 1, 67 }, { -13, 78 }, { -11, 65 }, { 1, 62 },
381 { -6, 86 }, { -17, 95 }, { -6, 61 }, { 9, 45 },
382
383 /* 40 - 53 */
384 { -3, 69 }, { -6, 81 }, { -11, 96 }, { 6, 55 },
385 { 7, 67 }, { -5, 86 }, { 2, 88 }, { 0, 58 },
386 { -3, 76 }, { -10, 94 }, { 5, 54 }, { 4, 69 },
387 { -3, 81 }, { 0, 88 },
388
389 /* 54 - 59 */
390 { -7, 67 }, { -5, 74 }, { -4, 74 }, { -5, 80 },
391 { -7, 72 }, { 1, 58 },
392
393 /* 60 - 69 */
394 { 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
395 { -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
396 { 13, 41 }, { 3, 62 },
397
398 /* 70 - 87 */
399 { 0, 45 }, { -4, 78 }, { -3, 96 }, { -27, 126 },
400 { -28, 98 }, { -25, 101 }, { -23, 67 }, { -28, 82 },
401 { -20, 94 }, { -16, 83 }, { -22, 110 }, { -21, 91 },
402 { -18, 102 }, { -13, 93 }, { -29, 127 }, { -7, 92 },
403 { -5, 89 }, { -7, 96 }, { -13, 108 }, { -3, 46 },
404 { -1, 65 }, { -1, 57 }, { -9, 93 }, { -3, 74 },
405 { -9, 92 }, { -8, 87 }, { -23, 126 }, { 5, 54 },
406 { 6, 60 }, { 6, 59 }, { 6, 69 }, { -1, 48 },
407 { 0, 68 }, { -4, 69 }, { -8, 88 },
408
409 /* 105 -> 165 */
410 { -2, 85 }, { -6, 78 }, { -1, 75 }, { -7, 77 },
411 { 2, 54 }, { 5, 50 }, { -3, 68 }, { 1, 50 },
412 { 6, 42 }, { -4, 81 }, { 1, 63 }, { -4, 70 },
413 { 0, 67 }, { 2, 57 }, { -2, 76 }, { 11, 35 },
414 { 4, 64 }, { 1, 61 }, { 11, 35 }, { 18, 25 },
415 { 12, 24 }, { 13, 29 }, { 13, 36 }, { -10, 93 },
416 { -7, 73 }, { -2, 73 }, { 13, 46 }, { 9, 49 },
417 { -7, 100 }, { 9, 53 }, { 2, 53 }, { 5, 53 },
418 { -2, 61 }, { 0, 56 }, { 0, 56 }, { -13, 63 },
419 { -5, 60 }, { -1, 62 }, { 4, 57 }, { -6, 69 },
420 { 4, 57 }, { 14, 39 }, { 4, 51 }, { 13, 68 },
421 { 3, 64 }, { 1, 61 }, { 9, 63 }, { 7, 50 },
422 { 16, 39 }, { 5, 44 }, { 4, 52 }, { 11, 48 },
423 { -5, 60 }, { -1, 59 }, { 0, 59 }, { 22, 33 },
424 { 5, 44 }, { 14, 43 }, { -1, 78 }, { 0, 60 },
425 { 9, 69 },
426
427 /* 166 - 226 */
428 { 11, 28 }, { 2, 40 }, { 3, 44 }, { 0, 49 },
429 { 0, 46 }, { 2, 44 }, { 2, 51 }, { 0, 47 },
430 { 4, 39 }, { 2, 62 }, { 6, 46 }, { 0, 54 },
431 { 3, 54 }, { 2, 58 }, { 4, 63 }, { 6, 51 },
432 { 6, 57 }, { 7, 53 }, { 6, 52 }, { 6, 55 },
433 { 11, 45 }, { 14, 36 }, { 8, 53 }, { -1, 82 },
434 { 7, 55 }, { -3, 78 }, { 15, 46 }, { 22, 31 },
435 { -1, 84 }, { 25, 7 }, { 30, -7 }, { 28, 3 },
436 { 28, 4 }, { 32, 0 }, { 34, -1 }, { 30, 6 },
437 { 30, 6 }, { 32, 9 }, { 31, 19 }, { 26, 27 },
438 { 26, 30 }, { 37, 20 }, { 28, 34 }, { 17, 70 },
439 { 1, 67 }, { 5, 59 }, { 9, 67 }, { 16, 30 },
440 { 18, 32 }, { 18, 35 }, { 22, 29 }, { 24, 31 },
441 { 23, 38 }, { 18, 43 }, { 20, 41 }, { 11, 63 },
442 { 9, 59 }, { 9, 64 }, { -1, 94 }, { -2, 89 },
443 { -9, 108 },
444
445 /* 227 - 275 */
446 { -6, 76 }, { -2, 44 }, { 0, 45 }, { 0, 52 },
447 { -3, 64 }, { -2, 59 }, { -4, 70 }, { -4, 75 },
448 { -8, 82 }, { -17, 102 }, { -9, 77 }, { 3, 24 },
449 { 0, 42 }, { 0, 48 }, { 0, 55 }, { -6, 59 },
450 { -7, 71 }, { -12, 83 }, { -11, 87 }, { -30, 119 },
451 { 1, 58 }, { -3, 29 }, { -1, 36 }, { 1, 38 },
452 { 2, 43 }, { -6, 55 }, { 0, 58 }, { 0, 64 },
453 { -3, 74 }, { -10, 90 }, { 0, 70 }, { -4, 29 },
454 { 5, 31 }, { 7, 42 }, { 1, 59 }, { -2, 58 },
455 { -3, 72 }, { -3, 81 }, { -11, 97 }, { 0, 58 },
456 { 8, 5 }, { 10, 14 }, { 14, 18 }, { 13, 27 },
457 { 2, 40 }, { 0, 58 }, { -3, 70 }, { -6, 79 },
458 { -8, 85 },
459
460 /* 276 a bit special (not used, bypass is used instead) */
461 { 0, 0 },
462
463 /* 277 - 337 */
464 { -13, 106 }, { -16, 106 }, { -10, 87 }, { -21, 114 },
465 { -18, 110 }, { -14, 98 }, { -22, 110 }, { -21, 106 },
466 { -18, 103 }, { -21, 107 }, { -23, 108 }, { -26, 112 },
467 { -10, 96 }, { -12, 95 }, { -5, 91 }, { -9, 93 },
468 { -22, 94 }, { -5, 86 }, { 9, 67 }, { -4, 80 },
469 { -10, 85 }, { -1, 70 }, { 7, 60 }, { 9, 58 },
470 { 5, 61 }, { 12, 50 }, { 15, 50 }, { 18, 49 },
471 { 17, 54 }, { 10, 41 }, { 7, 46 }, { -1, 51 },
472 { 7, 49 }, { 8, 52 }, { 9, 41 }, { 6, 47 },
473 { 2, 55 }, { 13, 41 }, { 10, 44 }, { 6, 50 },
474 { 5, 53 }, { 13, 49 }, { 4, 63 }, { 6, 64 },
475 { -2, 69 }, { -2, 59 }, { 6, 70 }, { 10, 44 },
476 { 9, 31 }, { 12, 43 }, { 3, 53 }, { 14, 34 },
477 { 10, 38 }, { -3, 52 }, { 13, 40 }, { 17, 32 },
478 { 7, 44 }, { 7, 38 }, { 13, 50 }, { 10, 57 },
479 { 26, 43 },
480
481 /* 338 - 398 */
482 { 14, 11 }, { 11, 14 }, { 9, 11 }, { 18, 11 },
483 { 21, 9 }, { 23, -2 }, { 32, -15 }, { 32, -15 },
484 { 34, -21 }, { 39, -23 }, { 42, -33 }, { 41, -31 },
485 { 46, -28 }, { 38, -12 }, { 21, 29 }, { 45, -24 },
486 { 53, -45 }, { 48, -26 }, { 65, -43 }, { 43, -19 },
487 { 39, -10 }, { 30, 9 }, { 18, 26 }, { 20, 27 },
488 { 0, 57 }, { -14, 82 }, { -5, 75 }, { -19, 97 },
489 { -35, 125 }, { 27, 0 }, { 28, 0 }, { 31, -4 },
490 { 27, 6 }, { 34, 8 }, { 30, 10 }, { 24, 22 },
491 { 33, 19 }, { 22, 32 }, { 26, 31 }, { 21, 41 },
492 { 26, 44 }, { 23, 47 }, { 16, 65 }, { 14, 71 },
493 { 8, 60 }, { 6, 63 }, { 17, 65 }, { 21, 24 },
494 { 23, 20 }, { 26, 23 }, { 27, 32 }, { 28, 23 },
495 { 28, 24 }, { 23, 40 }, { 24, 32 }, { 28, 29 },
496 { 23, 42 }, { 19, 57 }, { 22, 53 }, { 22, 61 },
497 { 11, 86 },
498
499 /* 399 - 435 */
500 { 12, 40 }, { 11, 51 }, { 14, 59 },
501 { -4, 79 }, { -7, 71 }, { -5, 69 }, { -9, 70 },
502 { -8, 66 }, { -10, 68 }, { -19, 73 }, { -12, 69 },
503 { -16, 70 }, { -15, 67 }, { -20, 62 }, { -19, 70 },
504 { -16, 66 }, { -22, 65 }, { -20, 63 }, { 9, -2 },
505 { 26, -9 }, { 33, -9 }, { 39, -7 }, { 41, -2 },
506 { 45, 3 }, { 49, 9 }, { 45, 27 }, { 36, 59 },
507 { -6, 66 }, { -7, 35 }, { -7, 42 }, { -8, 45 },
508 { -5, 48 }, { -12, 56 }, { -6, 60 }, { -5, 62 },
509 { -8, 66 }, { -8, 76 },
510
511 /* 436 - 459 */
512 { -5, 85 }, { -6, 81 }, { -10, 77 }, { -7, 81 },
513 { -17, 80 }, { -18, 73 }, { -4, 74 }, { -10, 83 },
514 { -9, 71 }, { -9, 67 }, { -1, 61 }, { -8, 66 },
515 { -14, 66 }, { 0, 59 }, { 2, 59 }, { 21, -13 },
516 { 33, -14 }, { 39, -7 }, { 46, -2 }, { 51, 2 },
517 { 60, 6 }, { 61, 17 }, { 55, 34 }, { 42, 62 },
518
519 /* 460 - 1024 */
520 { -7, 92 }, { -5, 89 }, { -7, 96 }, { -13, 108 },
521 { -3, 46 }, { -1, 65 }, { -1, 57 }, { -9, 93 },
522 { -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 },
523 { -7, 92 }, { -5, 89 }, { -7, 96 }, { -13, 108 },
524 { -3, 46 }, { -1, 65 }, { -1, 57 }, { -9, 93 },
525 { -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 },
526 { -2, 85 }, { -6, 78 }, { -1, 75 }, { -7, 77 },
527 { 2, 54 }, { 5, 50 }, { -3, 68 }, { 1, 50 },
528 { 6, 42 }, { -4, 81 }, { 1, 63 }, { -4, 70 },
529 { 0, 67 }, { 2, 57 }, { -2, 76 }, { 11, 35 },
530 { 4, 64 }, { 1, 61 }, { 11, 35 }, { 18, 25 },
531 { 12, 24 }, { 13, 29 }, { 13, 36 }, { -10, 93 },
532 { -7, 73 }, { -2, 73 }, { 13, 46 }, { 9, 49 },
533 { -7, 100 }, { 9, 53 }, { 2, 53 }, { 5, 53 },
534 { -2, 61 }, { 0, 56 }, { 0, 56 }, { -13, 63 },
535 { -5, 60 }, { -1, 62 }, { 4, 57 }, { -6, 69 },
536 { 4, 57 }, { 14, 39 }, { 4, 51 }, { 13, 68 },
537 { -2, 85 }, { -6, 78 }, { -1, 75 }, { -7, 77 },
538 { 2, 54 }, { 5, 50 }, { -3, 68 }, { 1, 50 },
539 { 6, 42 }, { -4, 81 }, { 1, 63 }, { -4, 70 },
540 { 0, 67 }, { 2, 57 }, { -2, 76 }, { 11, 35 },
541 { 4, 64 }, { 1, 61 }, { 11, 35 }, { 18, 25 },
542 { 12, 24 }, { 13, 29 }, { 13, 36 }, { -10, 93 },
543 { -7, 73 }, { -2, 73 }, { 13, 46 }, { 9, 49 },
544 { -7, 100 }, { 9, 53 }, { 2, 53 }, { 5, 53 },
545 { -2, 61 }, { 0, 56 }, { 0, 56 }, { -13, 63 },
546 { -5, 60 }, { -1, 62 }, { 4, 57 }, { -6, 69 },
547 { 4, 57 }, { 14, 39 }, { 4, 51 }, { 13, 68 },
548 { 11, 28 }, { 2, 40 }, { 3, 44 }, { 0, 49 },
549 { 0, 46 }, { 2, 44 }, { 2, 51 }, { 0, 47 },
550 { 4, 39 }, { 2, 62 }, { 6, 46 }, { 0, 54 },
551 { 3, 54 }, { 2, 58 }, { 4, 63 }, { 6, 51 },
552 { 6, 57 }, { 7, 53 }, { 6, 52 }, { 6, 55 },
553 { 11, 45 }, { 14, 36 }, { 8, 53 }, { -1, 82 },
554 { 7, 55 }, { -3, 78 }, { 15, 46 }, { 22, 31 },
555 { -1, 84 }, { 25, 7 }, { 30, -7 }, { 28, 3 },
556 { 28, 4 }, { 32, 0 }, { 34, -1 }, { 30, 6 },
557 { 30, 6 }, { 32, 9 }, { 31, 19 }, { 26, 27 },
558 { 26, 30 }, { 37, 20 }, { 28, 34 }, { 17, 70 },
559 { 11, 28 }, { 2, 40 }, { 3, 44 }, { 0, 49 },
560 { 0, 46 }, { 2, 44 }, { 2, 51 }, { 0, 47 },
561 { 4, 39 }, { 2, 62 }, { 6, 46 }, { 0, 54 },
562 { 3, 54 }, { 2, 58 }, { 4, 63 }, { 6, 51 },
563 { 6, 57 }, { 7, 53 }, { 6, 52 }, { 6, 55 },
564 { 11, 45 }, { 14, 36 }, { 8, 53 }, { -1, 82 },
565 { 7, 55 }, { -3, 78 }, { 15, 46 }, { 22, 31 },
566 { -1, 84 }, { 25, 7 }, { 30, -7 }, { 28, 3 },
567 { 28, 4 }, { 32, 0 }, { 34, -1 }, { 30, 6 },
568 { 30, 6 }, { 32, 9 }, { 31, 19 }, { 26, 27 },
569 { 26, 30 }, { 37, 20 }, { 28, 34 }, { 17, 70 },
570 { -4, 79 }, { -7, 71 }, { -5, 69 }, { -9, 70 },
571 { -8, 66 }, { -10, 68 }, { -19, 73 }, { -12, 69 },
572 { -16, 70 }, { -15, 67 }, { -20, 62 }, { -19, 70 },
573 { -16, 66 }, { -22, 65 }, { -20, 63 }, { -5, 85 },
574 { -6, 81 }, { -10, 77 }, { -7, 81 }, { -17, 80 },
575 { -18, 73 }, { -4, 74 }, { -10, 83 }, { -9, 71 },
576 { -9, 67 }, { -1, 61 }, { -8, 66 }, { -14, 66 },
577 { 0, 59 }, { 2, 59 }, { 9, -2 }, { 26, -9 },
578 { 33, -9 }, { 39, -7 }, { 41, -2 }, { 45, 3 },
579 { 49, 9 }, { 45, 27 }, { 36, 59 }, { 21, -13 },
580 { 33, -14 }, { 39, -7 }, { 46, -2 }, { 51, 2 },
581 { 60, 6 }, { 61, 17 }, { 55, 34 }, { 42, 62 },
582 { -6, 66 }, { -7, 35 }, { -7, 42 }, { -8, 45 },
583 { -5, 48 }, { -12, 56 }, { -6, 60 }, { -5, 62 },
584 { -8, 66 }, { -8, 76 }, { -4, 79 }, { -7, 71 },
585 { -5, 69 }, { -9, 70 }, { -8, 66 }, { -10, 68 },
586 { -19, 73 }, { -12, 69 }, { -16, 70 }, { -15, 67 },
587 { -20, 62 }, { -19, 70 }, { -16, 66 }, { -22, 65 },
588 { -20, 63 }, { -5, 85 }, { -6, 81 }, { -10, 77 },
589 { -7, 81 }, { -17, 80 }, { -18, 73 }, { -4, 74 },
590 { -10, 83 }, { -9, 71 }, { -9, 67 }, { -1, 61 },
591 { -8, 66 }, { -14, 66 }, { 0, 59 }, { 2, 59 },
592 { 9, -2 }, { 26, -9 }, { 33, -9 }, { 39, -7 },
593 { 41, -2 }, { 45, 3 }, { 49, 9 }, { 45, 27 },
594 { 36, 59 }, { 21, -13 }, { 33, -14 }, { 39, -7 },
595 { 46, -2 }, { 51, 2 }, { 60, 6 }, { 61, 17 },
596 { 55, 34 }, { 42, 62 }, { -6, 66 }, { -7, 35 },
597 { -7, 42 }, { -8, 45 }, { -5, 48 }, { -12, 56 },
598 { -6, 60 }, { -5, 62 }, { -8, 66 }, { -8, 76 },
599 { -13, 106 }, { -16, 106 }, { -10, 87 }, { -21, 114 },
600 { -18, 110 }, { -14, 98 }, { -22, 110 }, { -21, 106 },
601 { -18, 103 }, { -21, 107 }, { -23, 108 }, { -26, 112 },
602 { -10, 96 }, { -12, 95 }, { -5, 91 }, { -9, 93 },
603 { -22, 94 }, { -5, 86 }, { 9, 67 }, { -4, 80 },
604 { -10, 85 }, { -1, 70 }, { 7, 60 }, { 9, 58 },
605 { 5, 61 }, { 12, 50 }, { 15, 50 }, { 18, 49 },
606 { 17, 54 }, { 10, 41 }, { 7, 46 }, { -1, 51 },
607 { 7, 49 }, { 8, 52 }, { 9, 41 }, { 6, 47 },
608 { 2, 55 }, { 13, 41 }, { 10, 44 }, { 6, 50 },
609 { 5, 53 }, { 13, 49 }, { 4, 63 }, { 6, 64 },
610 { -13, 106 }, { -16, 106 }, { -10, 87 }, { -21, 114 },
611 { -18, 110 }, { -14, 98 }, { -22, 110 }, { -21, 106 },
612 { -18, 103 }, { -21, 107 }, { -23, 108 }, { -26, 112 },
613 { -10, 96 }, { -12, 95 }, { -5, 91 }, { -9, 93 },
614 { -22, 94 }, { -5, 86 }, { 9, 67 }, { -4, 80 },
615 { -10, 85 }, { -1, 70 }, { 7, 60 }, { 9, 58 },
616 { 5, 61 }, { 12, 50 }, { 15, 50 }, { 18, 49 },
617 { 17, 54 }, { 10, 41 }, { 7, 46 }, { -1, 51 },
618 { 7, 49 }, { 8, 52 }, { 9, 41 }, { 6, 47 },
619 { 2, 55 }, { 13, 41 }, { 10, 44 }, { 6, 50 },
620 { 5, 53 }, { 13, 49 }, { 4, 63 }, { 6, 64 },
621 { 14, 11 }, { 11, 14 }, { 9, 11 }, { 18, 11 },
622 { 21, 9 }, { 23, -2 }, { 32, -15 }, { 32, -15 },
623 { 34, -21 }, { 39, -23 }, { 42, -33 }, { 41, -31 },
624 { 46, -28 }, { 38, -12 }, { 21, 29 }, { 45, -24 },
625 { 53, -45 }, { 48, -26 }, { 65, -43 }, { 43, -19 },
626 { 39, -10 }, { 30, 9 }, { 18, 26 }, { 20, 27 },
627 { 0, 57 }, { -14, 82 }, { -5, 75 }, { -19, 97 },
628 { -35, 125 }, { 27, 0 }, { 28, 0 }, { 31, -4 },
629 { 27, 6 }, { 34, 8 }, { 30, 10 }, { 24, 22 },
630 { 33, 19 }, { 22, 32 }, { 26, 31 }, { 21, 41 },
631 { 26, 44 }, { 23, 47 }, { 16, 65 }, { 14, 71 },
632 { 14, 11 }, { 11, 14 }, { 9, 11 }, { 18, 11 },
633 { 21, 9 }, { 23, -2 }, { 32, -15 }, { 32, -15 },
634 { 34, -21 }, { 39, -23 }, { 42, -33 }, { 41, -31 },
635 { 46, -28 }, { 38, -12 }, { 21, 29 }, { 45, -24 },
636 { 53, -45 }, { 48, -26 }, { 65, -43 }, { 43, -19 },
637 { 39, -10 }, { 30, 9 }, { 18, 26 }, { 20, 27 },
638 { 0, 57 }, { -14, 82 }, { -5, 75 }, { -19, 97 },
639 { -35, 125 }, { 27, 0 }, { 28, 0 }, { 31, -4 },
640 { 27, 6 }, { 34, 8 }, { 30, 10 }, { 24, 22 },
641 { 33, 19 }, { 22, 32 }, { 26, 31 }, { 21, 41 },
642 { 26, 44 }, { 23, 47 }, { 16, 65 }, { 14, 71 },
643 { -6, 76 }, { -2, 44 }, { 0, 45 }, { 0, 52 },
644 { -3, 64 }, { -2, 59 }, { -4, 70 }, { -4, 75 },
645 { -8, 82 }, { -17, 102 }, { -9, 77 }, { 3, 24 },
646 { 0, 42 }, { 0, 48 }, { 0, 55 }, { -6, 59 },
647 { -7, 71 }, { -12, 83 }, { -11, 87 }, { -30, 119 },
648 { 1, 58 }, { -3, 29 }, { -1, 36 }, { 1, 38 },
649 { 2, 43 }, { -6, 55 }, { 0, 58 }, { 0, 64 },
650 { -3, 74 }, { -10, 90 }, { -6, 76 }, { -2, 44 },
651 { 0, 45 }, { 0, 52 }, { -3, 64 }, { -2, 59 },
652 { -4, 70 }, { -4, 75 }, { -8, 82 }, { -17, 102 },
653 { -9, 77 }, { 3, 24 }, { 0, 42 }, { 0, 48 },
654 { 0, 55 }, { -6, 59 }, { -7, 71 }, { -12, 83 },
655 { -11, 87 }, { -30, 119 }, { 1, 58 }, { -3, 29 },
656 { -1, 36 }, { 1, 38 }, { 2, 43 }, { -6, 55 },
657 { 0, 58 }, { 0, 64 }, { -3, 74 }, { -10, 90 },
658 { -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 },
659 { -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 },
660 { -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 }
661 },
662
663 /* i_cabac_init_idc == 1 */
664 {
665 /* 0 - 10 */
666 { 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
667 { 2, 54 }, { 3, 74 }, { -28, 127 }, { -23, 104 },
668 { -6, 53 }, { -1, 54 }, { 7, 51 },
669
670 /* 11 - 23 */
671 { 22, 25 }, { 34, 0 }, { 16, 0 }, { -2, 9 },
672 { 4, 41 }, { -29, 118 }, { 2, 65 }, { -6, 71 },
673 { -13, 79 }, { 5, 52 }, { 9, 50 }, { -3, 70 },
674 { 10, 54 },
675
676 /* 24 - 39 */
677 { 26, 34 }, { 19, 22 }, { 40, 0 }, { 57, 2 },
678 { 41, 36 }, { 26, 69 }, { -45, 127 }, { -15, 101 },
679 { -4, 76 }, { -6, 71 }, { -13, 79 }, { 5, 52 },
680 { 6, 69 }, { -13, 90 }, { 0, 52 }, { 8, 43 },
681
682 /* 40 - 53 */
683 { -2, 69 },{ -5, 82 },{ -10, 96 },{ 2, 59 },
684 { 2, 75 },{ -3, 87 },{ -3, 100 },{ 1, 56 },
685 { -3, 74 },{ -6, 85 },{ 0, 59 },{ -3, 81 },
686 { -7, 86 },{ -5, 95 },
687
688 /* 54 - 59 */
689 { -1, 66 },{ -1, 77 },{ 1, 70 },{ -2, 86 },
690 { -5, 72 },{ 0, 61 },
691
692 /* 60 - 69 */
693 { 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
694 { -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
695 { 13, 41 }, { 3, 62 },
696
697 /* 70 - 104 */
698 { 13, 15 }, { 7, 51 }, { 2, 80 }, { -39, 127 },
699 { -18, 91 }, { -17, 96 }, { -26, 81 }, { -35, 98 },
700 { -24, 102 }, { -23, 97 }, { -27, 119 }, { -24, 99 },
701 { -21, 110 }, { -18, 102 }, { -36, 127 }, { 0, 80 },
702 { -5, 89 }, { -7, 94 }, { -4, 92 }, { 0, 39 },
703 { 0, 65 }, { -15, 84 }, { -35, 127 }, { -2, 73 },
704 { -12, 104 }, { -9, 91 }, { -31, 127 }, { 3, 55 },
705 { 7, 56 }, { 7, 55 }, { 8, 61 }, { -3, 53 },
706 { 0, 68 }, { -7, 74 }, { -9, 88 },
707
708 /* 105 -> 165 */
709 { -13, 103 }, { -13, 91 }, { -9, 89 }, { -14, 92 },
710 { -8, 76 }, { -12, 87 }, { -23, 110 }, { -24, 105 },
711 { -10, 78 }, { -20, 112 }, { -17, 99 }, { -78, 127 },
712 { -70, 127 }, { -50, 127 }, { -46, 127 }, { -4, 66 },
713 { -5, 78 }, { -4, 71 }, { -8, 72 }, { 2, 59 },
714 { -1, 55 }, { -7, 70 }, { -6, 75 }, { -8, 89 },
715 { -34, 119 }, { -3, 75 }, { 32, 20 }, { 30, 22 },
716 { -44, 127 }, { 0, 54 }, { -5, 61 }, { 0, 58 },
717 { -1, 60 }, { -3, 61 }, { -8, 67 }, { -25, 84 },
718 { -14, 74 }, { -5, 65 }, { 5, 52 }, { 2, 57 },
719 { 0, 61 }, { -9, 69 }, { -11, 70 }, { 18, 55 },
720 { -4, 71 }, { 0, 58 }, { 7, 61 }, { 9, 41 },
721 { 18, 25 }, { 9, 32 }, { 5, 43 }, { 9, 47 },
722 { 0, 44 }, { 0, 51 }, { 2, 46 }, { 19, 38 },
723 { -4, 66 }, { 15, 38 }, { 12, 42 }, { 9, 34 },
724 { 0, 89 },
725
726 /* 166 - 226 */
727 { 4, 45 }, { 10, 28 }, { 10, 31 }, { 33, -11 },
728 { 52, -43 }, { 18, 15 }, { 28, 0 }, { 35, -22 },
729 { 38, -25 }, { 34, 0 }, { 39, -18 }, { 32, -12 },
730 { 102, -94 }, { 0, 0 }, { 56, -15 }, { 33, -4 },
731 { 29, 10 }, { 37, -5 }, { 51, -29 }, { 39, -9 },
732 { 52, -34 }, { 69, -58 }, { 67, -63 }, { 44, -5 },
733 { 32, 7 }, { 55, -29 }, { 32, 1 }, { 0, 0 },
734 { 27, 36 }, { 33, -25 }, { 34, -30 }, { 36, -28 },
735 { 38, -28 }, { 38, -27 }, { 34, -18 }, { 35, -16 },
736 { 34, -14 }, { 32, -8 }, { 37, -6 }, { 35, 0 },
737 { 30, 10 }, { 28, 18 }, { 26, 25 }, { 29, 41 },
738 { 0, 75 }, { 2, 72 }, { 8, 77 }, { 14, 35 },
739 { 18, 31 }, { 17, 35 }, { 21, 30 }, { 17, 45 },
740 { 20, 42 }, { 18, 45 }, { 27, 26 }, { 16, 54 },
741 { 7, 66 }, { 16, 56 }, { 11, 73 }, { 10, 67 },
742 { -10, 116 },
743
744 /* 227 - 275 */
745 { -23, 112 }, { -15, 71 }, { -7, 61 }, { 0, 53 },
746 { -5, 66 }, { -11, 77 }, { -9, 80 }, { -9, 84 },
747 { -10, 87 }, { -34, 127 }, { -21, 101 }, { -3, 39 },
748 { -5, 53 }, { -7, 61 }, { -11, 75 }, { -15, 77 },
749 { -17, 91 }, { -25, 107 }, { -25, 111 }, { -28, 122 },
750 { -11, 76 }, { -10, 44 }, { -10, 52 }, { -10, 57 },
751 { -9, 58 }, { -16, 72 }, { -7, 69 }, { -4, 69 },
752 { -5, 74 }, { -9, 86 }, { 2, 66 }, { -9, 34 },
753 { 1, 32 }, { 11, 31 }, { 5, 52 }, { -2, 55 },
754 { -2, 67 }, { 0, 73 }, { -8, 89 }, { 3, 52 },
755 { 7, 4 }, { 10, 8 }, { 17, 8 }, { 16, 19 },
756 { 3, 37 }, { -1, 61 }, { -5, 73 }, { -1, 70 },
757 { -4, 78 },
758
759 /* 276 a bit special (not used, bypass is used instead) */
760 { 0, 0 },
761
762 /* 277 - 337 */
763 { -21, 126 }, { -23, 124 }, { -20, 110 }, { -26, 126 },
764 { -25, 124 }, { -17, 105 }, { -27, 121 }, { -27, 117 },
765 { -17, 102 }, { -26, 117 }, { -27, 116 }, { -33, 122 },
766 { -10, 95 }, { -14, 100 }, { -8, 95 }, { -17, 111 },
767 { -28, 114 }, { -6, 89 }, { -2, 80 }, { -4, 82 },
768 { -9, 85 }, { -8, 81 }, { -1, 72 }, { 5, 64 },
769 { 1, 67 }, { 9, 56 }, { 0, 69 }, { 1, 69 },
770 { 7, 69 }, { -7, 69 }, { -6, 67 }, { -16, 77 },
771 { -2, 64 }, { 2, 61 }, { -6, 67 }, { -3, 64 },
772 { 2, 57 }, { -3, 65 }, { -3, 66 }, { 0, 62 },
773 { 9, 51 }, { -1, 66 }, { -2, 71 }, { -2, 75 },
774 { -1, 70 }, { -9, 72 }, { 14, 60 }, { 16, 37 },
775 { 0, 47 }, { 18, 35 }, { 11, 37 }, { 12, 41 },
776 { 10, 41 }, { 2, 48 }, { 12, 41 }, { 13, 41 },
777 { 0, 59 }, { 3, 50 }, { 19, 40 }, { 3, 66 },
778 { 18, 50 },
779
780 /* 338 - 398 */
781 { 19, -6 }, { 18, -6 }, { 14, 0 }, { 26, -12 },
782 { 31, -16 }, { 33, -25 }, { 33, -22 }, { 37, -28 },
783 { 39, -30 }, { 42, -30 }, { 47, -42 }, { 45, -36 },
784 { 49, -34 }, { 41, -17 }, { 32, 9 }, { 69, -71 },
785 { 63, -63 }, { 66, -64 }, { 77, -74 }, { 54, -39 },
786 { 52, -35 }, { 41, -10 }, { 36, 0 }, { 40, -1 },
787 { 30, 14 }, { 28, 26 }, { 23, 37 }, { 12, 55 },
788 { 11, 65 }, { 37, -33 }, { 39, -36 }, { 40, -37 },
789 { 38, -30 }, { 46, -33 }, { 42, -30 }, { 40, -24 },
790 { 49, -29 }, { 38, -12 }, { 40, -10 }, { 38, -3 },
791 { 46, -5 }, { 31, 20 }, { 29, 30 }, { 25, 44 },
792 { 12, 48 }, { 11, 49 }, { 26, 45 }, { 22, 22 },
793 { 23, 22 }, { 27, 21 }, { 33, 20 }, { 26, 28 },
794 { 30, 24 }, { 27, 34 }, { 18, 42 }, { 25, 39 },
795 { 18, 50 }, { 12, 70 }, { 21, 54 }, { 14, 71 },
796 { 11, 83 },
797
798 /* 399 - 435 */
799 { 25, 32 }, { 21, 49 }, { 21, 54 },
800 { -5, 85 }, { -6, 81 }, { -10, 77 }, { -7, 81 },
801 { -17, 80 }, { -18, 73 }, { -4, 74 }, { -10, 83 },
802 { -9, 71 }, { -9, 67 }, { -1, 61 }, { -8, 66 },
803 { -14, 66 }, { 0, 59 }, { 2, 59 }, { 17, -10 },
804 { 32, -13 }, { 42, -9 }, { 49, -5 }, { 53, 0 },
805 { 64, 3 }, { 68, 10 }, { 66, 27 }, { 47, 57 },
806 { -5, 71 }, { 0, 24 }, { -1, 36 }, { -2, 42 },
807 { -2, 52 }, { -9, 57 }, { -6, 63 }, { -4, 65 },
808 { -4, 67 }, { -7, 82 },
809
810 /* 436 - 459 */
811 { -3, 81 }, { -3, 76 }, { -7, 72 }, { -6, 78 },
812 { -12, 72 }, { -14, 68 }, { -3, 70 }, { -6, 76 },
813 { -5, 66 }, { -5, 62 }, { 0, 57 }, { -4, 61 },
814 { -9, 60 }, { 1, 54 }, { 2, 58 }, { 17, -10 },
815 { 32, -13 }, { 42, -9 }, { 49, -5 }, { 53, 0 },
816 { 64, 3 }, { 68, 10 }, { 66, 27 }, { 47, 57 },
817
818 /* 460 - 1024 */
819 { 0, 80 }, { -5, 89 }, { -7, 94 }, { -4, 92 },
820 { 0, 39 }, { 0, 65 }, { -15, 84 }, { -35, 127 },
821 { -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 },
822 { 0, 80 }, { -5, 89 }, { -7, 94 }, { -4, 92 },
823 { 0, 39 }, { 0, 65 }, { -15, 84 }, { -35, 127 },
824 { -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 },
825 { -13, 103 }, { -13, 91 }, { -9, 89 }, { -14, 92 },
826 { -8, 76 }, { -12, 87 }, { -23, 110 }, { -24, 105 },
827 { -10, 78 }, { -20, 112 }, { -17, 99 }, { -78, 127 },
828 { -70, 127 }, { -50, 127 }, { -46, 127 }, { -4, 66 },
829 { -5, 78 }, { -4, 71 }, { -8, 72 }, { 2, 59 },
830 { -1, 55 }, { -7, 70 }, { -6, 75 }, { -8, 89 },
831 { -34, 119 }, { -3, 75 }, { 32, 20 }, { 30, 22 },
832 { -44, 127 }, { 0, 54 }, { -5, 61 }, { 0, 58 },
833 { -1, 60 }, { -3, 61 }, { -8, 67 }, { -25, 84 },
834 { -14, 74 }, { -5, 65 }, { 5, 52 }, { 2, 57 },
835 { 0, 61 }, { -9, 69 }, { -11, 70 }, { 18, 55 },
836 { -13, 103 }, { -13, 91 }, { -9, 89 }, { -14, 92 },
837 { -8, 76 }, { -12, 87 }, { -23, 110 }, { -24, 105 },
838 { -10, 78 }, { -20, 112 }, { -17, 99 }, { -78, 127 },
839 { -70, 127 }, { -50, 127 }, { -46, 127 }, { -4, 66 },
840 { -5, 78 }, { -4, 71 }, { -8, 72 }, { 2, 59 },
841 { -1, 55 }, { -7, 70 }, { -6, 75 }, { -8, 89 },
842 { -34, 119 }, { -3, 75 }, { 32, 20 }, { 30, 22 },
843 { -44, 127 }, { 0, 54 }, { -5, 61 }, { 0, 58 },
844 { -1, 60 }, { -3, 61 }, { -8, 67 }, { -25, 84 },
845 { -14, 74 }, { -5, 65 }, { 5, 52 }, { 2, 57 },
846 { 0, 61 }, { -9, 69 }, { -11, 70 }, { 18, 55 },
847 { 4, 45 }, { 10, 28 }, { 10, 31 }, { 33, -11 },
848 { 52, -43 }, { 18, 15 }, { 28, 0 }, { 35, -22 },
849 { 38, -25 }, { 34, 0 }, { 39, -18 }, { 32, -12 },
850 { 102, -94 }, { 0, 0 }, { 56, -15 }, { 33, -4 },
851 { 29, 10 }, { 37, -5 }, { 51, -29 }, { 39, -9 },
852 { 52, -34 }, { 69, -58 }, { 67, -63 }, { 44, -5 },
853 { 32, 7 }, { 55, -29 }, { 32, 1 }, { 0, 0 },
854 { 27, 36 }, { 33, -25 }, { 34, -30 }, { 36, -28 },
855 { 38, -28 }, { 38, -27 }, { 34, -18 }, { 35, -16 },
856 { 34, -14 }, { 32, -8 }, { 37, -6 }, { 35, 0 },
857 { 30, 10 }, { 28, 18 }, { 26, 25 }, { 29, 41 },
858 { 4, 45 }, { 10, 28 }, { 10, 31 }, { 33, -11 },
859 { 52, -43 }, { 18, 15 }, { 28, 0 }, { 35, -22 },
860 { 38, -25 }, { 34, 0 }, { 39, -18 }, { 32, -12 },
861 { 102, -94 }, { 0, 0 }, { 56, -15 }, { 33, -4 },
862 { 29, 10 }, { 37, -5 }, { 51, -29 }, { 39, -9 },
863 { 52, -34 }, { 69, -58 }, { 67, -63 }, { 44, -5 },
864 { 32, 7 }, { 55, -29 }, { 32, 1 }, { 0, 0 },
865 { 27, 36 }, { 33, -25 }, { 34, -30 }, { 36, -28 },
866 { 38, -28 }, { 38, -27 }, { 34, -18 }, { 35, -16 },
867 { 34, -14 }, { 32, -8 }, { 37, -6 }, { 35, 0 },
868 { 30, 10 }, { 28, 18 }, { 26, 25 }, { 29, 41 },
869 { -5, 85 }, { -6, 81 }, { -10, 77 }, { -7, 81 },
870 { -17, 80 }, { -18, 73 }, { -4, 74 }, { -10, 83 },
871 { -9, 71 }, { -9, 67 }, { -1, 61 }, { -8, 66 },
872 { -14, 66 }, { 0, 59 }, { 2, 59 }, { -3, 81 },
873 { -3, 76 }, { -7, 72 }, { -6, 78 }, { -12, 72 },
874 { -14, 68 }, { -3, 70 }, { -6, 76 }, { -5, 66 },
875 { -5, 62 }, { 0, 57 }, { -4, 61 }, { -9, 60 },
876 { 1, 54 }, { 2, 58 }, { 17, -10 }, { 32, -13 },
877 { 42, -9 }, { 49, -5 }, { 53, 0 }, { 64, 3 },
878 { 68, 10 }, { 66, 27 }, { 47, 57 }, { 17, -10 },
879 { 32, -13 }, { 42, -9 }, { 49, -5 }, { 53, 0 },
880 { 64, 3 }, { 68, 10 }, { 66, 27 }, { 47, 57 },
881 { -5, 71 }, { 0, 24 }, { -1, 36 }, { -2, 42 },
882 { -2, 52 }, { -9, 57 }, { -6, 63 }, { -4, 65 },
883 { -4, 67 }, { -7, 82 }, { -5, 85 }, { -6, 81 },
884 { -10, 77 }, { -7, 81 }, { -17, 80 }, { -18, 73 },
885 { -4, 74 }, { -10, 83 }, { -9, 71 }, { -9, 67 },
886 { -1, 61 }, { -8, 66 }, { -14, 66 }, { 0, 59 },
887 { 2, 59 }, { -3, 81 }, { -3, 76 }, { -7, 72 },
888 { -6, 78 }, { -12, 72 }, { -14, 68 }, { -3, 70 },
889 { -6, 76 }, { -5, 66 }, { -5, 62 }, { 0, 57 },
890 { -4, 61 }, { -9, 60 }, { 1, 54 }, { 2, 58 },
891 { 17, -10 }, { 32, -13 }, { 42, -9 }, { 49, -5 },
892 { 53, 0 }, { 64, 3 }, { 68, 10 }, { 66, 27 },
893 { 47, 57 }, { 17, -10 }, { 32, -13 }, { 42, -9 },
894 { 49, -5 }, { 53, 0 }, { 64, 3 }, { 68, 10 },
895 { 66, 27 }, { 47, 57 }, { -5, 71 }, { 0, 24 },
896 { -1, 36 }, { -2, 42 }, { -2, 52 }, { -9, 57 },
897 { -6, 63 }, { -4, 65 }, { -4, 67 }, { -7, 82 },
898 { -21, 126 }, { -23, 124 }, { -20, 110 }, { -26, 126 },
899 { -25, 124 }, { -17, 105 }, { -27, 121 }, { -27, 117 },
900 { -17, 102 }, { -26, 117 }, { -27, 116 }, { -33, 122 },
901 { -10, 95 }, { -14, 100 }, { -8, 95 }, { -17, 111 },
902 { -28, 114 }, { -6, 89 }, { -2, 80 }, { -4, 82 },
903 { -9, 85 }, { -8, 81 }, { -1, 72 }, { 5, 64 },
904 { 1, 67 }, { 9, 56 }, { 0, 69 }, { 1, 69 },
905 { 7, 69 }, { -7, 69 }, { -6, 67 }, { -16, 77 },
906 { -2, 64 }, { 2, 61 }, { -6, 67 }, { -3, 64 },
907 { 2, 57 }, { -3, 65 }, { -3, 66 }, { 0, 62 },
908 { 9, 51 }, { -1, 66 }, { -2, 71 }, { -2, 75 },
909 { -21, 126 }, { -23, 124 }, { -20, 110 }, { -26, 126 },
910 { -25, 124 }, { -17, 105 }, { -27, 121 }, { -27, 117 },
911 { -17, 102 }, { -26, 117 }, { -27, 116 }, { -33, 122 },
912 { -10, 95 }, { -14, 100 }, { -8, 95 }, { -17, 111 },
913 { -28, 114 }, { -6, 89 }, { -2, 80 }, { -4, 82 },
914 { -9, 85 }, { -8, 81 }, { -1, 72 }, { 5, 64 },
915 { 1, 67 }, { 9, 56 }, { 0, 69 }, { 1, 69 },
916 { 7, 69 }, { -7, 69 }, { -6, 67 }, { -16, 77 },
917 { -2, 64 }, { 2, 61 }, { -6, 67 }, { -3, 64 },
918 { 2, 57 }, { -3, 65 }, { -3, 66 }, { 0, 62 },
919 { 9, 51 }, { -1, 66 }, { -2, 71 }, { -2, 75 },
920 { 19, -6 }, { 18, -6 }, { 14, 0 }, { 26, -12 },
921 { 31, -16 }, { 33, -25 }, { 33, -22 }, { 37, -28 },
922 { 39, -30 }, { 42, -30 }, { 47, -42 }, { 45, -36 },
923 { 49, -34 }, { 41, -17 }, { 32, 9 }, { 69, -71 },
924 { 63, -63 }, { 66, -64 }, { 77, -74 }, { 54, -39 },
925 { 52, -35 }, { 41, -10 }, { 36, 0 }, { 40, -1 },
926 { 30, 14 }, { 28, 26 }, { 23, 37 }, { 12, 55 },
927 { 11, 65 }, { 37, -33 }, { 39, -36 }, { 40, -37 },
928 { 38, -30 }, { 46, -33 }, { 42, -30 }, { 40, -24 },
929 { 49, -29 }, { 38, -12 }, { 40, -10 }, { 38, -3 },
930 { 46, -5 }, { 31, 20 }, { 29, 30 }, { 25, 44 },
931 { 19, -6 }, { 18, -6 }, { 14, 0 }, { 26, -12 },
932 { 31, -16 }, { 33, -25 }, { 33, -22 }, { 37, -28 },
933 { 39, -30 }, { 42, -30 }, { 47, -42 }, { 45, -36 },
934 { 49, -34 }, { 41, -17 }, { 32, 9 }, { 69, -71 },
935 { 63, -63 }, { 66, -64 }, { 77, -74 }, { 54, -39 },
936 { 52, -35 }, { 41, -10 }, { 36, 0 }, { 40, -1 },
937 { 30, 14 }, { 28, 26 }, { 23, 37 }, { 12, 55 },
938 { 11, 65 }, { 37, -33 }, { 39, -36 }, { 40, -37 },
939 { 38, -30 }, { 46, -33 }, { 42, -30 }, { 40, -24 },
940 { 49, -29 }, { 38, -12 }, { 40, -10 }, { 38, -3 },
941 { 46, -5 }, { 31, 20 }, { 29, 30 }, { 25, 44 },
942 { -23, 112 }, { -15, 71 }, { -7, 61 }, { 0, 53 },
943 { -5, 66 }, { -11, 77 }, { -9, 80 }, { -9, 84 },
944 { -10, 87 }, { -34, 127 }, { -21, 101 }, { -3, 39 },
945 { -5, 53 }, { -7, 61 }, { -11, 75 }, { -15, 77 },
946 { -17, 91 }, { -25, 107 }, { -25, 111 }, { -28, 122 },
947 { -11, 76 }, { -10, 44 }, { -10, 52 }, { -10, 57 },
948 { -9, 58 }, { -16, 72 }, { -7, 69 }, { -4, 69 },
949 { -5, 74 }, { -9, 86 }, { -23, 112 }, { -15, 71 },
950 { -7, 61 }, { 0, 53 }, { -5, 66 }, { -11, 77 },
951 { -9, 80 }, { -9, 84 }, { -10, 87 }, { -34, 127 },
952 { -21, 101 }, { -3, 39 }, { -5, 53 }, { -7, 61 },
953 { -11, 75 }, { -15, 77 }, { -17, 91 }, { -25, 107 },
954 { -25, 111 }, { -28, 122 }, { -11, 76 }, { -10, 44 },
955 { -10, 52 }, { -10, 57 }, { -9, 58 }, { -16, 72 },
956 { -7, 69 }, { -4, 69 }, { -5, 74 }, { -9, 86 },
957 { -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 },
958 { -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 },
959 { -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 }
960 },
961
962 /* i_cabac_init_idc == 2 */
963 {
964 /* 0 - 10 */
965 { 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
966 { 2, 54 }, { 3, 74 }, { -28, 127 }, { -23, 104 },
967 { -6, 53 }, { -1, 54 }, { 7, 51 },
968
969 /* 11 - 23 */
970 { 29, 16 }, { 25, 0 }, { 14, 0 }, { -10, 51 },
971 { -3, 62 }, { -27, 99 }, { 26, 16 }, { -4, 85 },
972 { -24, 102 }, { 5, 57 }, { 6, 57 }, { -17, 73 },
973 { 14, 57 },
974
975 /* 24 - 39 */
976 { 20, 40 }, { 20, 10 }, { 29, 0 }, { 54, 0 },
977 { 37, 42 }, { 12, 97 }, { -32, 127 }, { -22, 117 },
978 { -2, 74 }, { -4, 85 }, { -24, 102 }, { 5, 57 },
979 { -6, 93 }, { -14, 88 }, { -6, 44 }, { 4, 55 },
980
981 /* 40 - 53 */
982 { -11, 89 },{ -15, 103 },{ -21, 116 },{ 19, 57 },
983 { 20, 58 },{ 4, 84 },{ 6, 96 },{ 1, 63 },
984 { -5, 85 },{ -13, 106 },{ 5, 63 },{ 6, 75 },
985 { -3, 90 },{ -1, 101 },
986
987 /* 54 - 59 */
988 { 3, 55 },{ -4, 79 },{ -2, 75 },{ -12, 97 },
989 { -7, 50 },{ 1, 60 },
990
991 /* 60 - 69 */
992 { 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
993 { -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
994 { 13, 41 }, { 3, 62 },
995
996 /* 70 - 104 */
997 { 7, 34 }, { -9, 88 }, { -20, 127 }, { -36, 127 },
998 { -17, 91 }, { -14, 95 }, { -25, 84 }, { -25, 86 },
999 { -12, 89 }, { -17, 91 }, { -31, 127 }, { -14, 76 },
1000 { -18, 103 }, { -13, 90 }, { -37, 127 }, { 11, 80 },
1001 { 5, 76 }, { 2, 84 }, { 5, 78 }, { -6, 55 },
1002 { 4, 61 }, { -14, 83 }, { -37, 127 }, { -5, 79 },
1003 { -11, 104 }, { -11, 91 }, { -30, 127 }, { 0, 65 },
1004 { -2, 79 }, { 0, 72 }, { -4, 92 }, { -6, 56 },
1005 { 3, 68 }, { -8, 71 }, { -13, 98 },
1006
1007 /* 105 -> 165 */
1008 { -4, 86 }, { -12, 88 }, { -5, 82 }, { -3, 72 },
1009 { -4, 67 }, { -8, 72 }, { -16, 89 }, { -9, 69 },
1010 { -1, 59 }, { 5, 66 }, { 4, 57 }, { -4, 71 },
1011 { -2, 71 }, { 2, 58 }, { -1, 74 }, { -4, 44 },
1012 { -1, 69 }, { 0, 62 }, { -7, 51 }, { -4, 47 },
1013 { -6, 42 }, { -3, 41 }, { -6, 53 }, { 8, 76 },
1014 { -9, 78 }, { -11, 83 }, { 9, 52 }, { 0, 67 },
1015 { -5, 90 }, { 1, 67 }, { -15, 72 }, { -5, 75 },
1016 { -8, 80 }, { -21, 83 }, { -21, 64 }, { -13, 31 },
1017 { -25, 64 }, { -29, 94 }, { 9, 75 }, { 17, 63 },
1018 { -8, 74 }, { -5, 35 }, { -2, 27 }, { 13, 91 },
1019 { 3, 65 }, { -7, 69 }, { 8, 77 }, { -10, 66 },
1020 { 3, 62 }, { -3, 68 }, { -20, 81 }, { 0, 30 },
1021 { 1, 7 }, { -3, 23 }, { -21, 74 }, { 16, 66 },
1022 { -23, 124 }, { 17, 37 }, { 44, -18 }, { 50, -34 },
1023 { -22, 127 },
1024
1025 /* 166 - 226 */
1026 { 4, 39 }, { 0, 42 }, { 7, 34 }, { 11, 29 },
1027 { 8, 31 }, { 6, 37 }, { 7, 42 }, { 3, 40 },
1028 { 8, 33 }, { 13, 43 }, { 13, 36 }, { 4, 47 },
1029 { 3, 55 }, { 2, 58 }, { 6, 60 }, { 8, 44 },
1030 { 11, 44 }, { 14, 42 }, { 7, 48 }, { 4, 56 },
1031 { 4, 52 }, { 13, 37 }, { 9, 49 }, { 19, 58 },
1032 { 10, 48 }, { 12, 45 }, { 0, 69 }, { 20, 33 },
1033 { 8, 63 }, { 35, -18 }, { 33, -25 }, { 28, -3 },
1034 { 24, 10 }, { 27, 0 }, { 34, -14 }, { 52, -44 },
1035 { 39, -24 }, { 19, 17 }, { 31, 25 }, { 36, 29 },
1036 { 24, 33 }, { 34, 15 }, { 30, 20 }, { 22, 73 },
1037 { 20, 34 }, { 19, 31 }, { 27, 44 }, { 19, 16 },
1038 { 15, 36 }, { 15, 36 }, { 21, 28 }, { 25, 21 },
1039 { 30, 20 }, { 31, 12 }, { 27, 16 }, { 24, 42 },
1040 { 0, 93 }, { 14, 56 }, { 15, 57 }, { 26, 38 },
1041 { -24, 127 },
1042
1043 /* 227 - 275 */
1044 { -24, 115 }, { -22, 82 }, { -9, 62 }, { 0, 53 },
1045 { 0, 59 }, { -14, 85 }, { -13, 89 }, { -13, 94 },
1046 { -11, 92 }, { -29, 127 }, { -21, 100 }, { -14, 57 },
1047 { -12, 67 }, { -11, 71 }, { -10, 77 }, { -21, 85 },
1048 { -16, 88 }, { -23, 104 }, { -15, 98 }, { -37, 127 },
1049 { -10, 82 }, { -8, 48 }, { -8, 61 }, { -8, 66 },
1050 { -7, 70 }, { -14, 75 }, { -10, 79 }, { -9, 83 },
1051 { -12, 92 }, { -18, 108 }, { -4, 79 }, { -22, 69 },
1052 { -16, 75 }, { -2, 58 }, { 1, 58 }, { -13, 78 },
1053 { -9, 83 }, { -4, 81 }, { -13, 99 }, { -13, 81 },
1054 { -6, 38 }, { -13, 62 }, { -6, 58 }, { -2, 59 },
1055 { -16, 73 }, { -10, 76 }, { -13, 86 }, { -9, 83 },
1056 { -10, 87 },
1057
1058 /* 276 a bit special (not used, bypass is used instead) */
1059 { 0, 0 },
1060
1061 /* 277 - 337 */
1062 { -22, 127 }, { -25, 127 }, { -25, 120 }, { -27, 127 },
1063 { -19, 114 }, { -23, 117 }, { -25, 118 }, { -26, 117 },
1064 { -24, 113 }, { -28, 118 }, { -31, 120 }, { -37, 124 },
1065 { -10, 94 }, { -15, 102 }, { -10, 99 }, { -13, 106 },
1066 { -50, 127 }, { -5, 92 }, { 17, 57 }, { -5, 86 },
1067 { -13, 94 }, { -12, 91 }, { -2, 77 }, { 0, 71 },
1068 { -1, 73 }, { 4, 64 }, { -7, 81 }, { 5, 64 },
1069 { 15, 57 }, { 1, 67 }, { 0, 68 }, { -10, 67 },
1070 { 1, 68 }, { 0, 77 }, { 2, 64 }, { 0, 68 },
1071 { -5, 78 }, { 7, 55 }, { 5, 59 }, { 2, 65 },
1072 { 14, 54 }, { 15, 44 }, { 5, 60 }, { 2, 70 },
1073 { -2, 76 }, { -18, 86 }, { 12, 70 }, { 5, 64 },
1074 { -12, 70 }, { 11, 55 }, { 5, 56 }, { 0, 69 },
1075 { 2, 65 }, { -6, 74 }, { 5, 54 }, { 7, 54 },
1076 { -6, 76 }, { -11, 82 }, { -2, 77 }, { -2, 77 },
1077 { 25, 42 },
1078
1079 /* 338 - 398 */
1080 { 17, -13 }, { 16, -9 }, { 17, -12 }, { 27, -21 },
1081 { 37, -30 }, { 41, -40 }, { 42, -41 }, { 48, -47 },
1082 { 39, -32 }, { 46, -40 }, { 52, -51 }, { 46, -41 },
1083 { 52, -39 }, { 43, -19 }, { 32, 11 }, { 61, -55 },
1084 { 56, -46 }, { 62, -50 }, { 81, -67 }, { 45, -20 },
1085 { 35, -2 }, { 28, 15 }, { 34, 1 }, { 39, 1 },
1086 { 30, 17 }, { 20, 38 }, { 18, 45 }, { 15, 54 },
1087 { 0, 79 }, { 36, -16 }, { 37, -14 }, { 37, -17 },
1088 { 32, 1 }, { 34, 15 }, { 29, 15 }, { 24, 25 },
1089 { 34, 22 }, { 31, 16 }, { 35, 18 }, { 31, 28 },
1090 { 33, 41 }, { 36, 28 }, { 27, 47 }, { 21, 62 },
1091 { 18, 31 }, { 19, 26 }, { 36, 24 }, { 24, 23 },
1092 { 27, 16 }, { 24, 30 }, { 31, 29 }, { 22, 41 },
1093 { 22, 42 }, { 16, 60 }, { 15, 52 }, { 14, 60 },
1094 { 3, 78 }, { -16, 123 }, { 21, 53 }, { 22, 56 },
1095 { 25, 61 },
1096
1097 /* 399 - 435 */
1098 { 21, 33 }, { 19, 50 }, { 17, 61 },
1099 { -3, 78 }, { -8, 74 }, { -9, 72 }, { -10, 72 },
1100 { -18, 75 }, { -12, 71 }, { -11, 63 }, { -5, 70 },
1101 { -17, 75 }, { -14, 72 }, { -16, 67 }, { -8, 53 },
1102 { -14, 59 }, { -9, 52 }, { -11, 68 }, { 9, -2 },
1103 { 30, -10 }, { 31, -4 }, { 33, -1 }, { 33, 7 },
1104 { 31, 12 }, { 37, 23 }, { 31, 38 }, { 20, 64 },
1105 { -9, 71 }, { -7, 37 }, { -8, 44 }, { -11, 49 },
1106 { -10, 56 }, { -12, 59 }, { -8, 63 }, { -9, 67 },
1107 { -6, 68 }, { -10, 79 },
1108
1109 /* 436 - 459 */
1110 { -3, 78 }, { -8, 74 }, { -9, 72 }, { -10, 72 },
1111 { -18, 75 }, { -12, 71 }, { -11, 63 }, { -5, 70 },
1112 { -17, 75 }, { -14, 72 }, { -16, 67 }, { -8, 53 },
1113 { -14, 59 }, { -9, 52 }, { -11, 68 }, { 9, -2 },
1114 { 30, -10 }, { 31, -4 }, { 33, -1 }, { 33, 7 },
1115 { 31, 12 }, { 37, 23 }, { 31, 38 }, { 20, 64 },
1116
1117 /* 460 - 1024 */
1118 { 11, 80 }, { 5, 76 }, { 2, 84 }, { 5, 78 },
1119 { -6, 55 }, { 4, 61 }, { -14, 83 }, { -37, 127 },
1120 { -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 },
1121 { 11, 80 }, { 5, 76 }, { 2, 84 }, { 5, 78 },
1122 { -6, 55 }, { 4, 61 }, { -14, 83 }, { -37, 127 },
1123 { -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 },
1124 { -4, 86 }, { -12, 88 }, { -5, 82 }, { -3, 72 },
1125 { -4, 67 }, { -8, 72 }, { -16, 89 }, { -9, 69 },
1126 { -1, 59 }, { 5, 66 }, { 4, 57 }, { -4, 71 },
1127 { -2, 71 }, { 2, 58 }, { -1, 74 }, { -4, 44 },
1128 { -1, 69 }, { 0, 62 }, { -7, 51 }, { -4, 47 },
1129 { -6, 42 }, { -3, 41 }, { -6, 53 }, { 8, 76 },
1130 { -9, 78 }, { -11, 83 }, { 9, 52 }, { 0, 67 },
1131 { -5, 90 }, { 1, 67 }, { -15, 72 }, { -5, 75 },
1132 { -8, 80 }, { -21, 83 }, { -21, 64 }, { -13, 31 },
1133 { -25, 64 }, { -29, 94 }, { 9, 75 }, { 17, 63 },
1134 { -8, 74 }, { -5, 35 }, { -2, 27 }, { 13, 91 },
1135 { -4, 86 }, { -12, 88 }, { -5, 82 }, { -3, 72 },
1136 { -4, 67 }, { -8, 72 }, { -16, 89 }, { -9, 69 },
1137 { -1, 59 }, { 5, 66 }, { 4, 57 }, { -4, 71 },
1138 { -2, 71 }, { 2, 58 }, { -1, 74 }, { -4, 44 },
1139 { -1, 69 }, { 0, 62 }, { -7, 51 }, { -4, 47 },
1140 { -6, 42 }, { -3, 41 }, { -6, 53 }, { 8, 76 },
1141 { -9, 78 }, { -11, 83 }, { 9, 52 }, { 0, 67 },
1142 { -5, 90 }, { 1, 67 }, { -15, 72 }, { -5, 75 },
1143 { -8, 80 }, { -21, 83 }, { -21, 64 }, { -13, 31 },
1144 { -25, 64 }, { -29, 94 }, { 9, 75 }, { 17, 63 },
1145 { -8, 74 }, { -5, 35 }, { -2, 27 }, { 13, 91 },
1146 { 4, 39 }, { 0, 42 }, { 7, 34 }, { 11, 29 },
1147 { 8, 31 }, { 6, 37 }, { 7, 42 }, { 3, 40 },
1148 { 8, 33 }, { 13, 43 }, { 13, 36 }, { 4, 47 },
1149 { 3, 55 }, { 2, 58 }, { 6, 60 }, { 8, 44 },
1150 { 11, 44 }, { 14, 42 }, { 7, 48 }, { 4, 56 },
1151 { 4, 52 }, { 13, 37 }, { 9, 49 }, { 19, 58 },
1152 { 10, 48 }, { 12, 45 }, { 0, 69 }, { 20, 33 },
1153 { 8, 63 }, { 35, -18 }, { 33, -25 }, { 28, -3 },
1154 { 24, 10 }, { 27, 0 }, { 34, -14 }, { 52, -44 },
1155 { 39, -24 }, { 19, 17 }, { 31, 25 }, { 36, 29 },
1156 { 24, 33 }, { 34, 15 }, { 30, 20 }, { 22, 73 },
1157 { 4, 39 }, { 0, 42 }, { 7, 34 }, { 11, 29 },
1158 { 8, 31 }, { 6, 37 }, { 7, 42 }, { 3, 40 },
1159 { 8, 33 }, { 13, 43 }, { 13, 36 }, { 4, 47 },
1160 { 3, 55 }, { 2, 58 }, { 6, 60 }, { 8, 44 },
1161 { 11, 44 }, { 14, 42 }, { 7, 48 }, { 4, 56 },
1162 { 4, 52 }, { 13, 37 }, { 9, 49 }, { 19, 58 },
1163 { 10, 48 }, { 12, 45 }, { 0, 69 }, { 20, 33 },
1164 { 8, 63 }, { 35, -18 }, { 33, -25 }, { 28, -3 },
1165 { 24, 10 }, { 27, 0 }, { 34, -14 }, { 52, -44 },
1166 { 39, -24 }, { 19, 17 }, { 31, 25 }, { 36, 29 },
1167 { 24, 33 }, { 34, 15 }, { 30, 20 }, { 22, 73 },
1168 { -3, 78 }, { -8, 74 }, { -9, 72 }, { -10, 72 },
1169 { -18, 75 }, { -12, 71 }, { -11, 63 }, { -5, 70 },
1170 { -17, 75 }, { -14, 72 }, { -16, 67 }, { -8, 53 },
1171 { -14, 59 }, { -9, 52 }, { -11, 68 }, { -3, 78 },
1172 { -8, 74 }, { -9, 72 }, { -10, 72 }, { -18, 75 },
1173 { -12, 71 }, { -11, 63 }, { -5, 70 }, { -17, 75 },
1174 { -14, 72 }, { -16, 67 }, { -8, 53 }, { -14, 59 },
1175 { -9, 52 }, { -11, 68 }, { 9, -2 }, { 30, -10 },
1176 { 31, -4 }, { 33, -1 }, { 33, 7 }, { 31, 12 },
1177 { 37, 23 }, { 31, 38 }, { 20, 64 }, { 9, -2 },
1178 { 30, -10 }, { 31, -4 }, { 33, -1 }, { 33, 7 },
1179 { 31, 12 }, { 37, 23 }, { 31, 38 }, { 20, 64 },
1180 { -9, 71 }, { -7, 37 }, { -8, 44 }, { -11, 49 },
1181 { -10, 56 }, { -12, 59 }, { -8, 63 }, { -9, 67 },
1182 { -6, 68 }, { -10, 79 }, { -3, 78 }, { -8, 74 },
1183 { -9, 72 }, { -10, 72 }, { -18, 75 }, { -12, 71 },
1184 { -11, 63 }, { -5, 70 }, { -17, 75 }, { -14, 72 },
1185 { -16, 67 }, { -8, 53 }, { -14, 59 }, { -9, 52 },
1186 { -11, 68 }, { -3, 78 }, { -8, 74 }, { -9, 72 },
1187 { -10, 72 }, { -18, 75 }, { -12, 71 }, { -11, 63 },
1188 { -5, 70 }, { -17, 75 }, { -14, 72 }, { -16, 67 },
1189 { -8, 53 }, { -14, 59 }, { -9, 52 }, { -11, 68 },
1190 { 9, -2 }, { 30, -10 }, { 31, -4 }, { 33, -1 },
1191 { 33, 7 }, { 31, 12 }, { 37, 23 }, { 31, 38 },
1192 { 20, 64 }, { 9, -2 }, { 30, -10 }, { 31, -4 },
1193 { 33, -1 }, { 33, 7 }, { 31, 12 }, { 37, 23 },
1194 { 31, 38 }, { 20, 64 }, { -9, 71 }, { -7, 37 },
1195 { -8, 44 }, { -11, 49 }, { -10, 56 }, { -12, 59 },
1196 { -8, 63 }, { -9, 67 }, { -6, 68 }, { -10, 79 },
1197 { -22, 127 }, { -25, 127 }, { -25, 120 }, { -27, 127 },
1198 { -19, 114 }, { -23, 117 }, { -25, 118 }, { -26, 117 },
1199 { -24, 113 }, { -28, 118 }, { -31, 120 }, { -37, 124 },
1200 { -10, 94 }, { -15, 102 }, { -10, 99 }, { -13, 106 },
1201 { -50, 127 }, { -5, 92 }, { 17, 57 }, { -5, 86 },
1202 { -13, 94 }, { -12, 91 }, { -2, 77 }, { 0, 71 },
1203 { -1, 73 }, { 4, 64 }, { -7, 81 }, { 5, 64 },
1204 { 15, 57 }, { 1, 67 }, { 0, 68 }, { -10, 67 },
1205 { 1, 68 }, { 0, 77 }, { 2, 64 }, { 0, 68 },
1206 { -5, 78 }, { 7, 55 }, { 5, 59 }, { 2, 65 },
1207 { 14, 54 }, { 15, 44 }, { 5, 60 }, { 2, 70 },
1208 { -22, 127 }, { -25, 127 }, { -25, 120 }, { -27, 127 },
1209 { -19, 114 }, { -23, 117 }, { -25, 118 }, { -26, 117 },
1210 { -24, 113 }, { -28, 118 }, { -31, 120 }, { -37, 124 },
1211 { -10, 94 }, { -15, 102 }, { -10, 99 }, { -13, 106 },
1212 { -50, 127 }, { -5, 92 }, { 17, 57 }, { -5, 86 },
1213 { -13, 94 }, { -12, 91 }, { -2, 77 }, { 0, 71 },
1214 { -1, 73 }, { 4, 64 }, { -7, 81 }, { 5, 64 },
1215 { 15, 57 }, { 1, 67 }, { 0, 68 }, { -10, 67 },
1216 { 1, 68 }, { 0, 77 }, { 2, 64 }, { 0, 68 },
1217 { -5, 78 }, { 7, 55 }, { 5, 59 }, { 2, 65 },
1218 { 14, 54 }, { 15, 44 }, { 5, 60 }, { 2, 70 },
1219 { 17, -13 }, { 16, -9 }, { 17, -12 }, { 27, -21 },
1220 { 37, -30 }, { 41, -40 }, { 42, -41 }, { 48, -47 },
1221 { 39, -32 }, { 46, -40 }, { 52, -51 }, { 46, -41 },
1222 { 52, -39 }, { 43, -19 }, { 32, 11 }, { 61, -55 },
1223 { 56, -46 }, { 62, -50 }, { 81, -67 }, { 45, -20 },
1224 { 35, -2 }, { 28, 15 }, { 34, 1 }, { 39, 1 },
1225 { 30, 17 }, { 20, 38 }, { 18, 45 }, { 15, 54 },
1226 { 0, 79 }, { 36, -16 }, { 37, -14 }, { 37, -17 },
1227 { 32, 1 }, { 34, 15 }, { 29, 15 }, { 24, 25 },
1228 { 34, 22 }, { 31, 16 }, { 35, 18 }, { 31, 28 },
1229 { 33, 41 }, { 36, 28 }, { 27, 47 }, { 21, 62 },
1230 { 17, -13 }, { 16, -9 }, { 17, -12 }, { 27, -21 },
1231 { 37, -30 }, { 41, -40 }, { 42, -41 }, { 48, -47 },
1232 { 39, -32 }, { 46, -40 }, { 52, -51 }, { 46, -41 },
1233 { 52, -39 }, { 43, -19 }, { 32, 11 }, { 61, -55 },
1234 { 56, -46 }, { 62, -50 }, { 81, -67 }, { 45, -20 },
1235 { 35, -2 }, { 28, 15 }, { 34, 1 }, { 39, 1 },
1236 { 30, 17 }, { 20, 38 }, { 18, 45 }, { 15, 54 },
1237 { 0, 79 }, { 36, -16 }, { 37, -14 }, { 37, -17 },
1238 { 32, 1 }, { 34, 15 }, { 29, 15 }, { 24, 25 },
1239 { 34, 22 }, { 31, 16 }, { 35, 18 }, { 31, 28 },
1240 { 33, 41 }, { 36, 28 }, { 27, 47 }, { 21, 62 },
1241 { -24, 115 }, { -22, 82 }, { -9, 62 }, { 0, 53 },
1242 { 0, 59 }, { -14, 85 }, { -13, 89 }, { -13, 94 },
1243 { -11, 92 }, { -29, 127 }, { -21, 100 }, { -14, 57 },
1244 { -12, 67 }, { -11, 71 }, { -10, 77 }, { -21, 85 },
1245 { -16, 88 }, { -23, 104 }, { -15, 98 }, { -37, 127 },
1246 { -10, 82 }, { -8, 48 }, { -8, 61 }, { -8, 66 },
1247 { -7, 70 }, { -14, 75 }, { -10, 79 }, { -9, 83 },
1248 { -12, 92 }, { -18, 108 }, { -24, 115 }, { -22, 82 },
1249 { -9, 62 }, { 0, 53 }, { 0, 59 }, { -14, 85 },
1250 { -13, 89 }, { -13, 94 }, { -11, 92 }, { -29, 127 },
1251 { -21, 100 }, { -14, 57 }, { -12, 67 }, { -11, 71 },
1252 { -10, 77 }, { -21, 85 }, { -16, 88 }, { -23, 104 },
1253 { -15, 98 }, { -37, 127 }, { -10, 82 }, { -8, 48 },
1254 { -8, 61 }, { -8, 66 }, { -7, 70 }, { -14, 75 },
1255 { -10, 79 }, { -9, 83 }, { -12, 92 }, { -18, 108 },
1256 { -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 },
1257 { -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 },
1258 { -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 }
1259 }
1260 };
1261
1262 20849 void ff_h264_init_cabac_states(const H264Context *h, H264SliceContext *sl)
1263 {
1264 int i;
1265 const int8_t (*tab)[2];
1266 20849 const int slice_qp = av_clip(sl->qscale - 6*(h->ps.sps->bit_depth_luma-8), 0, 51);
1267
1268
2/2
✓ Branch 0 taken 2551 times.
✓ Branch 1 taken 18298 times.
20849 if (sl->slice_type_nos == AV_PICTURE_TYPE_I) tab = cabac_context_init_I;
1269 18298 else tab = cabac_context_init_PB[sl->cabac_init_idc];
1270
1271 /* calculate pre-state */
1272
2/2
✓ Branch 0 taken 21349376 times.
✓ Branch 1 taken 20849 times.
21370225 for( i= 0; i < 1024; i++ ) {
1273 21349376 int pre = 2*(((tab[i][0] * slice_qp) >>4 ) + tab[i][1]) - 127;
1274
1275 21349376 pre^= pre>>31;
1276
2/2
✓ Branch 0 taken 368063 times.
✓ Branch 1 taken 20981313 times.
21349376 if(pre > 124)
1277 368063 pre= 124 + (pre&1);
1278
1279 21349376 sl->cabac_state[i] = pre;
1280 }
1281 20849 }
1282
1283 4298022 static av_always_inline uint16_t pack8to16(unsigned a, unsigned b)
1284 {
1285 #if HAVE_BIGENDIAN
1286 return (b & 0xFF) + (a << 8);
1287 #else
1288 4298022 return (a & 0xFF) + (b << 8);
1289 #endif
1290 }
1291
1292 808463 static int decode_cabac_field_decoding_flag(const H264Context *h, H264SliceContext *sl)
1293 {
1294 808463 const int mbb_xy = sl->mb_xy - 2*h->mb_stride;
1295
1296 808463 unsigned long ctx = 0;
1297
1298 808463 ctx += sl->mb_field_decoding_flag & !!sl->mb_x; //for FMO:(s->current_picture.mb_type[mba_xy] >> 7) & (h->slice_table[mba_xy] == h->slice_num);
1299 808463 ctx += (h->cur_pic.mb_type[mbb_xy] >> 7) & (h->slice_table[mbb_xy] == sl->slice_num);
1300
1301 808463 return get_cabac_noinline( &sl->cabac, &(sl->cabac_state+70)[ctx] );
1302 }
1303
1304 2647234 static int decode_cabac_intra_mb_type(H264SliceContext *sl,
1305 int ctx_base, int intra_slice)
1306 {
1307 2647234 uint8_t *state= &sl->cabac_state[ctx_base];
1308 int mb_type;
1309
1310
2/2
✓ Branch 0 taken 1624246 times.
✓ Branch 1 taken 1022988 times.
2647234 if(intra_slice){
1311 1624246 int ctx=0;
1312
2/2
✓ Branch 0 taken 397512 times.
✓ Branch 1 taken 1226734 times.
1624246 if (sl->left_type[LTOP] & (MB_TYPE_INTRA16x16|MB_TYPE_INTRA_PCM))
1313 397512 ctx++;
1314
2/2
✓ Branch 0 taken 385232 times.
✓ Branch 1 taken 1239014 times.
1624246 if (sl->top_type & (MB_TYPE_INTRA16x16|MB_TYPE_INTRA_PCM))
1315 385232 ctx++;
1316
2/2
✓ Branch 1 taken 1218499 times.
✓ Branch 2 taken 405747 times.
1624246 if( get_cabac_noinline( &sl->cabac, &state[ctx] ) == 0 )
1317 1218499 return 0; /* I4x4 */
1318 405747 state += 2;
1319 }else{
1320
2/2
✓ Branch 1 taken 668616 times.
✓ Branch 2 taken 354372 times.
1022988 if( get_cabac_noinline( &sl->cabac, state ) == 0 )
1321 668616 return 0; /* I4x4 */
1322 }
1323
1324
2/2
✓ Branch 1 taken 5659 times.
✓ Branch 2 taken 754460 times.
760119 if( get_cabac_terminate( &sl->cabac ) )
1325 5659 return 25; /* PCM */
1326
1327 754460 mb_type = 1; /* I16x16 */
1328 754460 mb_type += 12 * get_cabac_noinline( &sl->cabac, &state[1] ); /* cbp_luma != 0 */
1329
2/2
✓ Branch 1 taken 282516 times.
✓ Branch 2 taken 471944 times.
754460 if( get_cabac_noinline( &sl->cabac, &state[2] ) ) /* cbp_chroma */
1330 282516 mb_type += 4 + 4 * get_cabac_noinline( &sl->cabac, &state[2+intra_slice] );
1331 754460 mb_type += 2 * get_cabac_noinline( &sl->cabac, &state[3+intra_slice] );
1332 754460 mb_type += 1 * get_cabac_noinline( &sl->cabac, &state[3+2*intra_slice] );
1333 754460 return mb_type;
1334 }
1335
1336 8745937 static int decode_cabac_mb_skip(const H264Context *h, H264SliceContext *sl,
1337 int mb_x, int mb_y)
1338 {
1339 int mba_xy, mbb_xy;
1340 8745937 int ctx = 0;
1341
1342
2/2
✓ Branch 0 taken 1373652 times.
✓ Branch 1 taken 7372285 times.
8745937 if (FRAME_MBAFF(h)) { //FIXME merge with the stuff in fill_caches?
1343 1373652 int mb_xy = mb_x + (mb_y&~1)*h->mb_stride;
1344 1373652 mba_xy = mb_xy - 1;
1345
2/2
✓ Branch 0 taken 686826 times.
✓ Branch 1 taken 686826 times.
1373652 if( (mb_y&1)
1346
2/2
✓ Branch 0 taken 668718 times.
✓ Branch 1 taken 18108 times.
686826 && h->slice_table[mba_xy] == sl->slice_num
1347
2/2
✓ Branch 0 taken 541278 times.
✓ Branch 1 taken 127440 times.
668718 && MB_FIELD(sl) == !!IS_INTERLACED( h->cur_pic.mb_type[mba_xy] ) )
1348 541278 mba_xy += h->mb_stride;
1349
2/2
✓ Branch 0 taken 374397 times.
✓ Branch 1 taken 999255 times.
1373652 if (MB_FIELD(sl)) {
1350 374397 mbb_xy = mb_xy - h->mb_stride;
1351
2/2
✓ Branch 0 taken 186903 times.
✓ Branch 1 taken 187494 times.
374397 if( !(mb_y&1)
1352
2/2
✓ Branch 0 taken 166508 times.
✓ Branch 1 taken 20395 times.
186903 && h->slice_table[mbb_xy] == sl->slice_num
1353
2/2
✓ Branch 0 taken 83252 times.
✓ Branch 1 taken 83256 times.
166508 && IS_INTERLACED( h->cur_pic.mb_type[mbb_xy] ) )
1354 83252 mbb_xy -= h->mb_stride;
1355 }else
1356 999255 mbb_xy = mb_x + (mb_y-1)*h->mb_stride;
1357 }else{
1358 7372285 int mb_xy = sl->mb_xy;
1359 7372285 mba_xy = mb_xy - 1;
1360 7372285 mbb_xy = mb_xy - (h->mb_stride << FIELD_PICTURE(h));
1361 }
1362
1363
4/4
✓ Branch 0 taken 8517620 times.
✓ Branch 1 taken 228317 times.
✓ Branch 2 taken 5456264 times.
✓ Branch 3 taken 3061356 times.
8745937 if( h->slice_table[mba_xy] == sl->slice_num && !IS_SKIP(h->cur_pic.mb_type[mba_xy] ))
1364 5456264 ctx++;
1365
4/4
✓ Branch 0 taken 8038011 times.
✓ Branch 1 taken 707926 times.
✓ Branch 2 taken 5213135 times.
✓ Branch 3 taken 2824876 times.
8745937 if( h->slice_table[mbb_xy] == sl->slice_num && !IS_SKIP(h->cur_pic.mb_type[mbb_xy] ))
1366 5213135 ctx++;
1367
1368
2/2
✓ Branch 0 taken 5057322 times.
✓ Branch 1 taken 3688615 times.
8745937 if (sl->slice_type_nos == AV_PICTURE_TYPE_B)
1369 5057322 ctx += 13;
1370 8745937 return get_cabac_noinline( &sl->cabac, &sl->cabac_state[11+ctx] );
1371 }
1372
1373 18243580 static int decode_cabac_mb_intra4x4_pred_mode(H264SliceContext *sl, int pred_mode)
1374 {
1375 18243580 int mode = 0;
1376
1377
2/2
✓ Branch 1 taken 10009019 times.
✓ Branch 2 taken 8234561 times.
18243580 if( get_cabac( &sl->cabac, &sl->cabac_state[68] ) )
1378 10009019 return pred_mode;
1379
1380 8234561 mode += 1 * get_cabac( &sl->cabac, &sl->cabac_state[69] );
1381 8234561 mode += 2 * get_cabac( &sl->cabac, &sl->cabac_state[69] );
1382 8234561 mode += 4 * get_cabac( &sl->cabac, &sl->cabac_state[69] );
1383
1384 8234561 return mode + ( mode >= pred_mode );
1385 }
1386
1387 2547938 static int decode_cabac_mb_chroma_pre_mode(const H264Context *h, H264SliceContext *sl)
1388 {
1389 2547938 const int mba_xy = sl->left_mb_xy[0];
1390 2547938 const int mbb_xy = sl->top_mb_xy;
1391
1392 2547938 int ctx = 0;
1393
1394 /* No need to test for IS_INTRA4x4 and IS_INTRA16x16, as we set chroma_pred_mode_table to 0 */
1395
4/4
✓ Branch 0 taken 2497947 times.
✓ Branch 1 taken 49991 times.
✓ Branch 2 taken 929412 times.
✓ Branch 3 taken 1568535 times.
2547938 if (sl->left_type[LTOP] && h->chroma_pred_mode_table[mba_xy] != 0)
1396 929412 ctx++;
1397
1398
4/4
✓ Branch 0 taken 2374812 times.
✓ Branch 1 taken 173126 times.
✓ Branch 2 taken 838702 times.
✓ Branch 3 taken 1536110 times.
2547938 if (sl->top_type && h->chroma_pred_mode_table[mbb_xy] != 0)
1399 838702 ctx++;
1400
1401
2/2
✓ Branch 1 taken 1430641 times.
✓ Branch 2 taken 1117297 times.
2547938 if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[64+ctx] ) == 0 )
1402 1430641 return 0;
1403
1404
2/2
✓ Branch 1 taken 627055 times.
✓ Branch 2 taken 490242 times.
1117297 if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[64+3] ) == 0 )
1405 627055 return 1;
1406
2/2
✓ Branch 1 taken 281857 times.
✓ Branch 2 taken 208385 times.
490242 if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[64+3] ) == 0 )
1407 281857 return 2;
1408 else
1409 208385 return 3;
1410 }
1411
1412 6482044 static int decode_cabac_mb_cbp_luma(H264SliceContext *sl)
1413 {
1414 6482044 int cbp_b, cbp_a, ctx, cbp = 0;
1415
1416 6482044 cbp_a = sl->left_cbp;
1417 6482044 cbp_b = sl->top_cbp;
1418
1419
2/2
✓ Branch 0 taken 2707138 times.
✓ Branch 1 taken 3774906 times.
6482044 ctx = !(cbp_a & 0x02) + 2 * !(cbp_b & 0x04);
1420 6482044 cbp += get_cabac_noinline(&sl->cabac, &sl->cabac_state[73 + ctx]);
1421
2/2
✓ Branch 0 taken 2690052 times.
✓ Branch 1 taken 3791992 times.
6482044 ctx = !(cbp & 0x01) + 2 * !(cbp_b & 0x08);
1422 6482044 cbp += get_cabac_noinline(&sl->cabac, &sl->cabac_state[73 + ctx]) << 1;
1423
2/2
✓ Branch 0 taken 2788333 times.
✓ Branch 1 taken 3693711 times.
6482044 ctx = !(cbp_a & 0x08) + 2 * !(cbp & 0x01);
1424 6482044 cbp += get_cabac_noinline(&sl->cabac, &sl->cabac_state[73 + ctx]) << 2;
1425
2/2
✓ Branch 0 taken 2768338 times.
✓ Branch 1 taken 3713706 times.
6482044 ctx = !(cbp & 0x04) + 2 * !(cbp & 0x02);
1426 6482044 cbp += get_cabac_noinline(&sl->cabac, &sl->cabac_state[73 + ctx]) << 3;
1427 6482044 return cbp;
1428 }
1429 6293274 static int decode_cabac_mb_cbp_chroma(H264SliceContext *sl)
1430 {
1431 int ctx;
1432 int cbp_a, cbp_b;
1433
1434 6293274 cbp_a = (sl->left_cbp>>4)&0x03;
1435 6293274 cbp_b = (sl-> top_cbp>>4)&0x03;
1436
1437 6293274 ctx = 0;
1438
2/2
✓ Branch 0 taken 2721826 times.
✓ Branch 1 taken 3571448 times.
6293274 if( cbp_a > 0 ) ctx++;
1439
2/2
✓ Branch 0 taken 2572074 times.
✓ Branch 1 taken 3721200 times.
6293274 if( cbp_b > 0 ) ctx += 2;
1440
2/2
✓ Branch 1 taken 3387700 times.
✓ Branch 2 taken 2905574 times.
6293274 if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[77 + ctx] ) == 0 )
1441 3387700 return 0;
1442
1443 2905574 ctx = 4;
1444
2/2
✓ Branch 0 taken 1351960 times.
✓ Branch 1 taken 1553614 times.
2905574 if( cbp_a == 2 ) ctx++;
1445
2/2
✓ Branch 0 taken 1239975 times.
✓ Branch 1 taken 1665599 times.
2905574 if( cbp_b == 2 ) ctx += 2;
1446 2905574 return 1 + get_cabac_noinline( &sl->cabac, &sl->cabac_state[77 + ctx] );
1447 }
1448
1449 2037692 static int decode_cabac_p_mb_sub_type(H264SliceContext *sl)
1450 {
1451
2/2
✓ Branch 1 taken 826725 times.
✓ Branch 2 taken 1210967 times.
2037692 if( get_cabac( &sl->cabac, &sl->cabac_state[21] ) )
1452 826725 return 0; /* 8x8 */
1453
2/2
✓ Branch 1 taken 194357 times.
✓ Branch 2 taken 1016610 times.
1210967 if( !get_cabac( &sl->cabac, &sl->cabac_state[22] ) )
1454 194357 return 1; /* 8x4 */
1455
2/2
✓ Branch 1 taken 150043 times.
✓ Branch 2 taken 866567 times.
1016610 if( get_cabac( &sl->cabac, &sl->cabac_state[23] ) )
1456 150043 return 2; /* 4x8 */
1457 866567 return 3; /* 4x4 */
1458 }
1459 1591092 static int decode_cabac_b_mb_sub_type(H264SliceContext *sl)
1460 {
1461 int type;
1462
2/2
✓ Branch 1 taken 161977 times.
✓ Branch 2 taken 1429115 times.
1591092 if( !get_cabac( &sl->cabac, &sl->cabac_state[36] ) )
1463 161977 return 0; /* B_Direct_8x8 */
1464
2/2
✓ Branch 1 taken 299071 times.
✓ Branch 2 taken 1130044 times.
1429115 if( !get_cabac( &sl->cabac, &sl->cabac_state[37] ) )
1465 299071 return 1 + get_cabac( &sl->cabac, &sl->cabac_state[39] ); /* B_L0_8x8, B_L1_8x8 */
1466 1130044 type = 3;
1467
2/2
✓ Branch 1 taken 871434 times.
✓ Branch 2 taken 258610 times.
1130044 if( get_cabac( &sl->cabac, &sl->cabac_state[38] ) ) {
1468
2/2
✓ Branch 1 taken 10447 times.
✓ Branch 2 taken 860987 times.
871434 if( get_cabac( &sl->cabac, &sl->cabac_state[39] ) )
1469 10447 return 11 + get_cabac( &sl->cabac, &sl->cabac_state[39] ); /* B_L1_4x4, B_Bi_4x4 */
1470 860987 type += 4;
1471 }
1472 1119597 type += 2*get_cabac( &sl->cabac, &sl->cabac_state[39] );
1473 1119597 type += get_cabac( &sl->cabac, &sl->cabac_state[39] );
1474 1119597 return type;
1475 }
1476
1477 5555084 static int decode_cabac_mb_ref(H264SliceContext *sl, int list, int n)
1478 {
1479 5555084 int refa = sl->ref_cache[list][scan8[n] - 1];
1480 5555084 int refb = sl->ref_cache[list][scan8[n] - 8];
1481 5555084 int ref = 0;
1482 5555084 int ctx = 0;
1483
1484
2/2
✓ Branch 0 taken 2473303 times.
✓ Branch 1 taken 3081781 times.
5555084 if (sl->slice_type_nos == AV_PICTURE_TYPE_B) {
1485
4/4
✓ Branch 0 taken 731849 times.
✓ Branch 1 taken 1741454 times.
✓ Branch 2 taken 701060 times.
✓ Branch 3 taken 30789 times.
2473303 if( refa > 0 && !(sl->direct_cache[scan8[n] - 1]&(MB_TYPE_DIRECT2>>1)) )
1486 701060 ctx++;
1487
4/4
✓ Branch 0 taken 683212 times.
✓ Branch 1 taken 1790091 times.
✓ Branch 2 taken 652062 times.
✓ Branch 3 taken 31150 times.
2473303 if( refb > 0 && !(sl->direct_cache[scan8[n] - 8]&(MB_TYPE_DIRECT2>>1)) )
1488 652062 ctx += 2;
1489 } else {
1490
2/2
✓ Branch 0 taken 1043603 times.
✓ Branch 1 taken 2038178 times.
3081781 if( refa > 0 )
1491 1043603 ctx++;
1492
2/2
✓ Branch 0 taken 1012644 times.
✓ Branch 1 taken 2069137 times.
3081781 if( refb > 0 )
1493 1012644 ctx += 2;
1494 }
1495
1496
2/2
✓ Branch 1 taken 3079788 times.
✓ Branch 2 taken 5555084 times.
8634872 while( get_cabac( &sl->cabac, &sl->cabac_state[54+ctx] ) ) {
1497 3079788 ref++;
1498 3079788 ctx = (ctx>>2)+4;
1499
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3079788 times.
3079788 if(ref >= 32 /*h->ref_list[list]*/){
1500 return -1;
1501 }
1502 }
1503 5555084 return ref;
1504 }
1505
1506 27111892 static int decode_cabac_mb_mvd(H264SliceContext *sl, int ctxbase, int amvd, int *mvda)
1507 {
1508 int mvd;
1509
1510
2/2
✓ Branch 1 taken 16058187 times.
✓ Branch 2 taken 11053705 times.
27111892 if(!get_cabac(&sl->cabac, &sl->cabac_state[ctxbase+((amvd-3)>>(INT_BIT-1))+((amvd-33)>>(INT_BIT-1))+2])){
1511 // if(!get_cabac(&sl->cabac, &sl->cabac_state[ctxbase+(amvd>2)+(amvd>32)])){
1512 16058187 *mvda= 0;
1513 16058187 return 0;
1514 }
1515
1516 11053705 mvd= 1;
1517 11053705 ctxbase+= 3;
1518
4/4
✓ Branch 0 taken 49792810 times.
✓ Branch 1 taken 3669538 times.
✓ Branch 3 taken 42408643 times.
✓ Branch 4 taken 7384167 times.
53462348 while( mvd < 9 && get_cabac( &sl->cabac, &sl->cabac_state[ctxbase] ) ) {
1519
2/2
✓ Branch 0 taken 20664898 times.
✓ Branch 1 taken 21743745 times.
42408643 if( mvd < 4 )
1520 20664898 ctxbase++;
1521 42408643 mvd++;
1522 }
1523
1524
2/2
✓ Branch 0 taken 3669538 times.
✓ Branch 1 taken 7384167 times.
11053705 if( mvd >= 9 ) {
1525 3669538 int k = 3;
1526
2/2
✓ Branch 1 taken 4069608 times.
✓ Branch 2 taken 3669538 times.
7739146 while( get_cabac_bypass( &sl->cabac ) ) {
1527 4069608 mvd += 1 << k;
1528 4069608 k++;
1529
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4069608 times.
4069608 if(k>24){
1530 av_log(sl->h264->avctx, AV_LOG_ERROR, "overflow in decode_cabac_mb_mvd\n");
1531 return INT_MIN;
1532 }
1533 }
1534
2/2
✓ Branch 0 taken 15078222 times.
✓ Branch 1 taken 3669538 times.
18747760 while( k-- ) {
1535 15078222 mvd += get_cabac_bypass( &sl->cabac )<<k;
1536 }
1537 3669538 *mvda=mvd < 70 ? mvd : 70;
1538 }else
1539 7384167 *mvda=mvd;
1540 11053705 return get_cabac_bypass_sign( &sl->cabac, -mvd );
1541 }
1542
1543 #define DECODE_CABAC_MB_MVD(sl, list, n )\
1544 {\
1545 int amvd0 = sl->mvd_cache[list][scan8[n] - 1][0] +\
1546 sl->mvd_cache[list][scan8[n] - 8][0];\
1547 int amvd1 = sl->mvd_cache[list][scan8[n] - 1][1] +\
1548 sl->mvd_cache[list][scan8[n] - 8][1];\
1549 \
1550 int mxd = decode_cabac_mb_mvd(sl, 40, amvd0, &mpx);\
1551 int myd = decode_cabac_mb_mvd(sl, 47, amvd1, &mpy);\
1552 if (mxd == INT_MIN || myd == INT_MIN) \
1553 return AVERROR_INVALIDDATA; \
1554 mx += mxd;\
1555 my += myd;\
1556 }
1557
1558 68536337 static av_always_inline int get_cabac_cbf_ctx(H264SliceContext *sl,
1559 int cat, int idx, int max_coeff,
1560 int is_dc)
1561 {
1562 int nza, nzb;
1563 68536337 int ctx = 0;
1564 static const uint16_t base_ctx[14] = {85,89,93,97,101,1012,460,464,468,1016,472,476,480,1020};
1565
1566
2/2
✓ Branch 0 taken 7137395 times.
✓ Branch 1 taken 61398942 times.
68536337 if( is_dc ) {
1567
2/2
✓ Branch 0 taken 6376178 times.
✓ Branch 1 taken 761217 times.
7137395 if( cat == 3 ) {
1568 6376178 idx -= CHROMA_DC_BLOCK_INDEX;
1569 6376178 nza = (sl->left_cbp>>(6+idx))&0x01;
1570 6376178 nzb = (sl-> top_cbp>>(6+idx))&0x01;
1571 } else {
1572 761217 idx -= LUMA_DC_BLOCK_INDEX;
1573 761217 nza = sl->left_cbp&(0x100<<idx);
1574 761217 nzb = sl-> top_cbp&(0x100<<idx);
1575 }
1576 } else {
1577 61398942 nza = sl->non_zero_count_cache[scan8[idx] - 1];
1578 61398942 nzb = sl->non_zero_count_cache[scan8[idx] - 8];
1579 }
1580
1581
2/2
✓ Branch 0 taken 37631252 times.
✓ Branch 1 taken 30905085 times.
68536337 if( nza > 0 )
1582 37631252 ctx++;
1583
1584
2/2
✓ Branch 0 taken 37403832 times.
✓ Branch 1 taken 31132505 times.
68536337 if( nzb > 0 )
1585 37403832 ctx += 2;
1586
1587 68536337 return base_ctx[cat] + ctx;
1588 }
1589
1590 static av_always_inline void
1591 46383741 decode_cabac_residual_internal(const H264Context *h, H264SliceContext *sl,
1592 int16_t *block,
1593 int cat, int n, const uint8_t *scantable,
1594 const uint32_t *qmul, int max_coeff,
1595 int is_dc, int chroma422)
1596 {
1597 static const int significant_coeff_flag_offset[2][14] = {
1598 { 105+0, 105+15, 105+29, 105+44, 105+47, 402, 484+0, 484+15, 484+29, 660, 528+0, 528+15, 528+29, 718 },
1599 { 277+0, 277+15, 277+29, 277+44, 277+47, 436, 776+0, 776+15, 776+29, 675, 820+0, 820+15, 820+29, 733 }
1600 };
1601 static const int last_coeff_flag_offset[2][14] = {
1602 { 166+0, 166+15, 166+29, 166+44, 166+47, 417, 572+0, 572+15, 572+29, 690, 616+0, 616+15, 616+29, 748 },
1603 { 338+0, 338+15, 338+29, 338+44, 338+47, 451, 864+0, 864+15, 864+29, 699, 908+0, 908+15, 908+29, 757 }
1604 };
1605 static const int coeff_abs_level_m1_offset[14] = {
1606 227+0, 227+10, 227+20, 227+30, 227+39, 426, 952+0, 952+10, 952+20, 708, 982+0, 982+10, 982+20, 766
1607 };
1608 static const uint8_t significant_coeff_flag_offset_8x8[2][63] = {
1609 { 0, 1, 2, 3, 4, 5, 5, 4, 4, 3, 3, 4, 4, 4, 5, 5,
1610 4, 4, 4, 4, 3, 3, 6, 7, 7, 7, 8, 9,10, 9, 8, 7,
1611 7, 6,11,12,13,11, 6, 7, 8, 9,14,10, 9, 8, 6,11,
1612 12,13,11, 6, 9,14,10, 9,11,12,13,11,14,10,12 },
1613 { 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 7, 7, 7, 8, 4, 5,
1614 6, 9,10,10, 8,11,12,11, 9, 9,10,10, 8,11,12,11,
1615 9, 9,10,10, 8,11,12,11, 9, 9,10,10, 8,13,13, 9,
1616 9,10,10, 8,13,13, 9, 9,10,10,14,14,14,14,14 }
1617 };
1618 static const uint8_t sig_coeff_offset_dc[7] = { 0, 0, 1, 1, 2, 2, 2 };
1619 /* node ctx: 0..3: abslevel1 (with abslevelgt1 == 0).
1620 * 4..7: abslevelgt1 + 3 (and abslevel1 doesn't matter).
1621 * map node ctx => cabac ctx for level=1 */
1622 static const uint8_t coeff_abs_level1_ctx[8] = { 1, 2, 3, 4, 0, 0, 0, 0 };
1623 /* map node ctx => cabac ctx for level>1 */
1624 static const uint8_t coeff_abs_levelgt1_ctx[2][8] = {
1625 { 5, 5, 5, 5, 6, 7, 8, 9 },
1626 { 5, 5, 5, 5, 6, 7, 8, 8 }, // 422/dc case
1627 };
1628 static const uint8_t coeff_abs_level_transition[2][8] = {
1629 /* update node ctx after decoding a level=1 */
1630 { 1, 2, 3, 3, 4, 5, 6, 7 },
1631 /* update node ctx after decoding a level>1 */
1632 { 4, 4, 4, 4, 5, 6, 7, 7 }
1633 };
1634
1635 int index[64];
1636
1637 int last;
1638 46383741 int coeff_count = 0;
1639 46383741 int node_ctx = 0;
1640
1641 uint8_t *significant_coeff_ctx_base;
1642 uint8_t *last_coeff_ctx_base;
1643 uint8_t *abs_level_m1_ctx_base;
1644
1645 #if !ARCH_X86
1646 #define CABAC_ON_STACK
1647 #endif
1648 #ifdef CABAC_ON_STACK
1649 #define CC &cc
1650 CABACContext cc;
1651 cc.range = sl->cabac.range;
1652 cc.low = sl->cabac.low;
1653 cc.bytestream= sl->cabac.bytestream;
1654 #if !UNCHECKED_BITSTREAM_READER || ARCH_AARCH64
1655 cc.bytestream_end = sl->cabac.bytestream_end;
1656 #endif
1657 #else
1658 #define CC &sl->cabac
1659 #endif
1660
1661 46383741 significant_coeff_ctx_base = sl->cabac_state
1662 46383741 + significant_coeff_flag_offset[MB_FIELD(sl)][cat];
1663 46383741 last_coeff_ctx_base = sl->cabac_state
1664 46383741 + last_coeff_flag_offset[MB_FIELD(sl)][cat];
1665 46383741 abs_level_m1_ctx_base = sl->cabac_state
1666 46383741 + coeff_abs_level_m1_offset[cat];
1667
1668
4/4
✓ Branch 0 taken 41467265 times.
✓ Branch 1 taken 4916476 times.
✓ Branch 2 taken 5474750 times.
✓ Branch 3 taken 35992515 times.
51858491 if( !is_dc && max_coeff == 64 ) {
1669 #define DECODE_SIGNIFICANCE( coefs, sig_off, last_off ) \
1670 for(last= 0; last < coefs; last++) { \
1671 uint8_t *sig_ctx = significant_coeff_ctx_base + sig_off; \
1672 if( get_cabac( CC, sig_ctx )) { \
1673 uint8_t *last_ctx = last_coeff_ctx_base + last_off; \
1674 index[coeff_count++] = last; \
1675 if( get_cabac( CC, last_ctx ) ) { \
1676 last= max_coeff; \
1677 break; \
1678 } \
1679 } \
1680 }\
1681 if( last == max_coeff -1 ) {\
1682 index[coeff_count++] = last;\
1683 }
1684 5474750 const uint8_t *sig_off = significant_coeff_flag_offset_8x8[MB_FIELD(sl)];
1685 #ifdef decode_significance
1686 5474750 coeff_count = decode_significance_8x8(CC, significant_coeff_ctx_base, index,
1687 last_coeff_ctx_base, sig_off);
1688 } else {
1689
4/4
✓ Branch 0 taken 4916476 times.
✓ Branch 1 taken 35992515 times.
✓ Branch 2 taken 654202 times.
✓ Branch 3 taken 4262274 times.
40908991 if (is_dc && chroma422) { // dc 422
1690
8/8
✓ Branch 1 taken 2143961 times.
✓ Branch 2 taken 1217582 times.
✓ Branch 4 taken 482832 times.
✓ Branch 5 taken 1661129 times.
✓ Branch 6 taken 3361543 times.
✓ Branch 7 taken 171370 times.
✓ Branch 8 taken 171370 times.
✓ Branch 9 taken 482832 times.
3532913 DECODE_SIGNIFICANCE(7, sig_coeff_offset_dc[last], sig_coeff_offset_dc[last]);
1691 } else {
1692 40254789 coeff_count = decode_significance(CC, max_coeff, significant_coeff_ctx_base, index,
1693 last_coeff_ctx_base-significant_coeff_ctx_base);
1694 }
1695 #else
1696 DECODE_SIGNIFICANCE( 63, sig_off[last], ff_h264_last_coeff_flag_offset_8x8[last] );
1697 } else {
1698 if (is_dc && chroma422) { // dc 422
1699 DECODE_SIGNIFICANCE(7, sig_coeff_offset_dc[last], sig_coeff_offset_dc[last]);
1700 } else {
1701 DECODE_SIGNIFICANCE(max_coeff - 1, last, last);
1702 }
1703 #endif
1704 }
1705 av_assert2(coeff_count > 0);
1706
1707
2/2
✓ Branch 0 taken 4916476 times.
✓ Branch 1 taken 41467265 times.
46383741 if( is_dc ) {
1708
2/2
✓ Branch 0 taken 4442634 times.
✓ Branch 1 taken 473842 times.
4916476 if( cat == 3 )
1709 4442634 h->cbp_table[sl->mb_xy] |= 0x40 << (n - CHROMA_DC_BLOCK_INDEX);
1710 else
1711 473842 h->cbp_table[sl->mb_xy] |= 0x100 << (n - LUMA_DC_BLOCK_INDEX);
1712 4916476 sl->non_zero_count_cache[scan8[n]] = coeff_count;
1713 } else {
1714
2/2
✓ Branch 0 taken 5474750 times.
✓ Branch 1 taken 35992515 times.
41467265 if( max_coeff == 64 )
1715 5474750 fill_rectangle(&sl->non_zero_count_cache[scan8[n]], 2, 2, 8, coeff_count, 1);
1716 else {
1717 av_assert2( cat == 1 || cat == 2 || cat == 4 || cat == 7 || cat == 8 || cat == 11 || cat == 12 );
1718 35992515 sl->non_zero_count_cache[scan8[n]] = coeff_count;
1719 }
1720 }
1721
1722 #define STORE_BLOCK(type) \
1723 do { \
1724 uint8_t *ctx = coeff_abs_level1_ctx[node_ctx] + abs_level_m1_ctx_base; \
1725 \
1726 int j= scantable[index[--coeff_count]]; \
1727 \
1728 if( get_cabac( CC, ctx ) == 0 ) { \
1729 node_ctx = coeff_abs_level_transition[0][node_ctx]; \
1730 if( is_dc ) { \
1731 ((type*)block)[j] = get_cabac_bypass_sign( CC, -1); \
1732 }else{ \
1733 ((type*)block)[j] = (get_cabac_bypass_sign( CC, -qmul[j]) + 32) >> 6; \
1734 } \
1735 } else { \
1736 unsigned coeff_abs = 2; \
1737 ctx = coeff_abs_levelgt1_ctx[is_dc && chroma422][node_ctx] + abs_level_m1_ctx_base; \
1738 node_ctx = coeff_abs_level_transition[1][node_ctx]; \
1739 \
1740 while( coeff_abs < 15 && get_cabac( CC, ctx ) ) { \
1741 coeff_abs++; \
1742 } \
1743 \
1744 if( coeff_abs >= 15 ) { \
1745 int j = 0; \
1746 while (get_cabac_bypass(CC) && j < 16+7) { \
1747 j++; \
1748 } \
1749 \
1750 coeff_abs=1; \
1751 while( j-- ) { \
1752 coeff_abs += coeff_abs + get_cabac_bypass( CC ); \
1753 } \
1754 coeff_abs+= 14U; \
1755 } \
1756 \
1757 if( is_dc ) { \
1758 ((type*)block)[j] = get_cabac_bypass_sign( CC, -coeff_abs ); \
1759 }else{ \
1760 ((type*)block)[j] = ((int)(get_cabac_bypass_sign( CC, -coeff_abs ) * qmul[j] + 32)) >> 6; \
1761 } \
1762 } \
1763 } while ( coeff_count );
1764
1765
2/2
✓ Branch 0 taken 11054702 times.
✓ Branch 1 taken 35329039 times.
46383741 if (h->pixel_shift) {
1766
23/24
✓ Branch 1 taken 35375342 times.
✓ Branch 2 taken 15926991 times.
✓ Branch 3 taken 2649647 times.
✓ Branch 4 taken 32725695 times.
✓ Branch 7 taken 1287643 times.
✓ Branch 8 taken 14639348 times.
✓ Branch 9 taken 806045 times.
✓ Branch 10 taken 481598 times.
✓ Branch 11 taken 37295432 times.
✓ Branch 12 taken 156325 times.
✓ Branch 14 taken 21524766 times.
✓ Branch 15 taken 15770666 times.
✓ Branch 16 taken 156325 times.
✓ Branch 17 taken 15770666 times.
✓ Branch 19 taken 271408 times.
✓ Branch 20 taken 156325 times.
✓ Branch 21 taken 271408 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 271408 times.
✓ Branch 25 taken 156325 times.
✓ Branch 26 taken 1287643 times.
✓ Branch 27 taken 14639348 times.
✓ Branch 30 taken 40247631 times.
✓ Branch 31 taken 11054702 times.
73369915 STORE_BLOCK(int32_t)
1767 } else {
1768
23/24
✓ Branch 1 taken 77782339 times.
✓ Branch 2 taken 36535768 times.
✓ Branch 3 taken 4699089 times.
✓ Branch 4 taken 73083250 times.
✓ Branch 7 taken 3274375 times.
✓ Branch 8 taken 33261393 times.
✓ Branch 9 taken 26404 times.
✓ Branch 10 taken 3247971 times.
✓ Branch 11 taken 122746925 times.
✓ Branch 12 taken 2514826 times.
✓ Branch 14 taken 88725983 times.
✓ Branch 15 taken 34020942 times.
✓ Branch 16 taken 2514826 times.
✓ Branch 17 taken 34020942 times.
✓ Branch 19 taken 7323533 times.
✓ Branch 20 taken 2514826 times.
✓ Branch 21 taken 7323533 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 7323533 times.
✓ Branch 25 taken 2514826 times.
✓ Branch 26 taken 3274375 times.
✓ Branch 27 taken 33261393 times.
✓ Branch 30 taken 78989068 times.
✓ Branch 31 taken 35329039 times.
217691156 STORE_BLOCK(int16_t)
1769 }
1770 #ifdef CABAC_ON_STACK
1771 sl->cabac.range = cc.range ;
1772 sl->cabac.low = cc.low ;
1773 sl->cabac.bytestream= cc.bytestream;
1774 #endif
1775
1776 46383741 }
1777
1778 4262274 static av_noinline void decode_cabac_residual_dc_internal(const H264Context *h,
1779 H264SliceContext *sl,
1780 int16_t *block,
1781 int cat, int n,
1782 const uint8_t *scantable,
1783 int max_coeff)
1784 {
1785 4262274 decode_cabac_residual_internal(h, sl, block, cat, n, scantable, NULL, max_coeff, 1, 0);
1786 4262274 }
1787
1788 654202 static av_noinline void decode_cabac_residual_dc_internal_422(const H264Context *h,
1789 H264SliceContext *sl,
1790 int16_t *block,
1791 int cat, int n,
1792 const uint8_t *scantable,
1793 int max_coeff)
1794 {
1795 654202 decode_cabac_residual_internal(h, sl, block, cat, n, scantable, NULL, max_coeff, 1, 1);
1796 654202 }
1797
1798 41467265 static av_noinline void decode_cabac_residual_nondc_internal(const H264Context *h,
1799 H264SliceContext *sl,
1800 int16_t *block,
1801 int cat, int n,
1802 const uint8_t *scantable,
1803 const uint32_t *qmul,
1804 int max_coeff)
1805 {
1806 41467265 decode_cabac_residual_internal(h, sl, block, cat, n, scantable, qmul, max_coeff, 0, 0);
1807 41467265 }
1808
1809 /* cat: 0-> DC 16x16 n = 0
1810 * 1-> AC 16x16 n = luma4x4idx
1811 * 2-> Luma4x4 n = luma4x4idx
1812 * 3-> DC Chroma n = iCbCr
1813 * 4-> AC Chroma n = 16 + 4 * iCbCr + chroma4x4idx
1814 * 5-> Luma8x8 n = 4 * luma8x8idx */
1815
1816 /* Partially inline the CABAC residual decode: inline the coded block flag.
1817 * This has very little impact on binary size and improves performance
1818 * because it allows improved constant propagation into get_cabac_cbf_ctx,
1819 * as well as because most blocks have zero CBFs. */
1820
1821 6366387 static av_always_inline void decode_cabac_residual_dc(const H264Context *h,
1822 H264SliceContext *sl,
1823 int16_t *block,
1824 int cat, int n,
1825 const uint8_t *scantable,
1826 int max_coeff)
1827 {
1828 /* read coded block flag */
1829
2/2
✓ Branch 2 taken 2104113 times.
✓ Branch 3 taken 4262274 times.
6366387 if( get_cabac( &sl->cabac, &sl->cabac_state[get_cabac_cbf_ctx(sl, cat, n, max_coeff, 1)]) == 0 ) {
1830 2104113 sl->non_zero_count_cache[scan8[n]] = 0;
1831 2104113 return;
1832 }
1833 4262274 decode_cabac_residual_dc_internal(h, sl, block, cat, n, scantable, max_coeff);
1834 }
1835
1836 static av_always_inline void
1837 771008 decode_cabac_residual_dc_422(const H264Context *h, H264SliceContext *sl,
1838 int16_t *block,
1839 int cat, int n, const uint8_t *scantable,
1840 int max_coeff)
1841 {
1842 /* read coded block flag */
1843
2/2
✓ Branch 2 taken 116806 times.
✓ Branch 3 taken 654202 times.
771008 if (get_cabac(&sl->cabac, &sl->cabac_state[get_cabac_cbf_ctx(sl, cat, n, max_coeff, 1)]) == 0) {
1844 116806 sl->non_zero_count_cache[scan8[n]] = 0;
1845 116806 return;
1846 }
1847 654202 decode_cabac_residual_dc_internal_422(h, sl, block, cat, n, scantable, max_coeff);
1848 }
1849
1850 66852001 static av_always_inline void decode_cabac_residual_nondc(const H264Context *h,
1851 H264SliceContext *sl,
1852 int16_t *block,
1853 int cat, int n,
1854 const uint8_t *scantable,
1855 const uint32_t *qmul,
1856 int max_coeff)
1857 {
1858 /* read coded block flag */
1859
6/6
✓ Branch 0 taken 5466309 times.
✓ Branch 1 taken 61385692 times.
✓ Branch 2 taken 13250 times.
✓ Branch 3 taken 5453059 times.
✓ Branch 6 taken 25384736 times.
✓ Branch 7 taken 36014206 times.
66852001 if( (cat != 5 || CHROMA444(h)) && get_cabac( &sl->cabac, &sl->cabac_state[get_cabac_cbf_ctx(sl, cat, n, max_coeff, 0)]) == 0) {
1860
2/2
✓ Branch 0 taken 18059 times.
✓ Branch 1 taken 25366677 times.
25384736 if( max_coeff == 64 ) {
1861 18059 fill_rectangle(&sl->non_zero_count_cache[scan8[n]], 2, 2, 8, 0, 1);
1862 } else {
1863 25366677 sl->non_zero_count_cache[scan8[n]] = 0;
1864 }
1865 25384736 return;
1866 }
1867 41467265 decode_cabac_residual_nondc_internal(h, sl, block, cat, n, scantable, qmul, max_coeff);
1868 }
1869
1870 6221394 static av_always_inline void decode_cabac_luma_residual(const H264Context *h, H264SliceContext *sl,
1871 const uint8_t *scan, const uint8_t *scan8x8,
1872 int pixel_shift, int mb_type, int cbp, int p)
1873 {
1874 static const uint8_t ctx_cat[4][3] = {{0,6,10},{1,7,11},{2,8,12},{5,9,13}};
1875 const uint32_t *qmul;
1876 int i8x8, i4x4;
1877
2/2
✓ Branch 0 taken 6037510 times.
✓ Branch 1 taken 183884 times.
6221394 int qscale = p == 0 ? sl->qscale : sl->chroma_qp[p - 1];
1878
2/2
✓ Branch 0 taken 761217 times.
✓ Branch 1 taken 5460177 times.
6221394 if( IS_INTRA16x16( mb_type ) ) {
1879 761217 AV_ZERO128(sl->mb_luma_dc[p]+0);
1880 761217 AV_ZERO128(sl->mb_luma_dc[p]+8);
1881 761217 AV_ZERO128(sl->mb_luma_dc[p]+16);
1882 761217 AV_ZERO128(sl->mb_luma_dc[p]+24);
1883 761217 decode_cabac_residual_dc(h, sl, sl->mb_luma_dc[p], ctx_cat[0][p], LUMA_DC_BLOCK_INDEX+p, scan, 16);
1884
1885
2/2
✓ Branch 0 taken 350475 times.
✓ Branch 1 taken 410742 times.
761217 if( cbp&15 ) {
1886 350475 qmul = h->ps.pps->dequant4_coeff[p][qscale];
1887
2/2
✓ Branch 0 taken 5607600 times.
✓ Branch 1 taken 350475 times.
5958075 for( i4x4 = 0; i4x4 < 16; i4x4++ ) {
1888 5607600 const int index = 16*p + i4x4;
1889 5607600 decode_cabac_residual_nondc(h, sl, sl->mb + (16*index << pixel_shift), ctx_cat[1][p], index, scan + 1, qmul, 15);
1890 }
1891 } else {
1892 410742 fill_rectangle(&sl->non_zero_count_cache[scan8[16*p]], 4, 4, 8, 0, 1);
1893 }
1894 } else {
1895
2/2
✓ Branch 0 taken 1776858 times.
✓ Branch 1 taken 3683319 times.
5460177 int cqm = (IS_INTRA( mb_type ) ? 0:3) + p;
1896
2/2
✓ Branch 0 taken 21840708 times.
✓ Branch 1 taken 5460177 times.
27300885 for( i8x8 = 0; i8x8 < 4; i8x8++ ) {
1897
2/2
✓ Branch 0 taken 15327241 times.
✓ Branch 1 taken 6513467 times.
21840708 if( cbp & (1<<i8x8) ) {
1898
2/2
✓ Branch 0 taken 5492809 times.
✓ Branch 1 taken 9834432 times.
15327241 if( IS_8x8DCT(mb_type) ) {
1899 5492809 const int index = 16*p + 4*i8x8;
1900 5492809 decode_cabac_residual_nondc(h, sl, sl->mb + (16*index << pixel_shift), ctx_cat[3][p], index,
1901 5492809 scan8x8, h->ps.pps->dequant8_coeff[cqm][qscale], 64);
1902 } else {
1903 9834432 qmul = h->ps.pps->dequant4_coeff[cqm][qscale];
1904
2/2
✓ Branch 0 taken 39337728 times.
✓ Branch 1 taken 9834432 times.
49172160 for( i4x4 = 0; i4x4 < 4; i4x4++ ) {
1905 39337728 const int index = 16*p + 4*i8x8 + i4x4;
1906 39337728 decode_cabac_residual_nondc(h, sl, sl->mb + (16*index << pixel_shift), ctx_cat[2][p], index, scan, qmul, 16);
1907 }
1908 }
1909 } else {
1910 6513467 fill_rectangle(&sl->non_zero_count_cache[scan8[4*i8x8+16*p]], 2, 2, 8, 0, 1);
1911 }
1912 }
1913 }
1914 6221394 }
1915
1916 /**
1917 * Decode a macroblock.
1918 * @return 0 if OK, ER_AC_ERROR / ER_DC_ERROR / ER_MV_ERROR if an error is noticed
1919 */
1920 10370183 int ff_h264_decode_mb_cabac(const H264Context *h, H264SliceContext *sl)
1921 {
1922 10370183 const SPS *sps = h->ps.sps;
1923 int mb_xy;
1924 10370183 int mb_type, partition_count, cbp = 0;
1925 10370183 int dct8x8_allowed = h->ps.pps->transform_8x8_mode;
1926
4/4
✓ Branch 0 taken 712939 times.
✓ Branch 1 taken 9657244 times.
✓ Branch 2 taken 477512 times.
✓ Branch 3 taken 235427 times.
10370183 const int decode_chroma = sps->chroma_format_idc == 1 || sps->chroma_format_idc == 2;
1927 10370183 const int pixel_shift = h->pixel_shift;
1928
1929 10370183 mb_xy = sl->mb_xy = sl->mb_x + sl->mb_y*h->mb_stride;
1930
1931 ff_tlog(h->avctx, "pic:%d mb:%d/%d\n", h->poc.frame_num, sl->mb_x, sl->mb_y);
1932
2/2
✓ Branch 0 taken 8745937 times.
✓ Branch 1 taken 1624246 times.
10370183 if (sl->slice_type_nos != AV_PICTURE_TYPE_I) {
1933 int skip;
1934 /* a skipped mb needs the aff flag from the following mb */
1935
6/6
✓ Branch 0 taken 1373652 times.
✓ Branch 1 taken 7372285 times.
✓ Branch 2 taken 686826 times.
✓ Branch 3 taken 686826 times.
✓ Branch 4 taken 139884 times.
✓ Branch 5 taken 546942 times.
8745937 if (FRAME_MBAFF(h) && (sl->mb_y & 1) == 1 && sl->prev_mb_skipped)
1936 139884 skip = sl->next_mb_skipped;
1937 else
1938 8606053 skip = decode_cabac_mb_skip(h, sl, sl->mb_x, sl->mb_y );
1939 /* read skip flags */
1940
2/2
✓ Branch 0 taken 3128020 times.
✓ Branch 1 taken 5617917 times.
8745937 if( skip ) {
1941
4/4
✓ Branch 0 taken 273096 times.
✓ Branch 1 taken 2854924 times.
✓ Branch 2 taken 139884 times.
✓ Branch 3 taken 133212 times.
3128020 if (FRAME_MBAFF(h) && (sl->mb_y & 1) == 0) {
1942 139884 h->cur_pic.mb_type[mb_xy] = MB_TYPE_SKIP;
1943 139884 sl->next_mb_skipped = decode_cabac_mb_skip(h, sl, sl->mb_x, sl->mb_y+1 );
1944
2/2
✓ Branch 0 taken 44975 times.
✓ Branch 1 taken 94909 times.
139884 if(!sl->next_mb_skipped)
1945 44975 sl->mb_mbaff = sl->mb_field_decoding_flag = decode_cabac_field_decoding_flag(h, sl);
1946 }
1947
1948 3128020 decode_mb_skip(h, sl);
1949
1950 3128020 h->cbp_table[mb_xy] = 0;
1951 3128020 h->chroma_pred_mode_table[mb_xy] = 0;
1952 3128020 sl->last_qscale_diff = 0;
1953
1954 3128020 return 0;
1955
1956 }
1957 }
1958
2/2
✓ Branch 0 taken 1533648 times.
✓ Branch 1 taken 5708515 times.
7242163 if (FRAME_MBAFF(h)) {
1959
2/2
✓ Branch 0 taken 763488 times.
✓ Branch 1 taken 770160 times.
1533648 if ((sl->mb_y & 1) == 0)
1960 763488 sl->mb_mbaff =
1961 763488 sl->mb_field_decoding_flag = decode_cabac_field_decoding_flag(h, sl);
1962 }
1963
1964 7242163 sl->prev_mb_skipped = 0;
1965
1966 7242163 fill_decode_neighbors(h, sl, -(MB_FIELD(sl)));
1967
1968
2/2
✓ Branch 0 taken 2897778 times.
✓ Branch 1 taken 4344385 times.
7242163 if (sl->slice_type_nos == AV_PICTURE_TYPE_B) {
1969 2897778 int ctx = 0;
1970 av_assert2(sl->slice_type_nos == AV_PICTURE_TYPE_B);
1971
1972
2/2
✓ Branch 0 taken 2067017 times.
✓ Branch 1 taken 830761 times.
2897778 if (!IS_DIRECT(sl->left_type[LTOP] - 1))
1973 2067017 ctx++;
1974
2/2
✓ Branch 0 taken 1929605 times.
✓ Branch 1 taken 968173 times.
2897778 if (!IS_DIRECT(sl->top_type - 1))
1975 1929605 ctx++;
1976
1977
2/2
✓ Branch 1 taken 512803 times.
✓ Branch 2 taken 2384975 times.
2897778 if( !get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+ctx] ) ){
1978 512803 mb_type= 0; /* B_Direct_16x16 */
1979
2/2
✓ Branch 1 taken 893753 times.
✓ Branch 2 taken 1491222 times.
2384975 }else if( !get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+3] ) ) {
1980 893753 mb_type= 1 + get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] ); /* B_L[01]_16x16 */
1981 }else{
1982 int bits;
1983 1491222 bits = get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+4] ) << 3;
1984 1491222 bits+= get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] ) << 2;
1985 1491222 bits+= get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] ) << 1;
1986 1491222 bits+= get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] );
1987
2/2
✓ Branch 0 taken 448498 times.
✓ Branch 1 taken 1042724 times.
1491222 if( bits < 8 ){
1988 448498 mb_type= bits + 3; /* B_Bi_16x16 through B_L1_L0_16x8 */
1989
2/2
✓ Branch 0 taken 491627 times.
✓ Branch 1 taken 551097 times.
1042724 }else if( bits == 13 ){
1990 491627 mb_type = decode_cabac_intra_mb_type(sl, 32, 0);
1991 491627 goto decode_intra_mb;
1992
2/2
✓ Branch 0 taken 15734 times.
✓ Branch 1 taken 535363 times.
551097 }else if( bits == 14 ){
1993 15734 mb_type= 11; /* B_L1_L0_8x16 */
1994
2/2
✓ Branch 0 taken 397773 times.
✓ Branch 1 taken 137590 times.
535363 }else if( bits == 15 ){
1995 397773 mb_type= 22; /* B_8x8 */
1996 }else{
1997 137590 bits= ( bits<<1 ) + get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] );
1998 137590 mb_type= bits - 4; /* B_L0_Bi_* through B_Bi_Bi_* */
1999 }
2000 }
2001 2406151 partition_count = ff_h264_b_mb_type_info[mb_type].partition_count;
2002 2406151 mb_type = ff_h264_b_mb_type_info[mb_type].type;
2003
2/2
✓ Branch 0 taken 2720139 times.
✓ Branch 1 taken 1624246 times.
4344385 } else if (sl->slice_type_nos == AV_PICTURE_TYPE_P) {
2004
2/2
✓ Branch 1 taken 2188778 times.
✓ Branch 2 taken 531361 times.
2720139 if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[14] ) == 0 ) {
2005 /* P-type */
2006
2/2
✓ Branch 1 taken 1838702 times.
✓ Branch 2 taken 350076 times.
2188778 if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[15] ) == 0 ) {
2007 /* P_L0_D16x16, P_8x8 */
2008 1838702 mb_type= 3 * get_cabac_noinline( &sl->cabac, &sl->cabac_state[16] );
2009 } else {
2010 /* P_L0_D8x16, P_L0_D16x8 */
2011 350076 mb_type= 2 - get_cabac_noinline( &sl->cabac, &sl->cabac_state[17] );
2012 }
2013 2188778 partition_count = ff_h264_p_mb_type_info[mb_type].partition_count;
2014 2188778 mb_type = ff_h264_p_mb_type_info[mb_type].type;
2015 } else {
2016 531361 mb_type = decode_cabac_intra_mb_type(sl, 17, 0);
2017 531361 goto decode_intra_mb;
2018 }
2019 } else {
2020 1624246 mb_type = decode_cabac_intra_mb_type(sl, 3, 1);
2021
1/4
✓ Branch 0 taken 1624246 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1624246 if (sl->slice_type == AV_PICTURE_TYPE_SI && mb_type)
2022 mb_type--;
2023 av_assert2(sl->slice_type_nos == AV_PICTURE_TYPE_I);
2024 1624246 decode_intra_mb:
2025 2647234 partition_count = 0;
2026 2647234 cbp = ff_h264_i_mb_type_info[mb_type].cbp;
2027 2647234 sl->intra16x16_pred_mode = ff_h264_i_mb_type_info[mb_type].pred_mode;
2028 2647234 mb_type = ff_h264_i_mb_type_info[mb_type].type;
2029 }
2030
2/2
✓ Branch 0 taken 2827746 times.
✓ Branch 1 taken 4414417 times.
7242163 if (MB_FIELD(sl))
2031 2827746 mb_type |= MB_TYPE_INTERLACED;
2032
2033 7242163 h->slice_table[mb_xy] = sl->slice_num;
2034
2035
2/2
✓ Branch 0 taken 5659 times.
✓ Branch 1 taken 7236504 times.
7242163 if(IS_INTRA_PCM(mb_type)) {
2036 5659 const int mb_size = ff_h264_mb_sizes[sps->chroma_format_idc] *
2037 5659 sps->bit_depth_luma >> 3;
2038 const uint8_t *ptr;
2039 int ret;
2040
2041 // We assume these blocks are very rare so we do not optimize it.
2042 // FIXME The two following lines get the bitstream position in the cabac
2043 // decode, I think it should be done by a function in cabac.h (or cabac.c).
2044 5659 ptr= sl->cabac.bytestream;
2045
2/2
✓ Branch 0 taken 232 times.
✓ Branch 1 taken 5427 times.
5659 if(sl->cabac.low&0x1) ptr--;
2046 if(CABAC_BITS==16){
2047
2/2
✓ Branch 0 taken 2933 times.
✓ Branch 1 taken 2726 times.
5659 if(sl->cabac.low&0x1FF) ptr--;
2048 }
2049
2050 // The pixels are stored in the same order as levels in h->mb array.
2051
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 5659 times.
5659 if ((int) (sl->cabac.bytestream_end - ptr) < mb_size)
2052 return -1;
2053 5659 sl->intra_pcm_ptr = ptr;
2054 5659 ptr += mb_size;
2055
2056 5659 ret = ff_init_cabac_decoder(&sl->cabac, ptr, sl->cabac.bytestream_end - ptr);
2057
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 5659 times.
5659 if (ret < 0)
2058 return ret;
2059
2060 // All blocks are present
2061 5659 h->cbp_table[mb_xy] = 0xf7ef;
2062 5659 h->chroma_pred_mode_table[mb_xy] = 0;
2063 // In deblocking, the quantizer is 0
2064 5659 h->cur_pic.qscale_table[mb_xy] = 0;
2065 // All coeffs are present
2066 5659 memset(h->non_zero_count[mb_xy], 16, 48);
2067 5659 h->cur_pic.mb_type[mb_xy] = mb_type;
2068 5659 sl->last_qscale_diff = 0;
2069 5659 return 0;
2070 }
2071
2072 7236504 fill_decode_caches(h, sl, mb_type);
2073
2074
2/2
✓ Branch 0 taken 2641575 times.
✓ Branch 1 taken 4594929 times.
7236504 if( IS_INTRA( mb_type ) ) {
2075 int i, pred_mode;
2076
2/2
✓ Branch 0 taken 1887115 times.
✓ Branch 1 taken 754460 times.
2641575 if( IS_INTRA4x4( mb_type ) ) {
2077
4/4
✓ Branch 0 taken 1603179 times.
✓ Branch 1 taken 283936 times.
✓ Branch 3 taken 995855 times.
✓ Branch 4 taken 607324 times.
1887115 if (dct8x8_allowed && get_cabac_noinline(&sl->cabac, &sl->cabac_state[399 + sl->neighbor_transform_size])) {
2078 995855 mb_type |= MB_TYPE_8x8DCT;
2079
2/2
✓ Branch 0 taken 3983420 times.
✓ Branch 1 taken 995855 times.
4979275 for( i = 0; i < 16; i+=4 ) {
2080 3983420 int pred = pred_intra_mode(h, sl, i);
2081 3983420 int mode = decode_cabac_mb_intra4x4_pred_mode(sl, pred);
2082 3983420 fill_rectangle(&sl->intra4x4_pred_mode_cache[scan8[i]], 2, 2, 8, mode, 1);
2083 }
2084 } else {
2085
2/2
✓ Branch 0 taken 14260160 times.
✓ Branch 1 taken 891260 times.
15151420 for( i = 0; i < 16; i++ ) {
2086 14260160 int pred = pred_intra_mode(h, sl, i);
2087 14260160 sl->intra4x4_pred_mode_cache[scan8[i]] = decode_cabac_mb_intra4x4_pred_mode(sl, pred);
2088
2089 ff_tlog(h->avctx, "i4x4 pred=%d mode=%d\n", pred,
2090 sl->intra4x4_pred_mode_cache[scan8[i]]);
2091 }
2092 }
2093 1887115 write_back_intra_pred_mode(h, sl);
2094
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1887115 times.
1887115 if (ff_h264_check_intra4x4_pred_mode(sl->intra4x4_pred_mode_cache, h->avctx,
2095 1887115 sl->top_samples_available, sl->left_samples_available) < 0 )
2096 return -1;
2097 } else {
2098 1508920 sl->intra16x16_pred_mode = ff_h264_check_intra_pred_mode(h->avctx, sl->top_samples_available,
2099 754460 sl->left_samples_available, sl->intra16x16_pred_mode, 0);
2100
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 754460 times.
754460 if (sl->intra16x16_pred_mode < 0) return -1;
2101 }
2102
2/2
✓ Branch 0 taken 2547938 times.
✓ Branch 1 taken 93637 times.
2641575 if(decode_chroma){
2103 2547938 h->chroma_pred_mode_table[mb_xy] =
2104 2547938 pred_mode = decode_cabac_mb_chroma_pre_mode(h, sl);
2105
2106 2547938 pred_mode= ff_h264_check_intra_pred_mode(h->avctx, sl->top_samples_available,
2107 2547938 sl->left_samples_available, pred_mode, 1 );
2108
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2547938 times.
2547938 if( pred_mode < 0 ) return -1;
2109 2547938 sl->chroma_pred_mode = pred_mode;
2110 } else {
2111 93637 sl->chroma_pred_mode = DC_128_PRED8x8;
2112 }
2113
2/2
✓ Branch 0 taken 907196 times.
✓ Branch 1 taken 3687733 times.
4594929 } else if( partition_count == 4 ) {
2114 int i, j, sub_partition_count[4], list, ref[2][4];
2115
2116
2/2
✓ Branch 0 taken 397773 times.
✓ Branch 1 taken 509423 times.
907196 if (sl->slice_type_nos == AV_PICTURE_TYPE_B ) {
2117
2/2
✓ Branch 0 taken 1591092 times.
✓ Branch 1 taken 397773 times.
1988865 for( i = 0; i < 4; i++ ) {
2118 1591092 sl->sub_mb_type[i] = decode_cabac_b_mb_sub_type(sl);
2119 1591092 sub_partition_count[i] = ff_h264_b_sub_mb_type_info[sl->sub_mb_type[i]].partition_count;
2120 1591092 sl->sub_mb_type[i] = ff_h264_b_sub_mb_type_info[sl->sub_mb_type[i]].type;
2121 }
2122
2/2
✓ Branch 0 taken 79700 times.
✓ Branch 1 taken 318073 times.
397773 if (IS_DIRECT(sl->sub_mb_type[0] | sl->sub_mb_type[1] |
2123 sl->sub_mb_type[2] | sl->sub_mb_type[3])) {
2124 79700 ff_h264_pred_direct_motion(h, sl, &mb_type);
2125 79700 sl->ref_cache[0][scan8[4]] =
2126 79700 sl->ref_cache[1][scan8[4]] =
2127 79700 sl->ref_cache[0][scan8[12]] =
2128 79700 sl->ref_cache[1][scan8[12]] = PART_NOT_AVAILABLE;
2129
2/2
✓ Branch 0 taken 318800 times.
✓ Branch 1 taken 79700 times.
398500 for( i = 0; i < 4; i++ )
2130 318800 fill_rectangle(&sl->direct_cache[scan8[4*i]], 2, 2, 8, (sl->sub_mb_type[i] >> 1) & 0xFF, 1);
2131 }
2132 } else {
2133
2/2
✓ Branch 0 taken 2037692 times.
✓ Branch 1 taken 509423 times.
2547115 for( i = 0; i < 4; i++ ) {
2134 2037692 sl->sub_mb_type[i] = decode_cabac_p_mb_sub_type(sl);
2135 2037692 sub_partition_count[i] = ff_h264_p_sub_mb_type_info[sl->sub_mb_type[i]].partition_count;
2136 2037692 sl->sub_mb_type[i] = ff_h264_p_sub_mb_type_info[sl->sub_mb_type[i]].type;
2137 }
2138 }
2139
2140
2/2
✓ Branch 0 taken 1304969 times.
✓ Branch 1 taken 907196 times.
2212165 for( list = 0; list < sl->list_count; list++ ) {
2141
2/2
✓ Branch 0 taken 5219876 times.
✓ Branch 1 taken 1304969 times.
6524845 for( i = 0; i < 4; i++ ) {
2142
2/2
✓ Branch 0 taken 323954 times.
✓ Branch 1 taken 4895922 times.
5219876 if(IS_DIRECT(sl->sub_mb_type[i])) continue;
2143
2/2
✓ Branch 0 taken 4463293 times.
✓ Branch 1 taken 432629 times.
4895922 if(IS_DIR(sl->sub_mb_type[i], 0, list)){
2144 4463293 unsigned rc = sl->ref_count[list] << MB_MBAFF(sl);
2145
2/2
✓ Branch 0 taken 2960027 times.
✓ Branch 1 taken 1503266 times.
4463293 if (rc > 1) {
2146 2960027 ref[list][i] = decode_cabac_mb_ref(sl, list, 4 * i);
2147
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2960027 times.
2960027 if (ref[list][i] >= rc) {
2148 av_log(h->avctx, AV_LOG_ERROR, "Reference %d >= %d\n", ref[list][i], rc);
2149 return -1;
2150 }
2151 }else
2152 1503266 ref[list][i] = 0;
2153 } else {
2154 432629 ref[list][i] = -1;
2155 }
2156 4895922 sl->ref_cache[list][scan8[4 * i] + 1] =
2157 4895922 sl->ref_cache[list][scan8[4 * i] + 8] = sl->ref_cache[list][scan8[4 * i] + 9] = ref[list][i];
2158 }
2159 }
2160
2161
2/2
✓ Branch 0 taken 244599 times.
✓ Branch 1 taken 662597 times.
907196 if(dct8x8_allowed)
2162 244599 dct8x8_allowed = get_dct8x8_allowed(h, sl);
2163
2164
2/2
✓ Branch 0 taken 1304969 times.
✓ Branch 1 taken 907196 times.
2212165 for (list = 0; list < sl->list_count; list++) {
2165
2/2
✓ Branch 0 taken 5219876 times.
✓ Branch 1 taken 1304969 times.
6524845 for(i=0; i<4; i++){
2166 5219876 sl->ref_cache[list][scan8[4 * i]] = sl->ref_cache[list][scan8[4 * i] + 1];
2167
2/2
✓ Branch 0 taken 323954 times.
✓ Branch 1 taken 4895922 times.
5219876 if(IS_DIRECT(sl->sub_mb_type[i])){
2168 323954 fill_rectangle(sl->mvd_cache[list][scan8[4*i]], 2, 2, 8, 0, 2);
2169 323954 continue;
2170 }
2171
2172
3/4
✓ Branch 0 taken 4463293 times.
✓ Branch 1 taken 432629 times.
✓ Branch 2 taken 4463293 times.
✗ Branch 3 not taken.
9359215 if(IS_DIR(sl->sub_mb_type[i], 0, list) && !IS_DIRECT(sl->sub_mb_type[i])){
2173 4463293 const int sub_mb_type= sl->sub_mb_type[i];
2174
2/2
✓ Branch 0 taken 3277693 times.
✓ Branch 1 taken 1185600 times.
4463293 const int block_width= (sub_mb_type & (MB_TYPE_16x16|MB_TYPE_16x8)) ? 2 : 1;
2175
2/2
✓ Branch 0 taken 9257924 times.
✓ Branch 1 taken 4463293 times.
13721217 for(j=0; j<sub_partition_count[i]; j++){
2176 int mpx, mpy;
2177 int mx, my;
2178 9257924 const int index= 4*i + block_width*j;
2179 9257924 int16_t (* mv_cache)[2] = &sl->mv_cache[list][ scan8[index] ];
2180 9257924 uint8_t (* mvd_cache)[2]= &sl->mvd_cache[list][ scan8[index] ];
2181 9257924 pred_motion(h, sl, index, block_width, list, sl->ref_cache[list][ scan8[index] ], &mx, &my);
2182
2/4
✓ Branch 2 taken 9257924 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 9257924 times.
9257924 DECODE_CABAC_MB_MVD(sl, list, index)
2183 ff_tlog(h->avctx, "final mv:%d %d\n", mx, my);
2184
2185
2/2
✓ Branch 0 taken 1451172 times.
✓ Branch 1 taken 7806752 times.
9257924 if(IS_SUB_8X8(sub_mb_type)){
2186 1451172 mv_cache[ 1 ][0]=
2187 1451172 mv_cache[ 8 ][0]= mv_cache[ 9 ][0]= mx;
2188 1451172 mv_cache[ 1 ][1]=
2189 1451172 mv_cache[ 8 ][1]= mv_cache[ 9 ][1]= my;
2190
2191 1451172 mvd_cache[ 1 ][0]=
2192 1451172 mvd_cache[ 8 ][0]= mvd_cache[ 9 ][0]= mpx;
2193 1451172 mvd_cache[ 1 ][1]=
2194 1451172 mvd_cache[ 8 ][1]= mvd_cache[ 9 ][1]= mpy;
2195
2/2
✓ Branch 0 taken 3653042 times.
✓ Branch 1 taken 4153710 times.
7806752 }else if(IS_SUB_8X4(sub_mb_type)){
2196 3653042 mv_cache[ 1 ][0]= mx;
2197 3653042 mv_cache[ 1 ][1]= my;
2198
2199 3653042 mvd_cache[ 1 ][0]= mpx;
2200 3653042 mvd_cache[ 1 ][1]= mpy;
2201
2/2
✓ Branch 0 taken 588690 times.
✓ Branch 1 taken 3565020 times.
4153710 }else if(IS_SUB_4X8(sub_mb_type)){
2202 588690 mv_cache[ 8 ][0]= mx;
2203 588690 mv_cache[ 8 ][1]= my;
2204
2205 588690 mvd_cache[ 8 ][0]= mpx;
2206 588690 mvd_cache[ 8 ][1]= mpy;
2207 }
2208 9257924 mv_cache[ 0 ][0]= mx;
2209 9257924 mv_cache[ 0 ][1]= my;
2210
2211 9257924 mvd_cache[ 0 ][0]= mpx;
2212 9257924 mvd_cache[ 0 ][1]= mpy;
2213 }
2214 }else{
2215 432629 fill_rectangle(sl->mv_cache [list][ scan8[4*i] ], 2, 2, 8, 0, 4);
2216 432629 fill_rectangle(sl->mvd_cache[list][ scan8[4*i] ], 2, 2, 8, 0, 2);
2217 }
2218 }
2219 }
2220
2/2
✓ Branch 0 taken 512803 times.
✓ Branch 1 taken 3174930 times.
3687733 } else if( IS_DIRECT(mb_type) ) {
2221 512803 ff_h264_pred_direct_motion(h, sl, &mb_type);
2222 512803 fill_rectangle(sl->mvd_cache[0][scan8[0]], 4, 4, 8, 0, 2);
2223 512803 fill_rectangle(sl->mvd_cache[1][scan8[0]], 4, 4, 8, 0, 2);
2224 512803 dct8x8_allowed &= sps->direct_8x8_inference_flag;
2225 } else {
2226 int list, i;
2227
2/2
✓ Branch 0 taken 2434222 times.
✓ Branch 1 taken 740708 times.
3174930 if(IS_16X16(mb_type)){
2228
2/2
✓ Branch 0 taken 3539165 times.
✓ Branch 1 taken 2434222 times.
5973387 for (list = 0; list < sl->list_count; list++) {
2229
2/2
✓ Branch 0 taken 2645412 times.
✓ Branch 1 taken 893753 times.
3539165 if(IS_DIR(mb_type, 0, list)){
2230 int ref;
2231 2645412 unsigned rc = sl->ref_count[list] << MB_MBAFF(sl);
2232
2/2
✓ Branch 0 taken 1578817 times.
✓ Branch 1 taken 1066595 times.
2645412 if (rc > 1) {
2233 1578817 ref= decode_cabac_mb_ref(sl, list, 0);
2234
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1578817 times.
1578817 if (ref >= rc) {
2235 av_log(h->avctx, AV_LOG_ERROR, "Reference %d >= %d\n", ref, rc);
2236 return -1;
2237 }
2238 }else
2239 1066595 ref=0;
2240 2645412 fill_rectangle(&sl->ref_cache[list][ scan8[0] ], 4, 4, 8, ref, 1);
2241 }
2242 }
2243
2/2
✓ Branch 0 taken 3539165 times.
✓ Branch 1 taken 2434222 times.
5973387 for (list = 0; list < sl->list_count; list++) {
2244
2/2
✓ Branch 0 taken 2645412 times.
✓ Branch 1 taken 893753 times.
3539165 if(IS_DIR(mb_type, 0, list)){
2245 int mx,my,mpx,mpy;
2246 2645412 pred_motion(h, sl, 0, 4, list, sl->ref_cache[list][ scan8[0] ], &mx, &my);
2247
2/4
✓ Branch 2 taken 2645412 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2645412 times.
2645412 DECODE_CABAC_MB_MVD(sl, list, 0)
2248 ff_tlog(h->avctx, "final mv:%d %d\n", mx, my);
2249
2250 2645412 fill_rectangle(sl->mvd_cache[list][ scan8[0] ], 4, 4, 8, pack8to16(mpx,mpy), 2);
2251 2645412 fill_rectangle(sl->mv_cache[list][ scan8[0] ], 4, 4, 8, pack16to32(mx,my), 4);
2252 }
2253 }
2254 }
2255
2/2
✓ Branch 0 taken 388254 times.
✓ Branch 1 taken 352454 times.
740708 else if(IS_16X8(mb_type)){
2256
2/2
✓ Branch 0 taken 599229 times.
✓ Branch 1 taken 388254 times.
987483 for (list = 0; list < sl->list_count; list++) {
2257
2/2
✓ Branch 0 taken 1198458 times.
✓ Branch 1 taken 599229 times.
1797687 for(i=0; i<2; i++){
2258
2/2
✓ Branch 0 taken 869530 times.
✓ Branch 1 taken 328928 times.
1198458 if(IS_DIR(mb_type, i, list)){
2259 int ref;
2260 869530 unsigned rc = sl->ref_count[list] << MB_MBAFF(sl);
2261
2/2
✓ Branch 0 taken 549700 times.
✓ Branch 1 taken 319830 times.
869530 if (rc > 1) {
2262 549700 ref= decode_cabac_mb_ref(sl, list, 8 * i);
2263
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 549700 times.
549700 if (ref >= rc) {
2264 av_log(h->avctx, AV_LOG_ERROR, "Reference %d >= %d\n", ref, rc);
2265 return -1;
2266 }
2267 }else
2268 319830 ref=0;
2269 869530 fill_rectangle(&sl->ref_cache[list][ scan8[0] + 16*i ], 4, 2, 8, ref, 1);
2270 }else
2271 328928 fill_rectangle(&sl->ref_cache[list][ scan8[0] + 16*i ], 4, 2, 8, (LIST_NOT_USED&0xFF), 1);
2272 }
2273 }
2274
2/2
✓ Branch 0 taken 599229 times.
✓ Branch 1 taken 388254 times.
987483 for (list = 0; list < sl->list_count; list++) {
2275
2/2
✓ Branch 0 taken 1198458 times.
✓ Branch 1 taken 599229 times.
1797687 for(i=0; i<2; i++){
2276
2/2
✓ Branch 0 taken 869530 times.
✓ Branch 1 taken 328928 times.
1198458 if(IS_DIR(mb_type, i, list)){
2277 int mx,my,mpx,mpy;
2278 869530 pred_16x8_motion(h, sl, 8*i, list, sl->ref_cache[list][scan8[0] + 16*i], &mx, &my);
2279
2/4
✓ Branch 2 taken 869530 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 869530 times.
869530 DECODE_CABAC_MB_MVD(sl, list, 8*i)
2280 ff_tlog(h->avctx, "final mv:%d %d\n", mx, my);
2281
2282 869530 fill_rectangle(sl->mvd_cache[list][ scan8[0] + 16*i ], 4, 2, 8, pack8to16(mpx,mpy), 2);
2283 869530 fill_rectangle(sl->mv_cache[list][ scan8[0] + 16*i ], 4, 2, 8, pack16to32(mx,my), 4);
2284 }else{
2285 328928 fill_rectangle(sl->mvd_cache[list][ scan8[0] + 16*i ], 4, 2, 8, 0, 2);
2286 328928 fill_rectangle(sl->mv_cache[list][ scan8[0] + 16*i ], 4, 2, 8, 0, 4);
2287 }
2288 }
2289 }
2290 }else{
2291 av_assert2(IS_8X16(mb_type));
2292
2/2
✓ Branch 0 taken 532111 times.
✓ Branch 1 taken 352454 times.
884565 for (list = 0; list < sl->list_count; list++) {
2293
2/2
✓ Branch 0 taken 1064222 times.
✓ Branch 1 taken 532111 times.
1596333 for(i=0; i<2; i++){
2294
2/2
✓ Branch 0 taken 783080 times.
✓ Branch 1 taken 281142 times.
1064222 if(IS_DIR(mb_type, i, list)){ //FIXME optimize
2295 int ref;
2296 783080 unsigned rc = sl->ref_count[list] << MB_MBAFF(sl);
2297
2/2
✓ Branch 0 taken 466540 times.
✓ Branch 1 taken 316540 times.
783080 if (rc > 1) {
2298 466540 ref = decode_cabac_mb_ref(sl, list, 4 * i);
2299
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 466540 times.
466540 if (ref >= rc) {
2300 av_log(h->avctx, AV_LOG_ERROR, "Reference %d >= %d\n", ref, rc);
2301 return -1;
2302 }
2303 }else
2304 316540 ref=0;
2305 783080 fill_rectangle(&sl->ref_cache[list][ scan8[0] + 2*i ], 2, 4, 8, ref, 1);
2306 }else
2307 281142 fill_rectangle(&sl->ref_cache[list][ scan8[0] + 2*i ], 2, 4, 8, (LIST_NOT_USED&0xFF), 1);
2308 }
2309 }
2310
2/2
✓ Branch 0 taken 532111 times.
✓ Branch 1 taken 352454 times.
884565 for (list = 0; list < sl->list_count; list++) {
2311
2/2
✓ Branch 0 taken 1064222 times.
✓ Branch 1 taken 532111 times.
1596333 for(i=0; i<2; i++){
2312
2/2
✓ Branch 0 taken 783080 times.
✓ Branch 1 taken 281142 times.
1064222 if(IS_DIR(mb_type, i, list)){
2313 int mx,my,mpx,mpy;
2314 783080 pred_8x16_motion(h, sl, i*4, list, sl->ref_cache[list][ scan8[0] + 2*i ], &mx, &my);
2315
2/4
✓ Branch 2 taken 783080 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 783080 times.
783080 DECODE_CABAC_MB_MVD(sl, list, 4*i)
2316
2317 ff_tlog(h->avctx, "final mv:%d %d\n", mx, my);
2318 783080 fill_rectangle(sl->mvd_cache[list][ scan8[0] + 2*i ], 2, 4, 8, pack8to16(mpx,mpy), 2);
2319 783080 fill_rectangle(sl->mv_cache[list][ scan8[0] + 2*i ], 2, 4, 8, pack16to32(mx,my), 4);
2320 }else{
2321 281142 fill_rectangle(sl->mvd_cache[list][ scan8[0] + 2*i ], 2, 4, 8, 0, 2);
2322 281142 fill_rectangle(sl->mv_cache[list][ scan8[0] + 2*i ], 2, 4, 8, 0, 4);
2323 }
2324 }
2325 }
2326 }
2327 }
2328
2329
2/2
✓ Branch 0 taken 4594929 times.
✓ Branch 1 taken 2641575 times.
7236504 if( IS_INTER( mb_type ) ) {
2330 4594929 h->chroma_pred_mode_table[mb_xy] = 0;
2331 4594929 write_back_motion(h, sl, mb_type);
2332 }
2333
2334
2/2
✓ Branch 0 taken 6482044 times.
✓ Branch 1 taken 754460 times.
7236504 if( !IS_INTRA16x16( mb_type ) ) {
2335 6482044 cbp = decode_cabac_mb_cbp_luma(sl);
2336
2/2
✓ Branch 0 taken 6293274 times.
✓ Branch 1 taken 188770 times.
6482044 if(decode_chroma)
2337 6293274 cbp |= decode_cabac_mb_cbp_chroma(sl) << 4;
2338 } else {
2339
4/4
✓ Branch 0 taken 6527 times.
✓ Branch 1 taken 747933 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 6526 times.
754460 if (!decode_chroma && cbp>15) {
2340 1 av_log(h->avctx, AV_LOG_ERROR, "gray chroma\n");
2341 1 return AVERROR_INVALIDDATA;
2342 }
2343 }
2344
2345 7236503 h->cbp_table[mb_xy] = sl->cbp = cbp;
2346
2347
6/6
✓ Branch 0 taken 4540889 times.
✓ Branch 1 taken 2695614 times.
✓ Branch 2 taken 3242365 times.
✓ Branch 3 taken 1298524 times.
✓ Branch 4 taken 1553168 times.
✓ Branch 5 taken 1689197 times.
7236503 if( dct8x8_allowed && (cbp&15) && !IS_INTRA( mb_type ) ) {
2348 1553168 mb_type |= MB_TYPE_8x8DCT * get_cabac_noinline(&sl->cabac, &sl->cabac_state[399 + sl->neighbor_transform_size]);
2349 }
2350
2351 /* It would be better to do this in fill_decode_caches, but we don't know
2352 * the transform mode of the current macroblock there. */
2353
4/4
✓ Branch 0 taken 152992 times.
✓ Branch 1 taken 7083511 times.
✓ Branch 2 taken 58789 times.
✓ Branch 3 taken 94203 times.
7236503 if (CHROMA444(h) && IS_8x8DCT(mb_type)){
2354 int i;
2355 58789 uint8_t *nnz_cache = sl->non_zero_count_cache;
2356
2/2
✓ Branch 0 taken 58752 times.
✓ Branch 1 taken 37 times.
58789 if (h->x264_build < 151U) {
2357
2/2
✓ Branch 0 taken 117504 times.
✓ Branch 1 taken 58752 times.
176256 for (i = 0; i < 2; i++){
2358
4/4
✓ Branch 0 taken 115742 times.
✓ Branch 1 taken 1762 times.
✓ Branch 2 taken 10860 times.
✓ Branch 3 taken 104882 times.
117504 if (sl->left_type[LEFT(i)] && !IS_8x8DCT(sl->left_type[LEFT(i)])) {
2359 10860 nnz_cache[3+8* 1 + 2*8*i]=
2360 10860 nnz_cache[3+8* 2 + 2*8*i]=
2361 10860 nnz_cache[3+8* 6 + 2*8*i]=
2362 10860 nnz_cache[3+8* 7 + 2*8*i]=
2363 10860 nnz_cache[3+8*11 + 2*8*i]=
2364
2/2
✓ Branch 0 taken 962 times.
✓ Branch 1 taken 9898 times.
10860 nnz_cache[3+8*12 + 2*8*i]= IS_INTRA(mb_type) ? 64 : 0;
2365 }
2366 }
2367
4/4
✓ Branch 0 taken 57258 times.
✓ Branch 1 taken 1494 times.
✓ Branch 2 taken 5303 times.
✓ Branch 3 taken 51955 times.
58752 if (sl->top_type && !IS_8x8DCT(sl->top_type)){
2368
2/2
✓ Branch 0 taken 4731 times.
✓ Branch 1 taken 572 times.
5303 uint32_t top_empty = !IS_INTRA(mb_type) ? 0 : 0x40404040;
2369 5303 AV_WN32A(&nnz_cache[4+8* 0], top_empty);
2370 5303 AV_WN32A(&nnz_cache[4+8* 5], top_empty);
2371 5303 AV_WN32A(&nnz_cache[4+8*10], top_empty);
2372 }
2373 } else {
2374
2/2
✓ Branch 0 taken 74 times.
✓ Branch 1 taken 37 times.
111 for (i = 0; i < 2; i++){
2375
4/4
✓ Branch 0 taken 52 times.
✓ Branch 1 taken 22 times.
✓ Branch 2 taken 40 times.
✓ Branch 3 taken 12 times.
74 if (sl->left_type[LEFT(i)] && !IS_8x8DCT(sl->left_type[LEFT(i)])) {
2376 40 nnz_cache[3+8* 1 + 2*8*i]=
2377 40 nnz_cache[3+8* 2 + 2*8*i]=
2378 40 nnz_cache[3+8* 6 + 2*8*i]=
2379 40 nnz_cache[3+8* 7 + 2*8*i]=
2380 40 nnz_cache[3+8*11 + 2*8*i]=
2381
1/2
✓ Branch 0 taken 40 times.
✗ Branch 1 not taken.
40 nnz_cache[3+8*12 + 2*8*i]= !IS_INTRA_PCM(sl->left_type[LEFT(i)]) ? 0 : 64;
2382 }
2383 }
2384
4/4
✓ Branch 0 taken 33 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 7 times.
✓ Branch 3 taken 26 times.
37 if (sl->top_type && !IS_8x8DCT(sl->top_type)){
2385
1/2
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
7 uint32_t top_empty = !IS_INTRA_PCM(sl->top_type) ? 0 : 0x40404040;
2386 7 AV_WN32A(&nnz_cache[4+8* 0], top_empty);
2387 7 AV_WN32A(&nnz_cache[4+8* 5], top_empty);
2388 7 AV_WN32A(&nnz_cache[4+8*10], top_empty);
2389 }
2390 }
2391 }
2392 7236503 h->cur_pic.mb_type[mb_xy] = mb_type;
2393
2394
4/4
✓ Branch 0 taken 1529368 times.
✓ Branch 1 taken 5707135 times.
✓ Branch 2 taken 330375 times.
✓ Branch 3 taken 1198993 times.
13274013 if( cbp || IS_INTRA16x16( mb_type ) ) {
2395 const uint8_t *scan, *scan8x8;
2396 const uint32_t *qmul;
2397
2398 // decode_cabac_mb_dqp
2399
4/4
✓ Branch 0 taken 940929 times.
✓ Branch 1 taken 5096581 times.
✓ Branch 3 taken 1136452 times.
✓ Branch 4 taken 4901058 times.
6037510 if(get_cabac_noinline( &sl->cabac, &sl->cabac_state[60 + (sl->last_qscale_diff != 0)])){
2400 1136452 int val = 1;
2401 1136452 int ctx= 2;
2402 1136452 const int max_qp = 51 + 6*(sps->bit_depth_luma-8);
2403
2404
2/2
✓ Branch 1 taken 6663570 times.
✓ Branch 2 taken 1136452 times.
7800022 while( get_cabac_noinline( &sl->cabac, &sl->cabac_state[60 + ctx] ) ) {
2405 6663570 ctx= 3;
2406 6663570 val++;
2407
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 6663570 times.
6663570 if(val > 2*max_qp){ //prevent infinite loop
2408 av_log(h->avctx, AV_LOG_ERROR, "cabac decode of qscale diff failed at %d %d\n", sl->mb_x, sl->mb_y);
2409 return -1;
2410 }
2411 }
2412
2413
2/2
✓ Branch 0 taken 565458 times.
✓ Branch 1 taken 570994 times.
1136452 if( val&0x01 )
2414 565458 val= (val + 1)>>1 ;
2415 else
2416 570994 val= -((val + 1)>>1);
2417 1136452 sl->last_qscale_diff = val;
2418 1136452 sl->qscale += val;
2419
2/2
✓ Branch 0 taken 10602 times.
✓ Branch 1 taken 1125850 times.
1136452 if (((unsigned)sl->qscale) > max_qp){
2420
2/2
✓ Branch 0 taken 5475 times.
✓ Branch 1 taken 5127 times.
10602 if (sl->qscale < 0) sl->qscale += max_qp + 1;
2421 5127 else sl->qscale -= max_qp + 1;
2422 }
2423 1136452 sl->chroma_qp[0] = get_chroma_qp(h->ps.pps, 0, sl->qscale);
2424 1136452 sl->chroma_qp[1] = get_chroma_qp(h->ps.pps, 1, sl->qscale);
2425 }else
2426 4901058 sl->last_qscale_diff=0;
2427
2428
2/2
✓ Branch 0 taken 2342022 times.
✓ Branch 1 taken 3695488 times.
6037510 if(IS_INTERLACED(mb_type)){
2429
2/2
✓ Branch 0 taken 2341988 times.
✓ Branch 1 taken 34 times.
2342022 scan8x8 = sl->qscale ? h->field_scan8x8 : h->field_scan8x8_q0;
2430
2/2
✓ Branch 0 taken 2341988 times.
✓ Branch 1 taken 34 times.
2342022 scan = sl->qscale ? h->field_scan : h->field_scan_q0;
2431 }else{
2432
2/2
✓ Branch 0 taken 3603476 times.
✓ Branch 1 taken 92012 times.
3695488 scan8x8 = sl->qscale ? h->zigzag_scan8x8 : h->zigzag_scan8x8_q0;
2433
2/2
✓ Branch 0 taken 3603476 times.
✓ Branch 1 taken 92012 times.
3695488 scan = sl->qscale ? h->zigzag_scan : h->zigzag_scan_q0;
2434 }
2435
2436 6037510 decode_cabac_luma_residual(h, sl, scan, scan8x8, pixel_shift, mb_type, cbp, 0);
2437
2/2
✓ Branch 0 taken 91942 times.
✓ Branch 1 taken 5945568 times.
6037510 if (CHROMA444(h)) {
2438 91942 decode_cabac_luma_residual(h, sl, scan, scan8x8, pixel_shift, mb_type, cbp, 1);
2439 91942 decode_cabac_luma_residual(h, sl, scan, scan8x8, pixel_shift, mb_type, cbp, 2);
2440
2/2
✓ Branch 0 taken 465190 times.
✓ Branch 1 taken 5480378 times.
5945568 } else if (CHROMA422(h)) {
2441
2/2
✓ Branch 0 taken 385504 times.
✓ Branch 1 taken 79686 times.
465190 if( cbp&0x30 ){
2442 int c;
2443
2/2
✓ Branch 0 taken 771008 times.
✓ Branch 1 taken 385504 times.
1156512 for (c = 0; c < 2; c++)
2444 771008 decode_cabac_residual_dc_422(h, sl, sl->mb + ((256 + 16*16*c) << pixel_shift), 3,
2445 CHROMA_DC_BLOCK_INDEX + c,
2446 ff_h264_chroma422_dc_scan, 8);
2447 }
2448
2449
2/2
✓ Branch 0 taken 288034 times.
✓ Branch 1 taken 177156 times.
465190 if( cbp&0x20 ) {
2450 int c, i, i8x8;
2451
2/2
✓ Branch 0 taken 576068 times.
✓ Branch 1 taken 288034 times.
864102 for( c = 0; c < 2; c++ ) {
2452 576068 int16_t *mb = sl->mb + (16*(16 + 16*c) << pixel_shift);
2453
2/2
✓ Branch 0 taken 560490 times.
✓ Branch 1 taken 15578 times.
576068 qmul = h->ps.pps->dequant4_coeff[c+1+(IS_INTRA( mb_type ) ? 0:3)][sl->chroma_qp[c]];
2454
2/2
✓ Branch 0 taken 1152136 times.
✓ Branch 1 taken 576068 times.
1728204 for (i8x8 = 0; i8x8 < 2; i8x8++) {
2455
2/2
✓ Branch 0 taken 4608544 times.
✓ Branch 1 taken 1152136 times.
5760680 for (i = 0; i < 4; i++) {
2456 4608544 const int index = 16 + 16 * c + 8*i8x8 + i;
2457 4608544 decode_cabac_residual_nondc(h, sl, mb, 4, index, scan + 1, qmul, 15);
2458 4608544 mb += 16<<pixel_shift;
2459 }
2460 }
2461 }
2462 } else {
2463 177156 fill_rectangle(&sl->non_zero_count_cache[scan8[16]], 4, 4, 8, 0, 1);
2464 177156 fill_rectangle(&sl->non_zero_count_cache[scan8[32]], 4, 4, 8, 0, 1);
2465 }
2466 } else /* yuv420 */ {
2467
2/2
✓ Branch 0 taken 2802585 times.
✓ Branch 1 taken 2677793 times.
5480378 if( cbp&0x30 ){
2468 int c;
2469
2/2
✓ Branch 0 taken 5605170 times.
✓ Branch 1 taken 2802585 times.
8407755 for (c = 0; c < 2; c++)
2470 5605170 decode_cabac_residual_dc(h, sl, sl->mb + ((256 + 16 * 16 * c) << pixel_shift),
2471 3, CHROMA_DC_BLOCK_INDEX + c, ff_h264_chroma_dc_scan, 4);
2472 }
2473
2474
2/2
✓ Branch 0 taken 1475665 times.
✓ Branch 1 taken 4004713 times.
5480378 if( cbp&0x20 ) {
2475 int c, i;
2476
2/2
✓ Branch 0 taken 2951330 times.
✓ Branch 1 taken 1475665 times.
4426995 for( c = 0; c < 2; c++ ) {
2477
2/2
✓ Branch 0 taken 1602200 times.
✓ Branch 1 taken 1349130 times.
2951330 qmul = h->ps.pps->dequant4_coeff[c+1+(IS_INTRA( mb_type ) ? 0:3)][sl->chroma_qp[c]];
2478
2/2
✓ Branch 0 taken 11805320 times.
✓ Branch 1 taken 2951330 times.
14756650 for( i = 0; i < 4; i++ ) {
2479 11805320 const int index = 16 + 16 * c + i;
2480 11805320 decode_cabac_residual_nondc(h, sl, sl->mb + (16*index << pixel_shift), 4, index, scan + 1, qmul, 15);
2481 }
2482 }
2483 } else {
2484 4004713 fill_rectangle(&sl->non_zero_count_cache[scan8[16]], 4, 4, 8, 0, 1);
2485 4004713 fill_rectangle(&sl->non_zero_count_cache[scan8[32]], 4, 4, 8, 0, 1);
2486 }
2487 }
2488 } else {
2489 1198993 fill_rectangle(&sl->non_zero_count_cache[scan8[ 0]], 4, 4, 8, 0, 1);
2490 1198993 fill_rectangle(&sl->non_zero_count_cache[scan8[16]], 4, 4, 8, 0, 1);
2491 1198993 fill_rectangle(&sl->non_zero_count_cache[scan8[32]], 4, 4, 8, 0, 1);
2492 1198993 sl->last_qscale_diff = 0;
2493 }
2494
2495 7236503 h->cur_pic.qscale_table[mb_xy] = sl->qscale;
2496 7236503 write_back_non_zero_count(h, sl);
2497
2498 7236503 return 0;
2499 }
2500

指甲有条纹是什么原因 智齿旁边的牙齿叫什么 st是什么意思 寅五行属什么 残疾证有什么好处
查乙肝挂什么科 榴莲什么样的好 外阴白斑有什么症状 县常委什么级别 空调什么度数最省电
吃什么会导致流产 印度人属于什么人种 4.19是什么星座 思前想后是什么意思 甲油胶是什么
维生素d滴剂什么时候吃最好 慢性病卡有什么用 怀孕了用排卵试纸测会显示什么 一叶知秋是什么生肖 定制和订制有什么区别
247是什么意思hcv9jop5ns7r.cn 定义是什么hcv8jop3ns0r.cn 风格是什么意思hcv7jop5ns5r.cn 浛是什么意思hcv8jop8ns1r.cn 割包皮挂什么科zhiyanzhang.com
女同学过生日送什么礼物比较好hcv8jop1ns1r.cn 打呼噜吃什么药最管用hcv8jop6ns3r.cn 什么是白脉病hcv7jop6ns9r.cn 6月份有什么节假日hcv7jop9ns8r.cn 青色是什么色hcv8jop1ns8r.cn
ast是什么意思jasonfriends.com 伯伯的老婆叫什么hcv8jop3ns2r.cn 55年属什么生肖mmeoe.com 肛门周边瘙痒擦什么药hcv8jop7ns9r.cn 父母有刑是什么意思hcv9jop4ns8r.cn
前胸后背疼是什么原因hcv8jop0ns4r.cn 天狗是什么意思hcv9jop5ns4r.cn hyper是什么意思hcv9jop4ns3r.cn 前列腺增生有什么症状表现hcv7jop4ns5r.cn 嫉妒是什么意思hcv8jop9ns4r.cn
百度