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 | 20620 | void ff_h264_init_cabac_states(const H264Context *h, H264SliceContext *sl) | |
1263 | { | ||
1264 | int i; | ||
1265 | const int8_t (*tab)[2]; | ||
1266 | 20620 | 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 2537 times.
✓ Branch 1 taken 18083 times.
|
20620 | if (sl->slice_type_nos == AV_PICTURE_TYPE_I) tab = cabac_context_init_I; |
1269 | 18083 | else tab = cabac_context_init_PB[sl->cabac_init_idc]; | |
1270 | |||
1271 | /* calculate pre-state */ | ||
1272 |
2/2✓ Branch 0 taken 21114880 times.
✓ Branch 1 taken 20620 times.
|
21135500 | for( i= 0; i < 1024; i++ ) { |
1273 | 21114880 | int pre = 2*(((tab[i][0] * slice_qp) >>4 ) + tab[i][1]) - 127; | |
1274 | |||
1275 | 21114880 | pre^= pre>>31; | |
1276 |
2/2✓ Branch 0 taken 353555 times.
✓ Branch 1 taken 20761325 times.
|
21114880 | if(pre > 124) |
1277 | 353555 | pre= 124 + (pre&1); | |
1278 | |||
1279 | 21114880 | sl->cabac_state[i] = pre; | |
1280 | } | ||
1281 | 20620 | } | |
1282 | |||
1283 | 4281123 | 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 | 4281123 | return (a & 0xFF) + (b << 8); | |
1289 | #endif | ||
1290 | } | ||
1291 | |||
1292 | 807673 | static int decode_cabac_field_decoding_flag(const H264Context *h, H264SliceContext *sl) | |
1293 | { | ||
1294 | 807673 | const int mbb_xy = sl->mb_xy - 2*h->mb_stride; | |
1295 | |||
1296 | 807673 | unsigned long ctx = 0; | |
1297 | |||
1298 | 807673 | 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 | 807673 | ctx += (h->cur_pic.mb_type[mbb_xy] >> 7) & (h->slice_table[mbb_xy] == sl->slice_num); | |
1300 | |||
1301 | 807673 | return get_cabac_noinline( &sl->cabac, &(sl->cabac_state+70)[ctx] ); | |
1302 | } | ||
1303 | |||
1304 | 2595216 | static int decode_cabac_intra_mb_type(H264SliceContext *sl, | |
1305 | int ctx_base, int intra_slice) | ||
1306 | { | ||
1307 | 2595216 | uint8_t *state= &sl->cabac_state[ctx_base]; | |
1308 | int mb_type; | ||
1309 | |||
1310 |
2/2✓ Branch 0 taken 1573842 times.
✓ Branch 1 taken 1021374 times.
|
2595216 | if(intra_slice){ |
1311 | 1573842 | int ctx=0; | |
1312 |
2/2✓ Branch 0 taken 348342 times.
✓ Branch 1 taken 1225500 times.
|
1573842 | if (sl->left_type[LTOP] & (MB_TYPE_INTRA16x16|MB_TYPE_INTRA_PCM)) |
1313 | 348342 | ctx++; | |
1314 |
2/2✓ Branch 0 taken 336384 times.
✓ Branch 1 taken 1237458 times.
|
1573842 | if (sl->top_type & (MB_TYPE_INTRA16x16|MB_TYPE_INTRA_PCM)) |
1315 | 336384 | ctx++; | |
1316 |
2/2✓ Branch 1 taken 1217741 times.
✓ Branch 2 taken 356101 times.
|
1573842 | if( get_cabac_noinline( &sl->cabac, &state[ctx] ) == 0 ) |
1317 | 1217741 | return 0; /* I4x4 */ | |
1318 | 356101 | state += 2; | |
1319 | }else{ | ||
1320 |
2/2✓ Branch 1 taken 667815 times.
✓ Branch 2 taken 353559 times.
|
1021374 | if( get_cabac_noinline( &sl->cabac, state ) == 0 ) |
1321 | 667815 | return 0; /* I4x4 */ | |
1322 | } | ||
1323 | |||
1324 |
2/2✓ Branch 1 taken 5659 times.
✓ Branch 2 taken 704001 times.
|
709660 | if( get_cabac_terminate( &sl->cabac ) ) |
1325 | 5659 | return 25; /* PCM */ | |
1326 | |||
1327 | 704001 | mb_type = 1; /* I16x16 */ | |
1328 | 704001 | mb_type += 12 * get_cabac_noinline( &sl->cabac, &state[1] ); /* cbp_luma != 0 */ | |
1329 |
2/2✓ Branch 1 taken 281587 times.
✓ Branch 2 taken 422414 times.
|
704001 | if( get_cabac_noinline( &sl->cabac, &state[2] ) ) /* cbp_chroma */ |
1330 | 281587 | mb_type += 4 + 4 * get_cabac_noinline( &sl->cabac, &state[2+intra_slice] ); | |
1331 | 704001 | mb_type += 2 * get_cabac_noinline( &sl->cabac, &state[3+intra_slice] ); | |
1332 | 704001 | mb_type += 1 * get_cabac_noinline( &sl->cabac, &state[3+2*intra_slice] ); | |
1333 | 704001 | return mb_type; | |
1334 | } | ||
1335 | |||
1336 | 8706723 | 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 | 8706723 | int ctx = 0; | |
1341 | |||
1342 |
2/2✓ Branch 0 taken 1372860 times.
✓ Branch 1 taken 7333863 times.
|
8706723 | if (FRAME_MBAFF(h)) { //FIXME merge with the stuff in fill_caches? |
1343 | 1372860 | int mb_xy = mb_x + (mb_y&~1)*h->mb_stride; | |
1344 | 1372860 | mba_xy = mb_xy - 1; | |
1345 |
2/2✓ Branch 0 taken 686430 times.
✓ Branch 1 taken 686430 times.
|
1372860 | if( (mb_y&1) |
1346 |
2/2✓ Branch 0 taken 668340 times.
✓ Branch 1 taken 18090 times.
|
686430 | && h->slice_table[mba_xy] == sl->slice_num |
1347 |
2/2✓ Branch 0 taken 541072 times.
✓ Branch 1 taken 127268 times.
|
668340 | && MB_FIELD(sl) == !!IS_INTERLACED( h->cur_pic.mb_type[mba_xy] ) ) |
1348 | 541072 | mba_xy += h->mb_stride; | |
1349 |
2/2✓ Branch 0 taken 374001 times.
✓ Branch 1 taken 998859 times.
|
1372860 | if (MB_FIELD(sl)) { |
1350 | 374001 | mbb_xy = mb_xy - h->mb_stride; | |
1351 |
2/2✓ Branch 0 taken 186703 times.
✓ Branch 1 taken 187298 times.
|
374001 | if( !(mb_y&1) |
1352 |
2/2✓ Branch 0 taken 166327 times.
✓ Branch 1 taken 20376 times.
|
186703 | && h->slice_table[mbb_xy] == sl->slice_num |
1353 |
2/2✓ Branch 0 taken 83155 times.
✓ Branch 1 taken 83172 times.
|
166327 | && IS_INTERLACED( h->cur_pic.mb_type[mbb_xy] ) ) |
1354 | 83155 | mbb_xy -= h->mb_stride; | |
1355 | }else | ||
1356 | 998859 | mbb_xy = mb_x + (mb_y-1)*h->mb_stride; | |
1357 | }else{ | ||
1358 | 7333863 | int mb_xy = sl->mb_xy; | |
1359 | 7333863 | mba_xy = mb_xy - 1; | |
1360 | 7333863 | mbb_xy = mb_xy - (h->mb_stride << FIELD_PICTURE(h)); | |
1361 | } | ||
1362 | |||
1363 |
4/4✓ Branch 0 taken 8479585 times.
✓ Branch 1 taken 227138 times.
✓ Branch 2 taken 5436110 times.
✓ Branch 3 taken 3043475 times.
|
8706723 | if( h->slice_table[mba_xy] == sl->slice_num && !IS_SKIP(h->cur_pic.mb_type[mba_xy] )) |
1364 | 5436110 | ctx++; | |
1365 |
4/4✓ Branch 0 taken 8003855 times.
✓ Branch 1 taken 702868 times.
✓ Branch 2 taken 5193868 times.
✓ Branch 3 taken 2809987 times.
|
8706723 | if( h->slice_table[mbb_xy] == sl->slice_num && !IS_SKIP(h->cur_pic.mb_type[mbb_xy] )) |
1366 | 5193868 | ctx++; | |
1367 | |||
1368 |
2/2✓ Branch 0 taken 5029458 times.
✓ Branch 1 taken 3677265 times.
|
8706723 | if (sl->slice_type_nos == AV_PICTURE_TYPE_B) |
1369 | 5029458 | ctx += 13; | |
1370 | 8706723 | return get_cabac_noinline( &sl->cabac, &sl->cabac_state[11+ctx] ); | |
1371 | } | ||
1372 | |||
1373 | 18226196 | static int decode_cabac_mb_intra4x4_pred_mode(H264SliceContext *sl, int pred_mode) | |
1374 | { | ||
1375 | 18226196 | int mode = 0; | |
1376 | |||
1377 |
2/2✓ Branch 1 taken 10001948 times.
✓ Branch 2 taken 8224248 times.
|
18226196 | if( get_cabac( &sl->cabac, &sl->cabac_state[68] ) ) |
1378 | 10001948 | return pred_mode; | |
1379 | |||
1380 | 8224248 | mode += 1 * get_cabac( &sl->cabac, &sl->cabac_state[69] ); | |
1381 | 8224248 | mode += 2 * get_cabac( &sl->cabac, &sl->cabac_state[69] ); | |
1382 | 8224248 | mode += 4 * get_cabac( &sl->cabac, &sl->cabac_state[69] ); | |
1383 | |||
1384 | 8224248 | return mode + ( mode >= pred_mode ); | |
1385 | } | ||
1386 | |||
1387 | 2495920 | static int decode_cabac_mb_chroma_pre_mode(const H264Context *h, H264SliceContext *sl) | |
1388 | { | ||
1389 | 2495920 | const int mba_xy = sl->left_mb_xy[0]; | |
1390 | 2495920 | const int mbb_xy = sl->top_mb_xy; | |
1391 | |||
1392 | 2495920 | 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 2446443 times.
✓ Branch 1 taken 49477 times.
✓ Branch 2 taken 928442 times.
✓ Branch 3 taken 1518001 times.
|
2495920 | if (sl->left_type[LTOP] && h->chroma_pred_mode_table[mba_xy] != 0) |
1396 | 928442 | ctx++; | |
1397 | |||
1398 |
4/4✓ Branch 0 taken 2323807 times.
✓ Branch 1 taken 172113 times.
✓ Branch 2 taken 837843 times.
✓ Branch 3 taken 1485964 times.
|
2495920 | if (sl->top_type && h->chroma_pred_mode_table[mbb_xy] != 0) |
1399 | 837843 | ctx++; | |
1400 | |||
1401 |
2/2✓ Branch 1 taken 1380106 times.
✓ Branch 2 taken 1115814 times.
|
2495920 | if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[64+ctx] ) == 0 ) |
1402 | 1380106 | return 0; | |
1403 | |||
1404 |
2/2✓ Branch 1 taken 626260 times.
✓ Branch 2 taken 489554 times.
|
1115814 | if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[64+3] ) == 0 ) |
1405 | 626260 | return 1; | |
1406 |
2/2✓ Branch 1 taken 281481 times.
✓ Branch 2 taken 208073 times.
|
489554 | if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[64+3] ) == 0 ) |
1407 | 281481 | return 2; | |
1408 | else | ||
1409 | 208073 | return 3; | |
1410 | } | ||
1411 | |||
1412 | 6461563 | static int decode_cabac_mb_cbp_luma(H264SliceContext *sl) | |
1413 | { | ||
1414 | 6461563 | int cbp_b, cbp_a, ctx, cbp = 0; | |
1415 | |||
1416 | 6461563 | cbp_a = sl->left_cbp; | |
1417 | 6461563 | cbp_b = sl->top_cbp; | |
1418 | |||
1419 |
2/2✓ Branch 0 taken 2698877 times.
✓ Branch 1 taken 3762686 times.
|
6461563 | ctx = !(cbp_a & 0x02) + 2 * !(cbp_b & 0x04); |
1420 | 6461563 | cbp += get_cabac_noinline(&sl->cabac, &sl->cabac_state[73 + ctx]); | |
1421 |
2/2✓ Branch 0 taken 2681821 times.
✓ Branch 1 taken 3779742 times.
|
6461563 | ctx = !(cbp & 0x01) + 2 * !(cbp_b & 0x08); |
1422 | 6461563 | cbp += get_cabac_noinline(&sl->cabac, &sl->cabac_state[73 + ctx]) << 1; | |
1423 |
2/2✓ Branch 0 taken 2779569 times.
✓ Branch 1 taken 3681994 times.
|
6461563 | ctx = !(cbp_a & 0x08) + 2 * !(cbp & 0x01); |
1424 | 6461563 | cbp += get_cabac_noinline(&sl->cabac, &sl->cabac_state[73 + ctx]) << 2; | |
1425 |
2/2✓ Branch 0 taken 2759531 times.
✓ Branch 1 taken 3702032 times.
|
6461563 | ctx = !(cbp & 0x04) + 2 * !(cbp & 0x02); |
1426 | 6461563 | cbp += get_cabac_noinline(&sl->cabac, &sl->cabac_state[73 + ctx]) << 3; | |
1427 | 6461563 | return cbp; | |
1428 | } | ||
1429 | 6272793 | static int decode_cabac_mb_cbp_chroma(H264SliceContext *sl) | |
1430 | { | ||
1431 | int ctx; | ||
1432 | int cbp_a, cbp_b; | ||
1433 | |||
1434 | 6272793 | cbp_a = (sl->left_cbp>>4)&0x03; | |
1435 | 6272793 | cbp_b = (sl-> top_cbp>>4)&0x03; | |
1436 | |||
1437 | 6272793 | ctx = 0; | |
1438 |
2/2✓ Branch 0 taken 2712851 times.
✓ Branch 1 taken 3559942 times.
|
6272793 | if( cbp_a > 0 ) ctx++; |
1439 |
2/2✓ Branch 0 taken 2563359 times.
✓ Branch 1 taken 3709434 times.
|
6272793 | if( cbp_b > 0 ) ctx += 2; |
1440 |
2/2✓ Branch 1 taken 3376555 times.
✓ Branch 2 taken 2896238 times.
|
6272793 | if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[77 + ctx] ) == 0 ) |
1441 | 3376555 | return 0; | |
1442 | |||
1443 | 2896238 | ctx = 4; | |
1444 |
2/2✓ Branch 0 taken 1347077 times.
✓ Branch 1 taken 1549161 times.
|
2896238 | if( cbp_a == 2 ) ctx++; |
1445 |
2/2✓ Branch 0 taken 1235329 times.
✓ Branch 1 taken 1660909 times.
|
2896238 | if( cbp_b == 2 ) ctx += 2; |
1446 | 2896238 | return 1 + get_cabac_noinline( &sl->cabac, &sl->cabac_state[77 + ctx] ); | |
1447 | } | ||
1448 | |||
1449 | 2034168 | static int decode_cabac_p_mb_sub_type(H264SliceContext *sl) | |
1450 | { | ||
1451 |
2/2✓ Branch 1 taken 823201 times.
✓ Branch 2 taken 1210967 times.
|
2034168 | if( get_cabac( &sl->cabac, &sl->cabac_state[21] ) ) |
1452 | 823201 | 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 | 1589808 | static int decode_cabac_b_mb_sub_type(H264SliceContext *sl) | |
1460 | { | ||
1461 | int type; | ||
1462 |
2/2✓ Branch 1 taken 161813 times.
✓ Branch 2 taken 1427995 times.
|
1589808 | if( !get_cabac( &sl->cabac, &sl->cabac_state[36] ) ) |
1463 | 161813 | return 0; /* B_Direct_8x8 */ | |
1464 |
2/2✓ Branch 1 taken 298245 times.
✓ Branch 2 taken 1129750 times.
|
1427995 | if( !get_cabac( &sl->cabac, &sl->cabac_state[37] ) ) |
1465 | 298245 | return 1 + get_cabac( &sl->cabac, &sl->cabac_state[39] ); /* B_L0_8x8, B_L1_8x8 */ | |
1466 | 1129750 | type = 3; | |
1467 |
2/2✓ Branch 1 taken 871434 times.
✓ Branch 2 taken 258316 times.
|
1129750 | 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 | 1119303 | type += 2*get_cabac( &sl->cabac, &sl->cabac_state[39] ); | |
1473 | 1119303 | type += get_cabac( &sl->cabac, &sl->cabac_state[39] ); | |
1474 | 1119303 | return type; | |
1475 | } | ||
1476 | |||
1477 | 5536469 | static int decode_cabac_mb_ref(H264SliceContext *sl, int list, int n) | |
1478 | { | ||
1479 | 5536469 | int refa = sl->ref_cache[list][scan8[n] - 1]; | |
1480 | 5536469 | int refb = sl->ref_cache[list][scan8[n] - 8]; | |
1481 | 5536469 | int ref = 0; | |
1482 | 5536469 | int ctx = 0; | |
1483 | |||
1484 |
2/2✓ Branch 0 taken 2469177 times.
✓ Branch 1 taken 3067292 times.
|
5536469 | if (sl->slice_type_nos == AV_PICTURE_TYPE_B) { |
1485 |
4/4✓ Branch 0 taken 730695 times.
✓ Branch 1 taken 1738482 times.
✓ Branch 2 taken 700089 times.
✓ Branch 3 taken 30606 times.
|
2469177 | if( refa > 0 && !(sl->direct_cache[scan8[n] - 1]&(MB_TYPE_DIRECT2>>1)) ) |
1486 | 700089 | ctx++; | |
1487 |
4/4✓ Branch 0 taken 682127 times.
✓ Branch 1 taken 1787050 times.
✓ Branch 2 taken 651209 times.
✓ Branch 3 taken 30918 times.
|
2469177 | if( refb > 0 && !(sl->direct_cache[scan8[n] - 8]&(MB_TYPE_DIRECT2>>1)) ) |
1488 | 651209 | ctx += 2; | |
1489 | } else { | ||
1490 |
2/2✓ Branch 0 taken 1037798 times.
✓ Branch 1 taken 2029494 times.
|
3067292 | if( refa > 0 ) |
1491 | 1037798 | ctx++; | |
1492 |
2/2✓ Branch 0 taken 1007034 times.
✓ Branch 1 taken 2060258 times.
|
3067292 | if( refb > 0 ) |
1493 | 1007034 | ctx += 2; | |
1494 | } | ||
1495 | |||
1496 |
2/2✓ Branch 1 taken 3063490 times.
✓ Branch 2 taken 5536469 times.
|
8599959 | while( get_cabac( &sl->cabac, &sl->cabac_state[54+ctx] ) ) { |
1497 | 3063490 | ref++; | |
1498 | 3063490 | ctx = (ctx>>2)+4; | |
1499 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 3063490 times.
|
3063490 | if(ref >= 32 /*h->ref_list[list]*/){ |
1500 | ✗ | return -1; | |
1501 | } | ||
1502 | } | ||
1503 | 5536469 | return ref; | |
1504 | } | ||
1505 | |||
1506 | 27068218 | 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 16042070 times.
✓ Branch 2 taken 11026148 times.
|
27068218 | 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 | 16042070 | *mvda= 0; | |
1513 | 16042070 | return 0; | |
1514 | } | ||
1515 | |||
1516 | 11026148 | mvd= 1; | |
1517 | 11026148 | ctxbase+= 3; | |
1518 |
4/4✓ Branch 0 taken 49646970 times.
✓ Branch 1 taken 3656314 times.
✓ Branch 3 taken 42277136 times.
✓ Branch 4 taken 7369834 times.
|
53303284 | while( mvd < 9 && get_cabac( &sl->cabac, &sl->cabac_state[ctxbase] ) ) { |
1519 |
2/2✓ Branch 0 taken 20606110 times.
✓ Branch 1 taken 21671026 times.
|
42277136 | if( mvd < 4 ) |
1520 | 20606110 | ctxbase++; | |
1521 | 42277136 | mvd++; | |
1522 | } | ||
1523 | |||
1524 |
2/2✓ Branch 0 taken 3656314 times.
✓ Branch 1 taken 7369834 times.
|
11026148 | if( mvd >= 9 ) { |
1525 | 3656314 | int k = 3; | |
1526 |
2/2✓ Branch 1 taken 4043885 times.
✓ Branch 2 taken 3656314 times.
|
7700199 | while( get_cabac_bypass( &sl->cabac ) ) { |
1527 | 4043885 | mvd += 1 << k; | |
1528 | 4043885 | k++; | |
1529 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 4043885 times.
|
4043885 | 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 15012827 times.
✓ Branch 1 taken 3656314 times.
|
18669141 | while( k-- ) { |
1535 | 15012827 | mvd += get_cabac_bypass( &sl->cabac )<<k; | |
1536 | } | ||
1537 | 3656314 | *mvda=mvd < 70 ? mvd : 70; | |
1538 | }else | ||
1539 | 7369834 | *mvda=mvd; | |
1540 | 11026148 | 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 | 68259808 | 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 | 68259808 | 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 7066406 times.
✓ Branch 1 taken 61193402 times.
|
68259808 | if( is_dc ) { |
1567 |
2/2✓ Branch 0 taken 6355648 times.
✓ Branch 1 taken 710758 times.
|
7066406 | if( cat == 3 ) { |
1568 | 6355648 | idx -= CHROMA_DC_BLOCK_INDEX; | |
1569 | 6355648 | nza = (sl->left_cbp>>(6+idx))&0x01; | |
1570 | 6355648 | nzb = (sl-> top_cbp>>(6+idx))&0x01; | |
1571 | } else { | ||
1572 | 710758 | idx -= LUMA_DC_BLOCK_INDEX; | |
1573 | 710758 | nza = sl->left_cbp&(0x100<<idx); | |
1574 | 710758 | nzb = sl-> top_cbp&(0x100<<idx); | |
1575 | } | ||
1576 | } else { | ||
1577 | 61193402 | nza = sl->non_zero_count_cache[scan8[idx] - 1]; | |
1578 | 61193402 | nzb = sl->non_zero_count_cache[scan8[idx] - 8]; | |
1579 | } | ||
1580 | |||
1581 |
2/2✓ Branch 0 taken 37508413 times.
✓ Branch 1 taken 30751395 times.
|
68259808 | if( nza > 0 ) |
1582 | 37508413 | ctx++; | |
1583 | |||
1584 |
2/2✓ Branch 0 taken 37281825 times.
✓ Branch 1 taken 30977983 times.
|
68259808 | if( nzb > 0 ) |
1585 | 37281825 | ctx += 2; | |
1586 | |||
1587 | 68259808 | return base_ctx[cat] + ctx; | |
1588 | } | ||
1589 | |||
1590 | static av_always_inline void | ||
1591 | 46238723 | 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 | 46238723 | int coeff_count = 0; | |
1639 | 46238723 | 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 | 46238723 | significant_coeff_ctx_base = sl->cabac_state | |
1662 | 46238723 | + significant_coeff_flag_offset[MB_FIELD(sl)][cat]; | |
1663 | 46238723 | last_coeff_ctx_base = sl->cabac_state | |
1664 | 46238723 | + last_coeff_flag_offset[MB_FIELD(sl)][cat]; | |
1665 | 46238723 | abs_level_m1_ctx_base = sl->cabac_state | |
1666 | 46238723 | + coeff_abs_level_m1_offset[cat]; | |
1667 | |||
1668 |
4/4✓ Branch 0 taken 41337760 times.
✓ Branch 1 taken 4900963 times.
✓ Branch 2 taken 5462662 times.
✓ Branch 3 taken 35875098 times.
|
51701385 | 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 | 5462662 | const uint8_t *sig_off = significant_coeff_flag_offset_8x8[MB_FIELD(sl)]; | |
1685 | #ifdef decode_significance | ||
1686 | 5462662 | 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 4900963 times.
✓ Branch 1 taken 35875098 times.
✓ Branch 2 taken 654202 times.
✓ Branch 3 taken 4246761 times.
|
40776061 | 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 | 40121859 | 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 4900963 times.
✓ Branch 1 taken 41337760 times.
|
46238723 | if( is_dc ) { |
1708 |
2/2✓ Branch 0 taken 4428344 times.
✓ Branch 1 taken 472619 times.
|
4900963 | if( cat == 3 ) |
1709 | 4428344 | h->cbp_table[sl->mb_xy] |= 0x40 << (n - CHROMA_DC_BLOCK_INDEX); | |
1710 | else | ||
1711 | 472619 | h->cbp_table[sl->mb_xy] |= 0x100 << (n - LUMA_DC_BLOCK_INDEX); | |
1712 | 4900963 | sl->non_zero_count_cache[scan8[n]] = coeff_count; | |
1713 | } else { | ||
1714 |
2/2✓ Branch 0 taken 5462662 times.
✓ Branch 1 taken 35875098 times.
|
41337760 | if( max_coeff == 64 ) |
1715 | 5462662 | 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 | 35875098 | 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 11015971 times.
✓ Branch 1 taken 35222752 times.
|
46238723 | if (h->pixel_shift) { |
1766 |
23/24✓ Branch 1 taken 35295482 times.
✓ Branch 2 taken 15912944 times.
✓ Branch 3 taken 2637567 times.
✓ Branch 4 taken 32657915 times.
✓ Branch 7 taken 1284423 times.
✓ Branch 8 taken 14628521 times.
✓ Branch 9 taken 806045 times.
✓ Branch 10 taken 478378 times.
✓ Branch 11 taken 37268473 times.
✓ Branch 12 taken 156245 times.
✓ Branch 14 taken 21511774 times.
✓ Branch 15 taken 15756699 times.
✓ Branch 16 taken 156245 times.
✓ Branch 17 taken 15756699 times.
✓ Branch 19 taken 271291 times.
✓ Branch 20 taken 156245 times.
✓ Branch 21 taken 271291 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 271291 times.
✓ Branch 25 taken 156245 times.
✓ Branch 26 taken 1284423 times.
✓ Branch 27 taken 14628521 times.
✓ Branch 30 taken 40192455 times.
✓ Branch 31 taken 11015971 times.
|
73262782 | STORE_BLOCK(int32_t) |
1767 | } else { | ||
1768 |
23/24✓ Branch 1 taken 77594540 times.
✓ Branch 2 taken 36487300 times.
✓ Branch 3 taken 4686016 times.
✓ Branch 4 taken 72908524 times.
✓ Branch 7 taken 3266427 times.
✓ Branch 8 taken 33220873 times.
✓ Branch 9 taken 26404 times.
✓ Branch 10 taken 3240023 times.
✓ Branch 11 taken 122626887 times.
✓ Branch 12 taken 2513636 times.
✓ Branch 14 taken 88653223 times.
✓ Branch 15 taken 33973664 times.
✓ Branch 16 taken 2513636 times.
✓ Branch 17 taken 33973664 times.
✓ Branch 19 taken 7320681 times.
✓ Branch 20 taken 2513636 times.
✓ Branch 21 taken 7320681 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 7320681 times.
✓ Branch 25 taken 2513636 times.
✓ Branch 26 taken 3266427 times.
✓ Branch 27 taken 33220873 times.
✓ Branch 30 taken 78859088 times.
✓ Branch 31 taken 35222752 times.
|
217376425 | 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 | 46238723 | } | |
1777 | |||
1778 | 4246761 | 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 | 4246761 | decode_cabac_residual_internal(h, sl, block, cat, n, scantable, NULL, max_coeff, 1, 0); | |
1786 | 4246761 | } | |
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 | 41337760 | 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 | 41337760 | decode_cabac_residual_internal(h, sl, block, cat, n, scantable, qmul, max_coeff, 0, 0); | |
1807 | 41337760 | } | |
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 | 6295398 | 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 2048637 times.
✓ Branch 3 taken 4246761 times.
|
6295398 | if( get_cabac( &sl->cabac, &sl->cabac_state[get_cabac_cbf_ctx(sl, cat, n, max_coeff, 1)]) == 0 ) { |
1830 | 2048637 | sl->non_zero_count_cache[scan8[n]] = 0; | |
1831 | 2048637 | return; | |
1832 | } | ||
1833 | 4246761 | 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 | 66634373 | 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 5454221 times.
✓ Branch 1 taken 61180152 times.
✓ Branch 2 taken 13250 times.
✓ Branch 3 taken 5440971 times.
✓ Branch 6 taken 25296613 times.
✓ Branch 7 taken 35896789 times.
|
66634373 | 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 25278554 times.
|
25296613 | if( max_coeff == 64 ) { |
1861 | 18059 | fill_rectangle(&sl->non_zero_count_cache[scan8[n]], 2, 2, 8, 0, 1); | |
1862 | } else { | ||
1863 | 25278554 | sl->non_zero_count_cache[scan8[n]] = 0; | |
1864 | } | ||
1865 | 25296613 | return; | |
1866 | } | ||
1867 | 41337760 | decode_cabac_residual_nondc_internal(h, sl, block, cat, n, scantable, qmul, max_coeff); | |
1868 | } | ||
1869 | |||
1870 | 6154932 | 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 5971048 times.
✓ Branch 1 taken 183884 times.
|
6154932 | int qscale = p == 0 ? sl->qscale : sl->chroma_qp[p - 1]; |
1878 |
2/2✓ Branch 0 taken 710758 times.
✓ Branch 1 taken 5444174 times.
|
6154932 | if( IS_INTRA16x16( mb_type ) ) { |
1879 | 710758 | AV_ZERO128(sl->mb_luma_dc[p]+0); | |
1880 | 710758 | AV_ZERO128(sl->mb_luma_dc[p]+8); | |
1881 | 710758 | AV_ZERO128(sl->mb_luma_dc[p]+16); | |
1882 | 710758 | AV_ZERO128(sl->mb_luma_dc[p]+24); | |
1883 | 710758 | 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 349425 times.
✓ Branch 1 taken 361333 times.
|
710758 | if( cbp&15 ) { |
1886 | 349425 | qmul = h->ps.pps->dequant4_coeff[p][qscale]; | |
1887 |
2/2✓ Branch 0 taken 5590800 times.
✓ Branch 1 taken 349425 times.
|
5940225 | for( i4x4 = 0; i4x4 < 16; i4x4++ ) { |
1888 | 5590800 | const int index = 16*p + i4x4; | |
1889 | 5590800 | 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 | 361333 | fill_rectangle(&sl->non_zero_count_cache[scan8[16*p]], 4, 4, 8, 0, 1); | |
1893 | } | ||
1894 | } else { | ||
1895 |
2/2✓ Branch 0 taken 1775470 times.
✓ Branch 1 taken 3668704 times.
|
5444174 | int cqm = (IS_INTRA( mb_type ) ? 0:3) + p; |
1896 |
2/2✓ Branch 0 taken 21776696 times.
✓ Branch 1 taken 5444174 times.
|
27220870 | for( i8x8 = 0; i8x8 < 4; i8x8++ ) { |
1897 |
2/2✓ Branch 0 taken 15280524 times.
✓ Branch 1 taken 6496172 times.
|
21776696 | if( cbp & (1<<i8x8) ) { |
1898 |
2/2✓ Branch 0 taken 5480721 times.
✓ Branch 1 taken 9799803 times.
|
15280524 | if( IS_8x8DCT(mb_type) ) { |
1899 | 5480721 | const int index = 16*p + 4*i8x8; | |
1900 | 5480721 | decode_cabac_residual_nondc(h, sl, sl->mb + (16*index << pixel_shift), ctx_cat[3][p], index, | |
1901 | 5480721 | scan8x8, h->ps.pps->dequant8_coeff[cqm][qscale], 64); | |
1902 | } else { | ||
1903 | 9799803 | qmul = h->ps.pps->dequant4_coeff[cqm][qscale]; | |
1904 |
2/2✓ Branch 0 taken 39199212 times.
✓ Branch 1 taken 9799803 times.
|
48999015 | for( i4x4 = 0; i4x4 < 4; i4x4++ ) { |
1905 | 39199212 | const int index = 16*p + 4*i8x8 + i4x4; | |
1906 | 39199212 | 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 | 6496172 | fill_rectangle(&sl->non_zero_count_cache[scan8[4*i8x8+16*p]], 2, 2, 8, 0, 1); | |
1911 | } | ||
1912 | } | ||
1913 | } | ||
1914 | 6154932 | } | |
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 | 10280565 | int ff_h264_decode_mb_cabac(const H264Context *h, H264SliceContext *sl) | |
1921 | { | ||
1922 | 10280565 | const SPS *sps = h->ps.sps; | |
1923 | int mb_xy; | ||
1924 | 10280565 | int mb_type, partition_count, cbp = 0; | |
1925 | 10280565 | int dct8x8_allowed = h->ps.pps->transform_8x8_mode; | |
1926 |
4/4✓ Branch 0 taken 712939 times.
✓ Branch 1 taken 9567626 times.
✓ Branch 2 taken 477512 times.
✓ Branch 3 taken 235427 times.
|
10280565 | const int decode_chroma = sps->chroma_format_idc == 1 || sps->chroma_format_idc == 2; |
1927 | 10280565 | const int pixel_shift = h->pixel_shift; | |
1928 | |||
1929 | 10280565 | 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 8706723 times.
✓ Branch 1 taken 1573842 times.
|
10280565 | 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 1372860 times.
✓ Branch 1 taken 7333863 times.
✓ Branch 2 taken 686430 times.
✓ Branch 3 taken 686430 times.
✓ Branch 4 taken 139851 times.
✓ Branch 5 taken 546579 times.
|
8706723 | if (FRAME_MBAFF(h) && (sl->mb_y & 1) == 1 && sl->prev_mb_skipped) |
1936 | 139851 | skip = sl->next_mb_skipped; | |
1937 | else | ||
1938 | 8566872 | skip = decode_cabac_mb_skip(h, sl, sl->mb_x, sl->mb_y ); | |
1939 | /* read skip flags */ | ||
1940 |
2/2✓ Branch 0 taken 3109342 times.
✓ Branch 1 taken 5597381 times.
|
8706723 | if( skip ) { |
1941 |
4/4✓ Branch 0 taken 273036 times.
✓ Branch 1 taken 2836306 times.
✓ Branch 2 taken 139851 times.
✓ Branch 3 taken 133185 times.
|
3109342 | if (FRAME_MBAFF(h) && (sl->mb_y & 1) == 0) { |
1942 | 139851 | h->cur_pic.mb_type[mb_xy] = MB_TYPE_SKIP; | |
1943 | 139851 | sl->next_mb_skipped = decode_cabac_mb_skip(h, sl, sl->mb_x, sl->mb_y+1 ); | |
1944 |
2/2✓ Branch 0 taken 44944 times.
✓ Branch 1 taken 94907 times.
|
139851 | if(!sl->next_mb_skipped) |
1945 | 44944 | sl->mb_mbaff = sl->mb_field_decoding_flag = decode_cabac_field_decoding_flag(h, sl); | |
1946 | } | ||
1947 | |||
1948 | 3109342 | decode_mb_skip(h, sl); | |
1949 | |||
1950 | 3109342 | h->cbp_table[mb_xy] = 0; | |
1951 | 3109342 | h->chroma_pred_mode_table[mb_xy] = 0; | |
1952 | 3109342 | sl->last_qscale_diff = 0; | |
1953 | |||
1954 | 3109342 | return 0; | |
1955 | |||
1956 | } | ||
1957 | } | ||
1958 |
2/2✓ Branch 0 taken 1532124 times.
✓ Branch 1 taken 5639099 times.
|
7171223 | if (FRAME_MBAFF(h)) { |
1959 |
2/2✓ Branch 0 taken 762729 times.
✓ Branch 1 taken 769395 times.
|
1532124 | if ((sl->mb_y & 1) == 0) |
1960 | 762729 | sl->mb_mbaff = | |
1961 | 762729 | sl->mb_field_decoding_flag = decode_cabac_field_decoding_flag(h, sl); | |
1962 | } | ||
1963 | |||
1964 | 7171223 | sl->prev_mb_skipped = 0; | |
1965 | |||
1966 | 7171223 | fill_decode_neighbors(h, sl, -(MB_FIELD(sl))); | |
1967 | |||
1968 |
2/2✓ Branch 0 taken 2887226 times.
✓ Branch 1 taken 4283997 times.
|
7171223 | if (sl->slice_type_nos == AV_PICTURE_TYPE_B) { |
1969 | 2887226 | int ctx = 0; | |
1970 | av_assert2(sl->slice_type_nos == AV_PICTURE_TYPE_B); | ||
1971 | |||
1972 |
2/2✓ Branch 0 taken 2063024 times.
✓ Branch 1 taken 824202 times.
|
2887226 | if (!IS_DIRECT(sl->left_type[LTOP] - 1)) |
1973 | 2063024 | ctx++; | |
1974 |
2/2✓ Branch 0 taken 1925902 times.
✓ Branch 1 taken 961324 times.
|
2887226 | if (!IS_DIRECT(sl->top_type - 1)) |
1975 | 1925902 | ctx++; | |
1976 | |||
1977 |
2/2✓ Branch 1 taken 507798 times.
✓ Branch 2 taken 2379428 times.
|
2887226 | if( !get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+ctx] ) ){ |
1978 | 507798 | mb_type= 0; /* B_Direct_16x16 */ | |
1979 |
2/2✓ Branch 1 taken 890133 times.
✓ Branch 2 taken 1489295 times.
|
2379428 | }else if( !get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+3] ) ) { |
1980 | 890133 | mb_type= 1 + get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] ); /* B_L[01]_16x16 */ | |
1981 | }else{ | ||
1982 | int bits; | ||
1983 | 1489295 | bits = get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+4] ) << 3; | |
1984 | 1489295 | bits+= get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] ) << 2; | |
1985 | 1489295 | bits+= get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] ) << 1; | |
1986 | 1489295 | bits+= get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] ); | |
1987 |
2/2✓ Branch 0 taken 447916 times.
✓ Branch 1 taken 1041379 times.
|
1489295 | if( bits < 8 ){ |
1988 | 447916 | mb_type= bits + 3; /* B_Bi_16x16 through B_L1_L0_16x8 */ | |
1989 |
2/2✓ Branch 0 taken 490846 times.
✓ Branch 1 taken 550533 times.
|
1041379 | }else if( bits == 13 ){ |
1990 | 490846 | mb_type = decode_cabac_intra_mb_type(sl, 32, 0); | |
1991 | 490846 | goto decode_intra_mb; | |
1992 |
2/2✓ Branch 0 taken 15714 times.
✓ Branch 1 taken 534819 times.
|
550533 | }else if( bits == 14 ){ |
1993 | 15714 | mb_type= 11; /* B_L1_L0_8x16 */ | |
1994 |
2/2✓ Branch 0 taken 397452 times.
✓ Branch 1 taken 137367 times.
|
534819 | }else if( bits == 15 ){ |
1995 | 397452 | mb_type= 22; /* B_8x8 */ | |
1996 | }else{ | ||
1997 | 137367 | bits= ( bits<<1 ) + get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] ); | |
1998 | 137367 | mb_type= bits - 4; /* B_L0_Bi_* through B_Bi_Bi_* */ | |
1999 | } | ||
2000 | } | ||
2001 | 2396380 | partition_count = ff_h264_b_mb_type_info[mb_type].partition_count; | |
2002 | 2396380 | mb_type = ff_h264_b_mb_type_info[mb_type].type; | |
2003 |
2/2✓ Branch 0 taken 2710155 times.
✓ Branch 1 taken 1573842 times.
|
4283997 | } else if (sl->slice_type_nos == AV_PICTURE_TYPE_P) { |
2004 |
2/2✓ Branch 1 taken 2179627 times.
✓ Branch 2 taken 530528 times.
|
2710155 | if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[14] ) == 0 ) { |
2005 | /* P-type */ | ||
2006 |
2/2✓ Branch 1 taken 1832651 times.
✓ Branch 2 taken 346976 times.
|
2179627 | if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[15] ) == 0 ) { |
2007 | /* P_L0_D16x16, P_8x8 */ | ||
2008 | 1832651 | mb_type= 3 * get_cabac_noinline( &sl->cabac, &sl->cabac_state[16] ); | |
2009 | } else { | ||
2010 | /* P_L0_D8x16, P_L0_D16x8 */ | ||
2011 | 346976 | mb_type= 2 - get_cabac_noinline( &sl->cabac, &sl->cabac_state[17] ); | |
2012 | } | ||
2013 | 2179627 | partition_count = ff_h264_p_mb_type_info[mb_type].partition_count; | |
2014 | 2179627 | mb_type = ff_h264_p_mb_type_info[mb_type].type; | |
2015 | } else { | ||
2016 | 530528 | mb_type = decode_cabac_intra_mb_type(sl, 17, 0); | |
2017 | 530528 | goto decode_intra_mb; | |
2018 | } | ||
2019 | } else { | ||
2020 | 1573842 | mb_type = decode_cabac_intra_mb_type(sl, 3, 1); | |
2021 |
1/4✓ Branch 0 taken 1573842 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1573842 | 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 | 1573842 | decode_intra_mb: | |
2025 | 2595216 | partition_count = 0; | |
2026 | 2595216 | cbp = ff_h264_i_mb_type_info[mb_type].cbp; | |
2027 | 2595216 | sl->intra16x16_pred_mode = ff_h264_i_mb_type_info[mb_type].pred_mode; | |
2028 | 2595216 | mb_type = ff_h264_i_mb_type_info[mb_type].type; | |
2029 | } | ||
2030 |
2/2✓ Branch 0 taken 2814646 times.
✓ Branch 1 taken 4356577 times.
|
7171223 | if (MB_FIELD(sl)) |
2031 | 2814646 | mb_type |= MB_TYPE_INTERLACED; | |
2032 | |||
2033 | 7171223 | h->slice_table[mb_xy] = sl->slice_num; | |
2034 | |||
2035 |
2/2✓ Branch 0 taken 5659 times.
✓ Branch 1 taken 7165564 times.
|
7171223 | 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 | 7165564 | fill_decode_caches(h, sl, mb_type); | |
2073 | |||
2074 |
2/2✓ Branch 0 taken 2589557 times.
✓ Branch 1 taken 4576007 times.
|
7165564 | if( IS_INTRA( mb_type ) ) { |
2075 | int i, pred_mode; | ||
2076 |
2/2✓ Branch 0 taken 1885556 times.
✓ Branch 1 taken 704001 times.
|
2589557 | if( IS_INTRA4x4( mb_type ) ) { |
2077 |
4/4✓ Branch 0 taken 1602415 times.
✓ Branch 1 taken 283141 times.
✓ Branch 3 taken 995225 times.
✓ Branch 4 taken 607190 times.
|
1885556 | if (dct8x8_allowed && get_cabac_noinline(&sl->cabac, &sl->cabac_state[399 + sl->neighbor_transform_size])) { |
2078 | 995225 | mb_type |= MB_TYPE_8x8DCT; | |
2079 |
2/2✓ Branch 0 taken 3980900 times.
✓ Branch 1 taken 995225 times.
|
4976125 | for( i = 0; i < 16; i+=4 ) { |
2080 | 3980900 | int pred = pred_intra_mode(h, sl, i); | |
2081 | 3980900 | int mode = decode_cabac_mb_intra4x4_pred_mode(sl, pred); | |
2082 | 3980900 | fill_rectangle(&sl->intra4x4_pred_mode_cache[scan8[i]], 2, 2, 8, mode, 1); | |
2083 | } | ||
2084 | } else { | ||
2085 |
2/2✓ Branch 0 taken 14245296 times.
✓ Branch 1 taken 890331 times.
|
15135627 | for( i = 0; i < 16; i++ ) { |
2086 | 14245296 | int pred = pred_intra_mode(h, sl, i); | |
2087 | 14245296 | 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 | 1885556 | write_back_intra_pred_mode(h, sl); | |
2094 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1885556 times.
|
1885556 | if (ff_h264_check_intra4x4_pred_mode(sl->intra4x4_pred_mode_cache, h->avctx, |
2095 | 1885556 | sl->top_samples_available, sl->left_samples_available) < 0 ) | |
2096 | ✗ | return -1; | |
2097 | } else { | ||
2098 | 1408002 | sl->intra16x16_pred_mode = ff_h264_check_intra_pred_mode(h->avctx, sl->top_samples_available, | |
2099 | 704001 | sl->left_samples_available, sl->intra16x16_pred_mode, 0); | |
2100 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 704001 times.
|
704001 | if (sl->intra16x16_pred_mode < 0) return -1; |
2101 | } | ||
2102 |
2/2✓ Branch 0 taken 2495920 times.
✓ Branch 1 taken 93637 times.
|
2589557 | if(decode_chroma){ |
2103 | 2495920 | h->chroma_pred_mode_table[mb_xy] = | |
2104 | 2495920 | pred_mode = decode_cabac_mb_chroma_pre_mode(h, sl); | |
2105 | |||
2106 | 2495920 | pred_mode= ff_h264_check_intra_pred_mode(h->avctx, sl->top_samples_available, | |
2107 | 2495920 | sl->left_samples_available, pred_mode, 1 ); | |
2108 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2495920 times.
|
2495920 | if( pred_mode < 0 ) return -1; |
2109 | 2495920 | sl->chroma_pred_mode = pred_mode; | |
2110 | } else { | ||
2111 | 93637 | sl->chroma_pred_mode = DC_128_PRED8x8; | |
2112 | } | ||
2113 |
2/2✓ Branch 0 taken 905994 times.
✓ Branch 1 taken 3670013 times.
|
4576007 | } else if( partition_count == 4 ) { |
2114 | int i, j, sub_partition_count[4], list, ref[2][4]; | ||
2115 | |||
2116 |
2/2✓ Branch 0 taken 397452 times.
✓ Branch 1 taken 508542 times.
|
905994 | if (sl->slice_type_nos == AV_PICTURE_TYPE_B ) { |
2117 |
2/2✓ Branch 0 taken 1589808 times.
✓ Branch 1 taken 397452 times.
|
1987260 | for( i = 0; i < 4; i++ ) { |
2118 | 1589808 | sl->sub_mb_type[i] = decode_cabac_b_mb_sub_type(sl); | |
2119 | 1589808 | sub_partition_count[i] = ff_h264_b_sub_mb_type_info[sl->sub_mb_type[i]].partition_count; | |
2120 | 1589808 | 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 79619 times.
✓ Branch 1 taken 317833 times.
|
397452 | 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 | 79619 | ff_h264_pred_direct_motion(h, sl, &mb_type); | |
2125 | 79619 | sl->ref_cache[0][scan8[4]] = | |
2126 | 79619 | sl->ref_cache[1][scan8[4]] = | |
2127 | 79619 | sl->ref_cache[0][scan8[12]] = | |
2128 | 79619 | sl->ref_cache[1][scan8[12]] = PART_NOT_AVAILABLE; | |
2129 |
2/2✓ Branch 0 taken 318476 times.
✓ Branch 1 taken 79619 times.
|
398095 | for( i = 0; i < 4; i++ ) |
2130 | 318476 | 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 2034168 times.
✓ Branch 1 taken 508542 times.
|
2542710 | for( i = 0; i < 4; i++ ) { |
2134 | 2034168 | sl->sub_mb_type[i] = decode_cabac_p_mb_sub_type(sl); | |
2135 | 2034168 | sub_partition_count[i] = ff_h264_p_sub_mb_type_info[sl->sub_mb_type[i]].partition_count; | |
2136 | 2034168 | 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 1303446 times.
✓ Branch 1 taken 905994 times.
|
2209440 | for( list = 0; list < sl->list_count; list++ ) { |
2141 |
2/2✓ Branch 0 taken 5213784 times.
✓ Branch 1 taken 1303446 times.
|
6517230 | for( i = 0; i < 4; i++ ) { |
2142 |
2/2✓ Branch 0 taken 323626 times.
✓ Branch 1 taken 4890158 times.
|
5213784 | if(IS_DIRECT(sl->sub_mb_type[i])) continue; |
2143 |
2/2✓ Branch 0 taken 4458355 times.
✓ Branch 1 taken 431803 times.
|
4890158 | if(IS_DIR(sl->sub_mb_type[i], 0, list)){ |
2144 | 4458355 | unsigned rc = sl->ref_count[list] << MB_MBAFF(sl); | |
2145 |
2/2✓ Branch 0 taken 2955534 times.
✓ Branch 1 taken 1502821 times.
|
4458355 | if (rc > 1) { |
2146 | 2955534 | ref[list][i] = decode_cabac_mb_ref(sl, list, 4 * i); | |
2147 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2955534 times.
|
2955534 | 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 | 1502821 | ref[list][i] = 0; | |
2153 | } else { | ||
2154 | 431803 | ref[list][i] = -1; | |
2155 | } | ||
2156 | 4890158 | sl->ref_cache[list][scan8[4 * i] + 1] = | |
2157 | 4890158 | 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 243949 times.
✓ Branch 1 taken 662045 times.
|
905994 | if(dct8x8_allowed) |
2162 | 243949 | dct8x8_allowed = get_dct8x8_allowed(h, sl); | |
2163 | |||
2164 |
2/2✓ Branch 0 taken 1303446 times.
✓ Branch 1 taken 905994 times.
|
2209440 | for (list = 0; list < sl->list_count; list++) { |
2165 |
2/2✓ Branch 0 taken 5213784 times.
✓ Branch 1 taken 1303446 times.
|
6517230 | for(i=0; i<4; i++){ |
2166 | 5213784 | sl->ref_cache[list][scan8[4 * i]] = sl->ref_cache[list][scan8[4 * i] + 1]; | |
2167 |
2/2✓ Branch 0 taken 323626 times.
✓ Branch 1 taken 4890158 times.
|
5213784 | if(IS_DIRECT(sl->sub_mb_type[i])){ |
2168 | 323626 | fill_rectangle(sl->mvd_cache[list][scan8[4*i]], 2, 2, 8, 0, 2); | |
2169 | 323626 | continue; | |
2170 | } | ||
2171 | |||
2172 |
3/4✓ Branch 0 taken 4458355 times.
✓ Branch 1 taken 431803 times.
✓ Branch 2 taken 4458355 times.
✗ Branch 3 not taken.
|
9348513 | if(IS_DIR(sl->sub_mb_type[i], 0, list) && !IS_DIRECT(sl->sub_mb_type[i])){ |
2173 | 4458355 | const int sub_mb_type= sl->sub_mb_type[i]; | |
2174 |
2/2✓ Branch 0 taken 3272755 times.
✓ Branch 1 taken 1185600 times.
|
4458355 | const int block_width= (sub_mb_type & (MB_TYPE_16x16|MB_TYPE_16x8)) ? 2 : 1; |
2175 |
2/2✓ Branch 0 taken 9252986 times.
✓ Branch 1 taken 4458355 times.
|
13711341 | for(j=0; j<sub_partition_count[i]; j++){ |
2176 | int mpx, mpy; | ||
2177 | int mx, my; | ||
2178 | 9252986 | const int index= 4*i + block_width*j; | |
2179 | 9252986 | int16_t (* mv_cache)[2] = &sl->mv_cache[list][ scan8[index] ]; | |
2180 | 9252986 | uint8_t (* mvd_cache)[2]= &sl->mvd_cache[list][ scan8[index] ]; | |
2181 | 9252986 | pred_motion(h, sl, index, block_width, list, sl->ref_cache[list][ scan8[index] ], &mx, &my); | |
2182 |
2/4✓ Branch 2 taken 9252986 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 9252986 times.
|
9252986 | 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 1446234 times.
✓ Branch 1 taken 7806752 times.
|
9252986 | if(IS_SUB_8X8(sub_mb_type)){ |
2186 | 1446234 | mv_cache[ 1 ][0]= | |
2187 | 1446234 | mv_cache[ 8 ][0]= mv_cache[ 9 ][0]= mx; | |
2188 | 1446234 | mv_cache[ 1 ][1]= | |
2189 | 1446234 | mv_cache[ 8 ][1]= mv_cache[ 9 ][1]= my; | |
2190 | |||
2191 | 1446234 | mvd_cache[ 1 ][0]= | |
2192 | 1446234 | mvd_cache[ 8 ][0]= mvd_cache[ 9 ][0]= mpx; | |
2193 | 1446234 | mvd_cache[ 1 ][1]= | |
2194 | 1446234 | 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 | 9252986 | mv_cache[ 0 ][0]= mx; | |
2209 | 9252986 | mv_cache[ 0 ][1]= my; | |
2210 | |||
2211 | 9252986 | mvd_cache[ 0 ][0]= mpx; | |
2212 | 9252986 | mvd_cache[ 0 ][1]= mpy; | |
2213 | } | ||
2214 | }else{ | ||
2215 | 431803 | fill_rectangle(sl->mv_cache [list][ scan8[4*i] ], 2, 2, 8, 0, 4); | |
2216 | 431803 | fill_rectangle(sl->mvd_cache[list][ scan8[4*i] ], 2, 2, 8, 0, 2); | |
2217 | } | ||
2218 | } | ||
2219 | } | ||
2220 |
2/2✓ Branch 0 taken 507798 times.
✓ Branch 1 taken 3162215 times.
|
3670013 | } else if( IS_DIRECT(mb_type) ) { |
2221 | 507798 | ff_h264_pred_direct_motion(h, sl, &mb_type); | |
2222 | 507798 | fill_rectangle(sl->mvd_cache[0][scan8[0]], 4, 4, 8, 0, 2); | |
2223 | 507798 | fill_rectangle(sl->mvd_cache[1][scan8[0]], 4, 4, 8, 0, 2); | |
2224 | 507798 | dct8x8_allowed &= sps->direct_8x8_inference_flag; | |
2225 | } else { | ||
2226 | int list, i; | ||
2227 |
2/2✓ Branch 0 taken 2425015 times.
✓ Branch 1 taken 737200 times.
|
3162215 | if(IS_16X16(mb_type)){ |
2228 |
2/2✓ Branch 0 taken 3525921 times.
✓ Branch 1 taken 2425015 times.
|
5950936 | for (list = 0; list < sl->list_count; list++) { |
2229 |
2/2✓ Branch 0 taken 2635788 times.
✓ Branch 1 taken 890133 times.
|
3525921 | if(IS_DIR(mb_type, 0, list)){ |
2230 | int ref; | ||
2231 | 2635788 | unsigned rc = sl->ref_count[list] << MB_MBAFF(sl); | |
2232 |
2/2✓ Branch 0 taken 1571892 times.
✓ Branch 1 taken 1063896 times.
|
2635788 | if (rc > 1) { |
2233 | 1571892 | ref= decode_cabac_mb_ref(sl, list, 0); | |
2234 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1571892 times.
|
1571892 | if (ref >= rc) { |
2235 | ✗ | av_log(h->avctx, AV_LOG_ERROR, "Reference %d >= %d\n", ref, rc); | |
2236 | ✗ | return -1; | |
2237 | } | ||
2238 | }else | ||
2239 | 1063896 | ref=0; | |
2240 | 2635788 | fill_rectangle(&sl->ref_cache[list][ scan8[0] ], 4, 4, 8, ref, 1); | |
2241 | } | ||
2242 | } | ||
2243 |
2/2✓ Branch 0 taken 3525921 times.
✓ Branch 1 taken 2425015 times.
|
5950936 | for (list = 0; list < sl->list_count; list++) { |
2244 |
2/2✓ Branch 0 taken 2635788 times.
✓ Branch 1 taken 890133 times.
|
3525921 | if(IS_DIR(mb_type, 0, list)){ |
2245 | int mx,my,mpx,mpy; | ||
2246 | 2635788 | pred_motion(h, sl, 0, 4, list, sl->ref_cache[list][ scan8[0] ], &mx, &my); | |
2247 |
2/4✓ Branch 2 taken 2635788 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2635788 times.
|
2635788 | DECODE_CABAC_MB_MVD(sl, list, 0) |
2248 | ff_tlog(h->avctx, "final mv:%d %d\n", mx, my); | ||
2249 | |||
2250 | 2635788 | fill_rectangle(sl->mvd_cache[list][ scan8[0] ], 4, 4, 8, pack8to16(mpx,mpy), 2); | |
2251 | 2635788 | fill_rectangle(sl->mv_cache[list][ scan8[0] ], 4, 4, 8, pack16to32(mx,my), 4); | |
2252 | } | ||
2253 | } | ||
2254 | } | ||
2255 |
2/2✓ Branch 0 taken 386474 times.
✓ Branch 1 taken 350726 times.
|
737200 | else if(IS_16X8(mb_type)){ |
2256 |
2/2✓ Branch 0 taken 597242 times.
✓ Branch 1 taken 386474 times.
|
983716 | for (list = 0; list < sl->list_count; list++) { |
2257 |
2/2✓ Branch 0 taken 1194484 times.
✓ Branch 1 taken 597242 times.
|
1791726 | for(i=0; i<2; i++){ |
2258 |
2/2✓ Branch 0 taken 865848 times.
✓ Branch 1 taken 328636 times.
|
1194484 | if(IS_DIR(mb_type, i, list)){ |
2259 | int ref; | ||
2260 | 865848 | unsigned rc = sl->ref_count[list] << MB_MBAFF(sl); | |
2261 |
2/2✓ Branch 0 taken 546052 times.
✓ Branch 1 taken 319796 times.
|
865848 | if (rc > 1) { |
2262 | 546052 | ref= decode_cabac_mb_ref(sl, list, 8 * i); | |
2263 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 546052 times.
|
546052 | if (ref >= rc) { |
2264 | ✗ | av_log(h->avctx, AV_LOG_ERROR, "Reference %d >= %d\n", ref, rc); | |
2265 | ✗ | return -1; | |
2266 | } | ||
2267 | }else | ||
2268 | 319796 | ref=0; | |
2269 | 865848 | fill_rectangle(&sl->ref_cache[list][ scan8[0] + 16*i ], 4, 2, 8, ref, 1); | |
2270 | }else | ||
2271 | 328636 | 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 597242 times.
✓ Branch 1 taken 386474 times.
|
983716 | for (list = 0; list < sl->list_count; list++) { |
2275 |
2/2✓ Branch 0 taken 1194484 times.
✓ Branch 1 taken 597242 times.
|
1791726 | for(i=0; i<2; i++){ |
2276 |
2/2✓ Branch 0 taken 865848 times.
✓ Branch 1 taken 328636 times.
|
1194484 | if(IS_DIR(mb_type, i, list)){ |
2277 | int mx,my,mpx,mpy; | ||
2278 | 865848 | pred_16x8_motion(h, sl, 8*i, list, sl->ref_cache[list][scan8[0] + 16*i], &mx, &my); | |
2279 |
2/4✓ Branch 2 taken 865848 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 865848 times.
|
865848 | DECODE_CABAC_MB_MVD(sl, list, 8*i) |
2280 | ff_tlog(h->avctx, "final mv:%d %d\n", mx, my); | ||
2281 | |||
2282 | 865848 | fill_rectangle(sl->mvd_cache[list][ scan8[0] + 16*i ], 4, 2, 8, pack8to16(mpx,mpy), 2); | |
2283 | 865848 | fill_rectangle(sl->mv_cache[list][ scan8[0] + 16*i ], 4, 2, 8, pack16to32(mx,my), 4); | |
2284 | }else{ | ||
2285 | 328636 | fill_rectangle(sl->mvd_cache[list][ scan8[0] + 16*i ], 4, 2, 8, 0, 2); | |
2286 | 328636 | 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 530182 times.
✓ Branch 1 taken 350726 times.
|
880908 | for (list = 0; list < sl->list_count; list++) { |
2293 |
2/2✓ Branch 0 taken 1060364 times.
✓ Branch 1 taken 530182 times.
|
1590546 | for(i=0; i<2; i++){ |
2294 |
2/2✓ Branch 0 taken 779487 times.
✓ Branch 1 taken 280877 times.
|
1060364 | if(IS_DIR(mb_type, i, list)){ //FIXME optimize |
2295 | int ref; | ||
2296 | 779487 | unsigned rc = sl->ref_count[list] << MB_MBAFF(sl); | |
2297 |
2/2✓ Branch 0 taken 462991 times.
✓ Branch 1 taken 316496 times.
|
779487 | if (rc > 1) { |
2298 | 462991 | ref = decode_cabac_mb_ref(sl, list, 4 * i); | |
2299 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 462991 times.
|
462991 | if (ref >= rc) { |
2300 | ✗ | av_log(h->avctx, AV_LOG_ERROR, "Reference %d >= %d\n", ref, rc); | |
2301 | ✗ | return -1; | |
2302 | } | ||
2303 | }else | ||
2304 | 316496 | ref=0; | |
2305 | 779487 | fill_rectangle(&sl->ref_cache[list][ scan8[0] + 2*i ], 2, 4, 8, ref, 1); | |
2306 | }else | ||
2307 | 280877 | 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 530182 times.
✓ Branch 1 taken 350726 times.
|
880908 | for (list = 0; list < sl->list_count; list++) { |
2311 |
2/2✓ Branch 0 taken 1060364 times.
✓ Branch 1 taken 530182 times.
|
1590546 | for(i=0; i<2; i++){ |
2312 |
2/2✓ Branch 0 taken 779487 times.
✓ Branch 1 taken 280877 times.
|
1060364 | if(IS_DIR(mb_type, i, list)){ |
2313 | int mx,my,mpx,mpy; | ||
2314 | 779487 | pred_8x16_motion(h, sl, i*4, list, sl->ref_cache[list][ scan8[0] + 2*i ], &mx, &my); | |
2315 |
2/4✓ Branch 2 taken 779487 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 779487 times.
|
779487 | DECODE_CABAC_MB_MVD(sl, list, 4*i) |
2316 | |||
2317 | ff_tlog(h->avctx, "final mv:%d %d\n", mx, my); | ||
2318 | 779487 | fill_rectangle(sl->mvd_cache[list][ scan8[0] + 2*i ], 2, 4, 8, pack8to16(mpx,mpy), 2); | |
2319 | 779487 | fill_rectangle(sl->mv_cache[list][ scan8[0] + 2*i ], 2, 4, 8, pack16to32(mx,my), 4); | |
2320 | }else{ | ||
2321 | 280877 | fill_rectangle(sl->mvd_cache[list][ scan8[0] + 2*i ], 2, 4, 8, 0, 2); | |
2322 | 280877 | 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 4576007 times.
✓ Branch 1 taken 2589557 times.
|
7165564 | if( IS_INTER( mb_type ) ) { |
2330 | 4576007 | h->chroma_pred_mode_table[mb_xy] = 0; | |
2331 | 4576007 | write_back_motion(h, sl, mb_type); | |
2332 | } | ||
2333 | |||
2334 |
2/2✓ Branch 0 taken 6461563 times.
✓ Branch 1 taken 704001 times.
|
7165564 | if( !IS_INTRA16x16( mb_type ) ) { |
2335 | 6461563 | cbp = decode_cabac_mb_cbp_luma(sl); | |
2336 |
2/2✓ Branch 0 taken 6272793 times.
✓ Branch 1 taken 188770 times.
|
6461563 | if(decode_chroma) |
2337 | 6272793 | cbp |= decode_cabac_mb_cbp_chroma(sl) << 4; | |
2338 | } else { | ||
2339 |
4/4✓ Branch 0 taken 6527 times.
✓ Branch 1 taken 697474 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 6526 times.
|
704001 | 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 | 7165563 | h->cbp_table[mb_xy] = sl->cbp = cbp; | |
2346 | |||
2347 |
6/6✓ Branch 0 taken 4480937 times.
✓ Branch 1 taken 2684626 times.
✓ Branch 2 taken 3236218 times.
✓ Branch 3 taken 1244719 times.
✓ Branch 4 taken 1547655 times.
✓ Branch 5 taken 1688563 times.
|
7165563 | if( dct8x8_allowed && (cbp&15) && !IS_INTRA( mb_type ) ) { |
2348 | 1547655 | 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 7012571 times.
✓ Branch 2 taken 58789 times.
✓ Branch 3 taken 94203 times.
|
7165563 | 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 | 7165563 | h->cur_pic.mb_type[mb_xy] = mb_type; | |
2393 | |||
2394 |
4/4✓ Branch 0 taken 1475628 times.
✓ Branch 1 taken 5689935 times.
✓ Branch 2 taken 281113 times.
✓ Branch 3 taken 1194515 times.
|
13136611 | 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 934276 times.
✓ Branch 1 taken 5036772 times.
✓ Branch 3 taken 1129002 times.
✓ Branch 4 taken 4842046 times.
|
5971048 | if(get_cabac_noinline( &sl->cabac, &sl->cabac_state[60 + (sl->last_qscale_diff != 0)])){ |
2400 | 1129002 | int val = 1; | |
2401 | 1129002 | int ctx= 2; | |
2402 | 1129002 | const int max_qp = 51 + 6*(sps->bit_depth_luma-8); | |
2403 | |||
2404 |
2/2✓ Branch 1 taken 6627722 times.
✓ Branch 2 taken 1129002 times.
|
7756724 | while( get_cabac_noinline( &sl->cabac, &sl->cabac_state[60 + ctx] ) ) { |
2405 | 6627722 | ctx= 3; | |
2406 | 6627722 | val++; | |
2407 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 6627722 times.
|
6627722 | 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 561940 times.
✓ Branch 1 taken 567062 times.
|
1129002 | if( val&0x01 ) |
2414 | 561940 | val= (val + 1)>>1 ; | |
2415 | else | ||
2416 | 567062 | val= -((val + 1)>>1); | |
2417 | 1129002 | sl->last_qscale_diff = val; | |
2418 | 1129002 | sl->qscale += val; | |
2419 |
2/2✓ Branch 0 taken 10602 times.
✓ Branch 1 taken 1118400 times.
|
1129002 | 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 | 1129002 | sl->chroma_qp[0] = get_chroma_qp(h->ps.pps, 0, sl->qscale); | |
2424 | 1129002 | sl->chroma_qp[1] = get_chroma_qp(h->ps.pps, 1, sl->qscale); | |
2425 | }else | ||
2426 | 4842046 | sl->last_qscale_diff=0; | |
2427 | |||
2428 |
2/2✓ Branch 0 taken 2331965 times.
✓ Branch 1 taken 3639083 times.
|
5971048 | if(IS_INTERLACED(mb_type)){ |
2429 |
2/2✓ Branch 0 taken 2331931 times.
✓ Branch 1 taken 34 times.
|
2331965 | scan8x8 = sl->qscale ? h->field_scan8x8 : h->field_scan8x8_q0; |
2430 |
2/2✓ Branch 0 taken 2331931 times.
✓ Branch 1 taken 34 times.
|
2331965 | scan = sl->qscale ? h->field_scan : h->field_scan_q0; |
2431 | }else{ | ||
2432 |
2/2✓ Branch 0 taken 3547071 times.
✓ Branch 1 taken 92012 times.
|
3639083 | scan8x8 = sl->qscale ? h->zigzag_scan8x8 : h->zigzag_scan8x8_q0; |
2433 |
2/2✓ Branch 0 taken 3547071 times.
✓ Branch 1 taken 92012 times.
|
3639083 | scan = sl->qscale ? h->zigzag_scan : h->zigzag_scan_q0; |
2434 | } | ||
2435 | |||
2436 | 5971048 | 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 5879106 times.
|
5971048 | 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 5413916 times.
|
5879106 | } 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 2792320 times.
✓ Branch 1 taken 2621596 times.
|
5413916 | if( cbp&0x30 ){ |
2468 | int c; | ||
2469 |
2/2✓ Branch 0 taken 5584640 times.
✓ Branch 1 taken 2792320 times.
|
8376960 | for (c = 0; c < 2; c++) |
2470 | 5584640 | 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 1469387 times.
✓ Branch 1 taken 3944529 times.
|
5413916 | if( cbp&0x20 ) { |
2475 | int c, i; | ||
2476 |
2/2✓ Branch 0 taken 2938774 times.
✓ Branch 1 taken 1469387 times.
|
4408161 | for( c = 0; c < 2; c++ ) { |
2477 |
2/2✓ Branch 0 taken 1599424 times.
✓ Branch 1 taken 1339350 times.
|
2938774 | qmul = h->ps.pps->dequant4_coeff[c+1+(IS_INTRA( mb_type ) ? 0:3)][sl->chroma_qp[c]]; |
2478 |
2/2✓ Branch 0 taken 11755096 times.
✓ Branch 1 taken 2938774 times.
|
14693870 | for( i = 0; i < 4; i++ ) { |
2479 | 11755096 | const int index = 16 + 16 * c + i; | |
2480 | 11755096 | decode_cabac_residual_nondc(h, sl, sl->mb + (16*index << pixel_shift), 4, index, scan + 1, qmul, 15); | |
2481 | } | ||
2482 | } | ||
2483 | } else { | ||
2484 | 3944529 | fill_rectangle(&sl->non_zero_count_cache[scan8[16]], 4, 4, 8, 0, 1); | |
2485 | 3944529 | fill_rectangle(&sl->non_zero_count_cache[scan8[32]], 4, 4, 8, 0, 1); | |
2486 | } | ||
2487 | } | ||
2488 | } else { | ||
2489 | 1194515 | fill_rectangle(&sl->non_zero_count_cache[scan8[ 0]], 4, 4, 8, 0, 1); | |
2490 | 1194515 | fill_rectangle(&sl->non_zero_count_cache[scan8[16]], 4, 4, 8, 0, 1); | |
2491 | 1194515 | fill_rectangle(&sl->non_zero_count_cache[scan8[32]], 4, 4, 8, 0, 1); | |
2492 | 1194515 | sl->last_qscale_diff = 0; | |
2493 | } | ||
2494 | |||
2495 | 7165563 | h->cur_pic.qscale_table[mb_xy] = sl->qscale; | |
2496 | 7165563 | write_back_non_zero_count(h, sl); | |
2497 | |||
2498 | 7165563 | return 0; | |
2499 | } | ||
2500 |