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