Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
52867 views
1
/*****************************************************************************
2
* cabac.c: arithmetic coder
3
*****************************************************************************
4
* Copyright (C) 2003-2016 x264 project
5
*
6
* Authors: Laurent Aimar <[email protected]>
7
* Loren Merritt <[email protected]>
8
* Fiona Glaser <[email protected]>
9
*
10
* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation; either version 2 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the GNU General Public License
21
* along with this program; if not, write to the Free Software
22
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
23
*
24
* This program is also available under a commercial proprietary license.
25
* For more information, contact us at [email protected].
26
*****************************************************************************/
27
28
#include "common.h"
29
30
31
static const int8_t x264_cabac_context_init_I[1024][2] =
32
{
33
/* 0 - 10 */
34
{ 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
35
{ 2, 54 }, { 3, 74 }, { -28,127 }, { -23, 104 },
36
{ -6, 53 }, { -1, 54 }, { 7, 51 },
37
38
/* 11 - 23 unused for I */
39
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
40
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
41
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
42
{ 0, 0 },
43
44
/* 24- 39 */
45
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
46
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
47
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
48
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
49
50
/* 40 - 53 */
51
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
52
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
53
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
54
{ 0, 0 }, { 0, 0 },
55
56
/* 54 - 59 */
57
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
58
{ 0, 0 }, { 0, 0 },
59
60
/* 60 - 69 */
61
{ 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
62
{ -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
63
{ 13, 41 }, { 3, 62 },
64
65
/* 70 -> 87 */
66
{ 0, 11 }, { 1, 55 }, { 0, 69 }, { -17, 127 },
67
{ -13, 102 },{ 0, 82 }, { -7, 74 }, { -21, 107 },
68
{ -27, 127 },{ -31, 127 },{ -24, 127 }, { -18, 95 },
69
{ -27, 127 },{ -21, 114 },{ -30, 127 }, { -17, 123 },
70
{ -12, 115 },{ -16, 122 },
71
72
/* 88 -> 104 */
73
{ -11, 115 },{ -12, 63 }, { -2, 68 }, { -15, 84 },
74
{ -13, 104 },{ -3, 70 }, { -8, 93 }, { -10, 90 },
75
{ -30, 127 },{ -1, 74 }, { -6, 97 }, { -7, 91 },
76
{ -20, 127 },{ -4, 56 }, { -5, 82 }, { -7, 76 },
77
{ -22, 125 },
78
79
/* 105 -> 135 */
80
{ -7, 93 }, { -11, 87 }, { -3, 77 }, { -5, 71 },
81
{ -4, 63 }, { -4, 68 }, { -12, 84 }, { -7, 62 },
82
{ -7, 65 }, { 8, 61 }, { 5, 56 }, { -2, 66 },
83
{ 1, 64 }, { 0, 61 }, { -2, 78 }, { 1, 50 },
84
{ 7, 52 }, { 10, 35 }, { 0, 44 }, { 11, 38 },
85
{ 1, 45 }, { 0, 46 }, { 5, 44 }, { 31, 17 },
86
{ 1, 51 }, { 7, 50 }, { 28, 19 }, { 16, 33 },
87
{ 14, 62 }, { -13, 108 },{ -15, 100 },
88
89
/* 136 -> 165 */
90
{ -13, 101 },{ -13, 91 }, { -12, 94 }, { -10, 88 },
91
{ -16, 84 }, { -10, 86 }, { -7, 83 }, { -13, 87 },
92
{ -19, 94 }, { 1, 70 }, { 0, 72 }, { -5, 74 },
93
{ 18, 59 }, { -8, 102 }, { -15, 100 }, { 0, 95 },
94
{ -4, 75 }, { 2, 72 }, { -11, 75 }, { -3, 71 },
95
{ 15, 46 }, { -13, 69 }, { 0, 62 }, { 0, 65 },
96
{ 21, 37 }, { -15, 72 }, { 9, 57 }, { 16, 54 },
97
{ 0, 62 }, { 12, 72 },
98
99
/* 166 -> 196 */
100
{ 24, 0 }, { 15, 9 }, { 8, 25 }, { 13, 18 },
101
{ 15, 9 }, { 13, 19 }, { 10, 37 }, { 12, 18 },
102
{ 6, 29 }, { 20, 33 }, { 15, 30 }, { 4, 45 },
103
{ 1, 58 }, { 0, 62 }, { 7, 61 }, { 12, 38 },
104
{ 11, 45 }, { 15, 39 }, { 11, 42 }, { 13, 44 },
105
{ 16, 45 }, { 12, 41 }, { 10, 49 }, { 30, 34 },
106
{ 18, 42 }, { 10, 55 }, { 17, 51 }, { 17, 46 },
107
{ 0, 89 }, { 26, -19 }, { 22, -17 },
108
109
/* 197 -> 226 */
110
{ 26, -17 }, { 30, -25 }, { 28, -20 }, { 33, -23 },
111
{ 37, -27 }, { 33, -23 }, { 40, -28 }, { 38, -17 },
112
{ 33, -11 }, { 40, -15 }, { 41, -6 }, { 38, 1 },
113
{ 41, 17 }, { 30, -6 }, { 27, 3 }, { 26, 22 },
114
{ 37, -16 }, { 35, -4 }, { 38, -8 }, { 38, -3 },
115
{ 37, 3 }, { 38, 5 }, { 42, 0 }, { 35, 16 },
116
{ 39, 22 }, { 14, 48 }, { 27, 37 }, { 21, 60 },
117
{ 12, 68 }, { 2, 97 },
118
119
/* 227 -> 251 */
120
{ -3, 71 }, { -6, 42 }, { -5, 50 }, { -3, 54 },
121
{ -2, 62 }, { 0, 58 }, { 1, 63 }, { -2, 72 },
122
{ -1, 74 }, { -9, 91 }, { -5, 67 }, { -5, 27 },
123
{ -3, 39 }, { -2, 44 }, { 0, 46 }, { -16, 64 },
124
{ -8, 68 }, { -10, 78 }, { -6, 77 }, { -10, 86 },
125
{ -12, 92 }, { -15, 55 }, { -10, 60 }, { -6, 62 },
126
{ -4, 65 },
127
128
/* 252 -> 275 */
129
{ -12, 73 }, { -8, 76 }, { -7, 80 }, { -9, 88 },
130
{ -17, 110 },{ -11, 97 }, { -20, 84 }, { -11, 79 },
131
{ -6, 73 }, { -4, 74 }, { -13, 86 }, { -13, 96 },
132
{ -11, 97 }, { -19, 117 },{ -8, 78 }, { -5, 33 },
133
{ -4, 48 }, { -2, 53 }, { -3, 62 }, { -13, 71 },
134
{ -10, 79 }, { -12, 86 }, { -13, 90 }, { -14, 97 },
135
136
/* 276 a bit special (not used, x264_cabac_encode_bypass is used instead) */
137
{ 0, 0 },
138
139
/* 277 -> 307 */
140
{ -6, 93 }, { -6, 84 }, { -8, 79 }, { 0, 66 },
141
{ -1, 71 }, { 0, 62 }, { -2, 60 }, { -2, 59 },
142
{ -5, 75 }, { -3, 62 }, { -4, 58 }, { -9, 66 },
143
{ -1, 79 }, { 0, 71 }, { 3, 68 }, { 10, 44 },
144
{ -7, 62 }, { 15, 36 }, { 14, 40 }, { 16, 27 },
145
{ 12, 29 }, { 1, 44 }, { 20, 36 }, { 18, 32 },
146
{ 5, 42 }, { 1, 48 }, { 10, 62 }, { 17, 46 },
147
{ 9, 64 }, { -12, 104 },{ -11, 97 },
148
149
/* 308 -> 337 */
150
{ -16, 96 }, { -7, 88 }, { -8, 85 }, { -7, 85 },
151
{ -9, 85 }, { -13, 88 }, { 4, 66 }, { -3, 77 },
152
{ -3, 76 }, { -6, 76 }, { 10, 58 }, { -1, 76 },
153
{ -1, 83 }, { -7, 99 }, { -14, 95 }, { 2, 95 },
154
{ 0, 76 }, { -5, 74 }, { 0, 70 }, { -11, 75 },
155
{ 1, 68 }, { 0, 65 }, { -14, 73 }, { 3, 62 },
156
{ 4, 62 }, { -1, 68 }, { -13, 75 }, { 11, 55 },
157
{ 5, 64 }, { 12, 70 },
158
159
/* 338 -> 368 */
160
{ 15, 6 }, { 6, 19 }, { 7, 16 }, { 12, 14 },
161
{ 18, 13 }, { 13, 11 }, { 13, 15 }, { 15, 16 },
162
{ 12, 23 }, { 13, 23 }, { 15, 20 }, { 14, 26 },
163
{ 14, 44 }, { 17, 40 }, { 17, 47 }, { 24, 17 },
164
{ 21, 21 }, { 25, 22 }, { 31, 27 }, { 22, 29 },
165
{ 19, 35 }, { 14, 50 }, { 10, 57 }, { 7, 63 },
166
{ -2, 77 }, { -4, 82 }, { -3, 94 }, { 9, 69 },
167
{ -12, 109 },{ 36, -35 }, { 36, -34 },
168
169
/* 369 -> 398 */
170
{ 32, -26 }, { 37, -30 }, { 44, -32 }, { 34, -18 },
171
{ 34, -15 }, { 40, -15 }, { 33, -7 }, { 35, -5 },
172
{ 33, 0 }, { 38, 2 }, { 33, 13 }, { 23, 35 },
173
{ 13, 58 }, { 29, -3 }, { 26, 0 }, { 22, 30 },
174
{ 31, -7 }, { 35, -15 }, { 34, -3 }, { 34, 3 },
175
{ 36, -1 }, { 34, 5 }, { 32, 11 }, { 35, 5 },
176
{ 34, 12 }, { 39, 11 }, { 30, 29 }, { 34, 26 },
177
{ 29, 39 }, { 19, 66 },
178
179
/* 399 -> 435 */
180
{ 31, 21 }, { 31, 31 }, { 25, 50 },
181
{ -17, 120 }, { -20, 112 }, { -18, 114 }, { -11, 85 },
182
{ -15, 92 }, { -14, 89 }, { -26, 71 }, { -15, 81 },
183
{ -14, 80 }, { 0, 68 }, { -14, 70 }, { -24, 56 },
184
{ -23, 68 }, { -24, 50 }, { -11, 74 }, { 23, -13 },
185
{ 26, -13 }, { 40, -15 }, { 49, -14 }, { 44, 3 },
186
{ 45, 6 }, { 44, 34 }, { 33, 54 }, { 19, 82 },
187
{ -3, 75 }, { -1, 23 }, { 1, 34 }, { 1, 43 },
188
{ 0, 54 }, { -2, 55 }, { 0, 61 }, { 1, 64 },
189
{ 0, 68 }, { -9, 92 },
190
191
/* 436 -> 459 */
192
{ -14, 106 }, { -13, 97 }, { -15, 90 }, { -12, 90 },
193
{ -18, 88 }, { -10, 73 }, { -9, 79 }, { -14, 86 },
194
{ -10, 73 }, { -10, 70 }, { -10, 69 }, { -5, 66 },
195
{ -9, 64 }, { -5, 58 }, { 2, 59 }, { 21, -10 },
196
{ 24, -11 }, { 28, -8 }, { 28, -1 }, { 29, 3 },
197
{ 29, 9 }, { 35, 20 }, { 29, 36 }, { 14, 67 },
198
199
/* 460 -> 1024 */
200
{ -17, 123 }, { -12, 115 }, { -16, 122 }, { -11, 115 },
201
{ -12, 63 }, { -2, 68 }, { -15, 84 }, { -13, 104 },
202
{ -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 },
203
{ -17, 123 }, { -12, 115 }, { -16, 122 }, { -11, 115 },
204
{ -12, 63 }, { -2, 68 }, { -15, 84 }, { -13, 104 },
205
{ -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 },
206
{ -7, 93 }, { -11, 87 }, { -3, 77 }, { -5, 71 },
207
{ -4, 63 }, { -4, 68 }, { -12, 84 }, { -7, 62 },
208
{ -7, 65 }, { 8, 61 }, { 5, 56 }, { -2, 66 },
209
{ 1, 64 }, { 0, 61 }, { -2, 78 }, { 1, 50 },
210
{ 7, 52 }, { 10, 35 }, { 0, 44 }, { 11, 38 },
211
{ 1, 45 }, { 0, 46 }, { 5, 44 }, { 31, 17 },
212
{ 1, 51 }, { 7, 50 }, { 28, 19 }, { 16, 33 },
213
{ 14, 62 }, { -13, 108 }, { -15, 100 }, { -13, 101 },
214
{ -13, 91 }, { -12, 94 }, { -10, 88 }, { -16, 84 },
215
{ -10, 86 }, { -7, 83 }, { -13, 87 }, { -19, 94 },
216
{ 1, 70 }, { 0, 72 }, { -5, 74 }, { 18, 59 },
217
{ -7, 93 }, { -11, 87 }, { -3, 77 }, { -5, 71 },
218
{ -4, 63 }, { -4, 68 }, { -12, 84 }, { -7, 62 },
219
{ -7, 65 }, { 8, 61 }, { 5, 56 }, { -2, 66 },
220
{ 1, 64 }, { 0, 61 }, { -2, 78 }, { 1, 50 },
221
{ 7, 52 }, { 10, 35 }, { 0, 44 }, { 11, 38 },
222
{ 1, 45 }, { 0, 46 }, { 5, 44 }, { 31, 17 },
223
{ 1, 51 }, { 7, 50 }, { 28, 19 }, { 16, 33 },
224
{ 14, 62 }, { -13, 108 }, { -15, 100 }, { -13, 101 },
225
{ -13, 91 }, { -12, 94 }, { -10, 88 }, { -16, 84 },
226
{ -10, 86 }, { -7, 83 }, { -13, 87 }, { -19, 94 },
227
{ 1, 70 }, { 0, 72 }, { -5, 74 }, { 18, 59 },
228
{ 24, 0 }, { 15, 9 }, { 8, 25 }, { 13, 18 },
229
{ 15, 9 }, { 13, 19 }, { 10, 37 }, { 12, 18 },
230
{ 6, 29 }, { 20, 33 }, { 15, 30 }, { 4, 45 },
231
{ 1, 58 }, { 0, 62 }, { 7, 61 }, { 12, 38 },
232
{ 11, 45 }, { 15, 39 }, { 11, 42 }, { 13, 44 },
233
{ 16, 45 }, { 12, 41 }, { 10, 49 }, { 30, 34 },
234
{ 18, 42 }, { 10, 55 }, { 17, 51 }, { 17, 46 },
235
{ 0, 89 }, { 26, -19 }, { 22, -17 }, { 26, -17 },
236
{ 30, -25 }, { 28, -20 }, { 33, -23 }, { 37, -27 },
237
{ 33, -23 }, { 40, -28 }, { 38, -17 }, { 33, -11 },
238
{ 40, -15 }, { 41, -6 }, { 38, 1 }, { 41, 17 },
239
{ 24, 0 }, { 15, 9 }, { 8, 25 }, { 13, 18 },
240
{ 15, 9 }, { 13, 19 }, { 10, 37 }, { 12, 18 },
241
{ 6, 29 }, { 20, 33 }, { 15, 30 }, { 4, 45 },
242
{ 1, 58 }, { 0, 62 }, { 7, 61 }, { 12, 38 },
243
{ 11, 45 }, { 15, 39 }, { 11, 42 }, { 13, 44 },
244
{ 16, 45 }, { 12, 41 }, { 10, 49 }, { 30, 34 },
245
{ 18, 42 }, { 10, 55 }, { 17, 51 }, { 17, 46 },
246
{ 0, 89 }, { 26, -19 }, { 22, -17 }, { 26, -17 },
247
{ 30, -25 }, { 28, -20 }, { 33, -23 }, { 37, -27 },
248
{ 33, -23 }, { 40, -28 }, { 38, -17 }, { 33, -11 },
249
{ 40, -15 }, { 41, -6 }, { 38, 1 }, { 41, 17 },
250
{ -17, 120 }, { -20, 112 }, { -18, 114 }, { -11, 85 },
251
{ -15, 92 }, { -14, 89 }, { -26, 71 }, { -15, 81 },
252
{ -14, 80 }, { 0, 68 }, { -14, 70 }, { -24, 56 },
253
{ -23, 68 }, { -24, 50 }, { -11, 74 }, { -14, 106 },
254
{ -13, 97 }, { -15, 90 }, { -12, 90 }, { -18, 88 },
255
{ -10, 73 }, { -9, 79 }, { -14, 86 }, { -10, 73 },
256
{ -10, 70 }, { -10, 69 }, { -5, 66 }, { -9, 64 },
257
{ -5, 58 }, { 2, 59 }, { 23, -13 }, { 26, -13 },
258
{ 40, -15 }, { 49, -14 }, { 44, 3 }, { 45, 6 },
259
{ 44, 34 }, { 33, 54 }, { 19, 82 }, { 21, -10 },
260
{ 24, -11 }, { 28, -8 }, { 28, -1 }, { 29, 3 },
261
{ 29, 9 }, { 35, 20 }, { 29, 36 }, { 14, 67 },
262
{ -3, 75 }, { -1, 23 }, { 1, 34 }, { 1, 43 },
263
{ 0, 54 }, { -2, 55 }, { 0, 61 }, { 1, 64 },
264
{ 0, 68 }, { -9, 92 }, { -17, 120 }, { -20, 112 },
265
{ -18, 114 }, { -11, 85 }, { -15, 92 }, { -14, 89 },
266
{ -26, 71 }, { -15, 81 }, { -14, 80 }, { 0, 68 },
267
{ -14, 70 }, { -24, 56 }, { -23, 68 }, { -24, 50 },
268
{ -11, 74 }, { -14, 106 }, { -13, 97 }, { -15, 90 },
269
{ -12, 90 }, { -18, 88 }, { -10, 73 }, { -9, 79 },
270
{ -14, 86 }, { -10, 73 }, { -10, 70 }, { -10, 69 },
271
{ -5, 66 }, { -9, 64 }, { -5, 58 }, { 2, 59 },
272
{ 23, -13 }, { 26, -13 }, { 40, -15 }, { 49, -14 },
273
{ 44, 3 }, { 45, 6 }, { 44, 34 }, { 33, 54 },
274
{ 19, 82 }, { 21, -10 }, { 24, -11 }, { 28, -8 },
275
{ 28, -1 }, { 29, 3 }, { 29, 9 }, { 35, 20 },
276
{ 29, 36 }, { 14, 67 }, { -3, 75 }, { -1, 23 },
277
{ 1, 34 }, { 1, 43 }, { 0, 54 }, { -2, 55 },
278
{ 0, 61 }, { 1, 64 }, { 0, 68 }, { -9, 92 },
279
{ -6, 93 }, { -6, 84 }, { -8, 79 }, { 0, 66 },
280
{ -1, 71 }, { 0, 62 }, { -2, 60 }, { -2, 59 },
281
{ -5, 75 }, { -3, 62 }, { -4, 58 }, { -9, 66 },
282
{ -1, 79 }, { 0, 71 }, { 3, 68 }, { 10, 44 },
283
{ -7, 62 }, { 15, 36 }, { 14, 40 }, { 16, 27 },
284
{ 12, 29 }, { 1, 44 }, { 20, 36 }, { 18, 32 },
285
{ 5, 42 }, { 1, 48 }, { 10, 62 }, { 17, 46 },
286
{ 9, 64 }, { -12, 104 }, { -11, 97 }, { -16, 96 },
287
{ -7, 88 }, { -8, 85 }, { -7, 85 }, { -9, 85 },
288
{ -13, 88 }, { 4, 66 }, { -3, 77 }, { -3, 76 },
289
{ -6, 76 }, { 10, 58 }, { -1, 76 }, { -1, 83 },
290
{ -6, 93 }, { -6, 84 }, { -8, 79 }, { 0, 66 },
291
{ -1, 71 }, { 0, 62 }, { -2, 60 }, { -2, 59 },
292
{ -5, 75 }, { -3, 62 }, { -4, 58 }, { -9, 66 },
293
{ -1, 79 }, { 0, 71 }, { 3, 68 }, { 10, 44 },
294
{ -7, 62 }, { 15, 36 }, { 14, 40 }, { 16, 27 },
295
{ 12, 29 }, { 1, 44 }, { 20, 36 }, { 18, 32 },
296
{ 5, 42 }, { 1, 48 }, { 10, 62 }, { 17, 46 },
297
{ 9, 64 }, { -12, 104 }, { -11, 97 }, { -16, 96 },
298
{ -7, 88 }, { -8, 85 }, { -7, 85 }, { -9, 85 },
299
{ -13, 88 }, { 4, 66 }, { -3, 77 }, { -3, 76 },
300
{ -6, 76 }, { 10, 58 }, { -1, 76 }, { -1, 83 },
301
{ 15, 6 }, { 6, 19 }, { 7, 16 }, { 12, 14 },
302
{ 18, 13 }, { 13, 11 }, { 13, 15 }, { 15, 16 },
303
{ 12, 23 }, { 13, 23 }, { 15, 20 }, { 14, 26 },
304
{ 14, 44 }, { 17, 40 }, { 17, 47 }, { 24, 17 },
305
{ 21, 21 }, { 25, 22 }, { 31, 27 }, { 22, 29 },
306
{ 19, 35 }, { 14, 50 }, { 10, 57 }, { 7, 63 },
307
{ -2, 77 }, { -4, 82 }, { -3, 94 }, { 9, 69 },
308
{ -12, 109 }, { 36, -35 }, { 36, -34 }, { 32, -26 },
309
{ 37, -30 }, { 44, -32 }, { 34, -18 }, { 34, -15 },
310
{ 40, -15 }, { 33, -7 }, { 35, -5 }, { 33, 0 },
311
{ 38, 2 }, { 33, 13 }, { 23, 35 }, { 13, 58 },
312
{ 15, 6 }, { 6, 19 }, { 7, 16 }, { 12, 14 },
313
{ 18, 13 }, { 13, 11 }, { 13, 15 }, { 15, 16 },
314
{ 12, 23 }, { 13, 23 }, { 15, 20 }, { 14, 26 },
315
{ 14, 44 }, { 17, 40 }, { 17, 47 }, { 24, 17 },
316
{ 21, 21 }, { 25, 22 }, { 31, 27 }, { 22, 29 },
317
{ 19, 35 }, { 14, 50 }, { 10, 57 }, { 7, 63 },
318
{ -2, 77 }, { -4, 82 }, { -3, 94 }, { 9, 69 },
319
{ -12, 109 }, { 36, -35 }, { 36, -34 }, { 32, -26 },
320
{ 37, -30 }, { 44, -32 }, { 34, -18 }, { 34, -15 },
321
{ 40, -15 }, { 33, -7 }, { 35, -5 }, { 33, 0 },
322
{ 38, 2 }, { 33, 13 }, { 23, 35 }, { 13, 58 },
323
{ -3, 71 }, { -6, 42 }, { -5, 50 }, { -3, 54 },
324
{ -2, 62 }, { 0, 58 }, { 1, 63 }, { -2, 72 },
325
{ -1, 74 }, { -9, 91 }, { -5, 67 }, { -5, 27 },
326
{ -3, 39 }, { -2, 44 }, { 0, 46 }, { -16, 64 },
327
{ -8, 68 }, { -10, 78 }, { -6, 77 }, { -10, 86 },
328
{ -12, 92 }, { -15, 55 }, { -10, 60 }, { -6, 62 },
329
{ -4, 65 }, { -12, 73 }, { -8, 76 }, { -7, 80 },
330
{ -9, 88 }, { -17, 110 }, { -3, 71 }, { -6, 42 },
331
{ -5, 50 }, { -3, 54 }, { -2, 62 }, { 0, 58 },
332
{ 1, 63 }, { -2, 72 }, { -1, 74 }, { -9, 91 },
333
{ -5, 67 }, { -5, 27 }, { -3, 39 }, { -2, 44 },
334
{ 0, 46 }, { -16, 64 }, { -8, 68 }, { -10, 78 },
335
{ -6, 77 }, { -10, 86 }, { -12, 92 }, { -15, 55 },
336
{ -10, 60 }, { -6, 62 }, { -4, 65 }, { -12, 73 },
337
{ -8, 76 }, { -7, 80 }, { -9, 88 }, { -17, 110 },
338
{ -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 },
339
{ -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 },
340
{ -3, 70 }, { -8, 93 }, { -10, 90 }, { -30, 127 }
341
};
342
343
static const int8_t x264_cabac_context_init_PB[3][1024][2] =
344
{
345
/* i_cabac_init_idc == 0 */
346
{
347
/* 0 - 10 */
348
{ 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
349
{ 2, 54 }, { 3, 74 }, { -28, 127 }, { -23, 104 },
350
{ -6, 53 }, { -1, 54 }, { 7, 51 },
351
352
/* 11 - 23 */
353
{ 23, 33 }, { 23, 2 }, { 21, 0 }, { 1, 9 },
354
{ 0, 49 }, { -37, 118 }, { 5, 57 }, { -13, 78 },
355
{ -11, 65 }, { 1, 62 }, { 12, 49 }, { -4, 73 },
356
{ 17, 50 },
357
358
/* 24 - 39 */
359
{ 18, 64 }, { 9, 43 }, { 29, 0 }, { 26, 67 },
360
{ 16, 90 }, { 9, 104 }, { -46, 127 }, { -20, 104 },
361
{ 1, 67 }, { -13, 78 }, { -11, 65 }, { 1, 62 },
362
{ -6, 86 }, { -17, 95 }, { -6, 61 }, { 9, 45 },
363
364
/* 40 - 53 */
365
{ -3, 69 }, { -6, 81 }, { -11, 96 }, { 6, 55 },
366
{ 7, 67 }, { -5, 86 }, { 2, 88 }, { 0, 58 },
367
{ -3, 76 }, { -10, 94 }, { 5, 54 }, { 4, 69 },
368
{ -3, 81 }, { 0, 88 },
369
370
/* 54 - 59 */
371
{ -7, 67 }, { -5, 74 }, { -4, 74 }, { -5, 80 },
372
{ -7, 72 }, { 1, 58 },
373
374
/* 60 - 69 */
375
{ 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
376
{ -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
377
{ 13, 41 }, { 3, 62 },
378
379
/* 70 - 87 */
380
{ 0, 45 }, { -4, 78 }, { -3, 96 }, { -27, 126 },
381
{ -28, 98 }, { -25, 101 }, { -23, 67 }, { -28, 82 },
382
{ -20, 94 }, { -16, 83 }, { -22, 110 }, { -21, 91 },
383
{ -18, 102 }, { -13, 93 }, { -29, 127 }, { -7, 92 },
384
{ -5, 89 }, { -7, 96 }, { -13, 108 }, { -3, 46 },
385
{ -1, 65 }, { -1, 57 }, { -9, 93 }, { -3, 74 },
386
{ -9, 92 }, { -8, 87 }, { -23, 126 }, { 5, 54 },
387
{ 6, 60 }, { 6, 59 }, { 6, 69 }, { -1, 48 },
388
{ 0, 68 }, { -4, 69 }, { -8, 88 },
389
390
/* 105 -> 165 */
391
{ -2, 85 }, { -6, 78 }, { -1, 75 }, { -7, 77 },
392
{ 2, 54 }, { 5, 50 }, { -3, 68 }, { 1, 50 },
393
{ 6, 42 }, { -4, 81 }, { 1, 63 }, { -4, 70 },
394
{ 0, 67 }, { 2, 57 }, { -2, 76 }, { 11, 35 },
395
{ 4, 64 }, { 1, 61 }, { 11, 35 }, { 18, 25 },
396
{ 12, 24 }, { 13, 29 }, { 13, 36 }, { -10, 93 },
397
{ -7, 73 }, { -2, 73 }, { 13, 46 }, { 9, 49 },
398
{ -7, 100 }, { 9, 53 }, { 2, 53 }, { 5, 53 },
399
{ -2, 61 }, { 0, 56 }, { 0, 56 }, { -13, 63 },
400
{ -5, 60 }, { -1, 62 }, { 4, 57 }, { -6, 69 },
401
{ 4, 57 }, { 14, 39 }, { 4, 51 }, { 13, 68 },
402
{ 3, 64 }, { 1, 61 }, { 9, 63 }, { 7, 50 },
403
{ 16, 39 }, { 5, 44 }, { 4, 52 }, { 11, 48 },
404
{ -5, 60 }, { -1, 59 }, { 0, 59 }, { 22, 33 },
405
{ 5, 44 }, { 14, 43 }, { -1, 78 }, { 0, 60 },
406
{ 9, 69 },
407
408
/* 166 - 226 */
409
{ 11, 28 }, { 2, 40 }, { 3, 44 }, { 0, 49 },
410
{ 0, 46 }, { 2, 44 }, { 2, 51 }, { 0, 47 },
411
{ 4, 39 }, { 2, 62 }, { 6, 46 }, { 0, 54 },
412
{ 3, 54 }, { 2, 58 }, { 4, 63 }, { 6, 51 },
413
{ 6, 57 }, { 7, 53 }, { 6, 52 }, { 6, 55 },
414
{ 11, 45 }, { 14, 36 }, { 8, 53 }, { -1, 82 },
415
{ 7, 55 }, { -3, 78 }, { 15, 46 }, { 22, 31 },
416
{ -1, 84 }, { 25, 7 }, { 30, -7 }, { 28, 3 },
417
{ 28, 4 }, { 32, 0 }, { 34, -1 }, { 30, 6 },
418
{ 30, 6 }, { 32, 9 }, { 31, 19 }, { 26, 27 },
419
{ 26, 30 }, { 37, 20 }, { 28, 34 }, { 17, 70 },
420
{ 1, 67 }, { 5, 59 }, { 9, 67 }, { 16, 30 },
421
{ 18, 32 }, { 18, 35 }, { 22, 29 }, { 24, 31 },
422
{ 23, 38 }, { 18, 43 }, { 20, 41 }, { 11, 63 },
423
{ 9, 59 }, { 9, 64 }, { -1, 94 }, { -2, 89 },
424
{ -9, 108 },
425
426
/* 227 - 275 */
427
{ -6, 76 }, { -2, 44 }, { 0, 45 }, { 0, 52 },
428
{ -3, 64 }, { -2, 59 }, { -4, 70 }, { -4, 75 },
429
{ -8, 82 }, { -17, 102 }, { -9, 77 }, { 3, 24 },
430
{ 0, 42 }, { 0, 48 }, { 0, 55 }, { -6, 59 },
431
{ -7, 71 }, { -12, 83 }, { -11, 87 }, { -30, 119 },
432
{ 1, 58 }, { -3, 29 }, { -1, 36 }, { 1, 38 },
433
{ 2, 43 }, { -6, 55 }, { 0, 58 }, { 0, 64 },
434
{ -3, 74 }, { -10, 90 }, { 0, 70 }, { -4, 29 },
435
{ 5, 31 }, { 7, 42 }, { 1, 59 }, { -2, 58 },
436
{ -3, 72 }, { -3, 81 }, { -11, 97 }, { 0, 58 },
437
{ 8, 5 }, { 10, 14 }, { 14, 18 }, { 13, 27 },
438
{ 2, 40 }, { 0, 58 }, { -3, 70 }, { -6, 79 },
439
{ -8, 85 },
440
441
/* 276 a bit special (not used, x264_cabac_encode_bypass is used instead) */
442
{ 0, 0 },
443
444
/* 277 - 337 */
445
{ -13, 106 }, { -16, 106 }, { -10, 87 }, { -21, 114 },
446
{ -18, 110 }, { -14, 98 }, { -22, 110 }, { -21, 106 },
447
{ -18, 103 }, { -21, 107 }, { -23, 108 }, { -26, 112 },
448
{ -10, 96 }, { -12, 95 }, { -5, 91 }, { -9, 93 },
449
{ -22, 94 }, { -5, 86 }, { 9, 67 }, { -4, 80 },
450
{ -10, 85 }, { -1, 70 }, { 7, 60 }, { 9, 58 },
451
{ 5, 61 }, { 12, 50 }, { 15, 50 }, { 18, 49 },
452
{ 17, 54 }, { 10, 41 }, { 7, 46 }, { -1, 51 },
453
{ 7, 49 }, { 8, 52 }, { 9, 41 }, { 6, 47 },
454
{ 2, 55 }, { 13, 41 }, { 10, 44 }, { 6, 50 },
455
{ 5, 53 }, { 13, 49 }, { 4, 63 }, { 6, 64 },
456
{ -2, 69 }, { -2, 59 }, { 6, 70 }, { 10, 44 },
457
{ 9, 31 }, { 12, 43 }, { 3, 53 }, { 14, 34 },
458
{ 10, 38 }, { -3, 52 }, { 13, 40 }, { 17, 32 },
459
{ 7, 44 }, { 7, 38 }, { 13, 50 }, { 10, 57 },
460
{ 26, 43 },
461
462
/* 338 - 398 */
463
{ 14, 11 }, { 11, 14 }, { 9, 11 }, { 18, 11 },
464
{ 21, 9 }, { 23, -2 }, { 32, -15 }, { 32, -15 },
465
{ 34, -21 }, { 39, -23 }, { 42, -33 }, { 41, -31 },
466
{ 46, -28 }, { 38, -12 }, { 21, 29 }, { 45, -24 },
467
{ 53, -45 }, { 48, -26 }, { 65, -43 }, { 43, -19 },
468
{ 39, -10 }, { 30, 9 }, { 18, 26 }, { 20, 27 },
469
{ 0, 57 }, { -14, 82 }, { -5, 75 }, { -19, 97 },
470
{ -35, 125 }, { 27, 0 }, { 28, 0 }, { 31, -4 },
471
{ 27, 6 }, { 34, 8 }, { 30, 10 }, { 24, 22 },
472
{ 33, 19 }, { 22, 32 }, { 26, 31 }, { 21, 41 },
473
{ 26, 44 }, { 23, 47 }, { 16, 65 }, { 14, 71 },
474
{ 8, 60 }, { 6, 63 }, { 17, 65 }, { 21, 24 },
475
{ 23, 20 }, { 26, 23 }, { 27, 32 }, { 28, 23 },
476
{ 28, 24 }, { 23, 40 }, { 24, 32 }, { 28, 29 },
477
{ 23, 42 }, { 19, 57 }, { 22, 53 }, { 22, 61 },
478
{ 11, 86 },
479
480
/* 399 -> 435 */
481
{ 12, 40 }, { 11, 51 }, { 14, 59 },
482
{ -4, 79 }, { -7, 71 }, { -5, 69 }, { -9, 70 },
483
{ -8, 66 }, { -10, 68 }, { -19, 73 }, { -12, 69 },
484
{ -16, 70 }, { -15, 67 }, { -20, 62 }, { -19, 70 },
485
{ -16, 66 }, { -22, 65 }, { -20, 63 }, { 9, -2 },
486
{ 26, -9 }, { 33, -9 }, { 39, -7 }, { 41, -2 },
487
{ 45, 3 }, { 49, 9 }, { 45, 27 }, { 36, 59 },
488
{ -6, 66 }, { -7, 35 }, { -7, 42 }, { -8, 45 },
489
{ -5, 48 }, { -12, 56 }, { -6, 60 }, { -5, 62 },
490
{ -8, 66 }, { -8, 76 },
491
492
/* 436 -> 459 */
493
{ -5, 85 }, { -6, 81 }, { -10, 77 }, { -7, 81 },
494
{ -17, 80 }, { -18, 73 }, { -4, 74 }, { -10, 83 },
495
{ -9, 71 }, { -9, 67 }, { -1, 61 }, { -8, 66 },
496
{ -14, 66 }, { 0, 59 }, { 2, 59 }, { 21, -13 },
497
{ 33, -14 }, { 39, -7 }, { 46, -2 }, { 51, 2 },
498
{ 60, 6 }, { 61, 17 }, { 55, 34 }, { 42, 62 },
499
500
/* 460 - 1024 */
501
{ -7, 92 }, { -5, 89 }, { -7, 96 }, { -13, 108 },
502
{ -3, 46 }, { -1, 65 }, { -1, 57 }, { -9, 93 },
503
{ -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 },
504
{ -7, 92 }, { -5, 89 }, { -7, 96 }, { -13, 108 },
505
{ -3, 46 }, { -1, 65 }, { -1, 57 }, { -9, 93 },
506
{ -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 },
507
{ -2, 85 }, { -6, 78 }, { -1, 75 }, { -7, 77 },
508
{ 2, 54 }, { 5, 50 }, { -3, 68 }, { 1, 50 },
509
{ 6, 42 }, { -4, 81 }, { 1, 63 }, { -4, 70 },
510
{ 0, 67 }, { 2, 57 }, { -2, 76 }, { 11, 35 },
511
{ 4, 64 }, { 1, 61 }, { 11, 35 }, { 18, 25 },
512
{ 12, 24 }, { 13, 29 }, { 13, 36 }, { -10, 93 },
513
{ -7, 73 }, { -2, 73 }, { 13, 46 }, { 9, 49 },
514
{ -7, 100 }, { 9, 53 }, { 2, 53 }, { 5, 53 },
515
{ -2, 61 }, { 0, 56 }, { 0, 56 }, { -13, 63 },
516
{ -5, 60 }, { -1, 62 }, { 4, 57 }, { -6, 69 },
517
{ 4, 57 }, { 14, 39 }, { 4, 51 }, { 13, 68 },
518
{ -2, 85 }, { -6, 78 }, { -1, 75 }, { -7, 77 },
519
{ 2, 54 }, { 5, 50 }, { -3, 68 }, { 1, 50 },
520
{ 6, 42 }, { -4, 81 }, { 1, 63 }, { -4, 70 },
521
{ 0, 67 }, { 2, 57 }, { -2, 76 }, { 11, 35 },
522
{ 4, 64 }, { 1, 61 }, { 11, 35 }, { 18, 25 },
523
{ 12, 24 }, { 13, 29 }, { 13, 36 }, { -10, 93 },
524
{ -7, 73 }, { -2, 73 }, { 13, 46 }, { 9, 49 },
525
{ -7, 100 }, { 9, 53 }, { 2, 53 }, { 5, 53 },
526
{ -2, 61 }, { 0, 56 }, { 0, 56 }, { -13, 63 },
527
{ -5, 60 }, { -1, 62 }, { 4, 57 }, { -6, 69 },
528
{ 4, 57 }, { 14, 39 }, { 4, 51 }, { 13, 68 },
529
{ 11, 28 }, { 2, 40 }, { 3, 44 }, { 0, 49 },
530
{ 0, 46 }, { 2, 44 }, { 2, 51 }, { 0, 47 },
531
{ 4, 39 }, { 2, 62 }, { 6, 46 }, { 0, 54 },
532
{ 3, 54 }, { 2, 58 }, { 4, 63 }, { 6, 51 },
533
{ 6, 57 }, { 7, 53 }, { 6, 52 }, { 6, 55 },
534
{ 11, 45 }, { 14, 36 }, { 8, 53 }, { -1, 82 },
535
{ 7, 55 }, { -3, 78 }, { 15, 46 }, { 22, 31 },
536
{ -1, 84 }, { 25, 7 }, { 30, -7 }, { 28, 3 },
537
{ 28, 4 }, { 32, 0 }, { 34, -1 }, { 30, 6 },
538
{ 30, 6 }, { 32, 9 }, { 31, 19 }, { 26, 27 },
539
{ 26, 30 }, { 37, 20 }, { 28, 34 }, { 17, 70 },
540
{ 11, 28 }, { 2, 40 }, { 3, 44 }, { 0, 49 },
541
{ 0, 46 }, { 2, 44 }, { 2, 51 }, { 0, 47 },
542
{ 4, 39 }, { 2, 62 }, { 6, 46 }, { 0, 54 },
543
{ 3, 54 }, { 2, 58 }, { 4, 63 }, { 6, 51 },
544
{ 6, 57 }, { 7, 53 }, { 6, 52 }, { 6, 55 },
545
{ 11, 45 }, { 14, 36 }, { 8, 53 }, { -1, 82 },
546
{ 7, 55 }, { -3, 78 }, { 15, 46 }, { 22, 31 },
547
{ -1, 84 }, { 25, 7 }, { 30, -7 }, { 28, 3 },
548
{ 28, 4 }, { 32, 0 }, { 34, -1 }, { 30, 6 },
549
{ 30, 6 }, { 32, 9 }, { 31, 19 }, { 26, 27 },
550
{ 26, 30 }, { 37, 20 }, { 28, 34 }, { 17, 70 },
551
{ -4, 79 }, { -7, 71 }, { -5, 69 }, { -9, 70 },
552
{ -8, 66 }, { -10, 68 }, { -19, 73 }, { -12, 69 },
553
{ -16, 70 }, { -15, 67 }, { -20, 62 }, { -19, 70 },
554
{ -16, 66 }, { -22, 65 }, { -20, 63 }, { -5, 85 },
555
{ -6, 81 }, { -10, 77 }, { -7, 81 }, { -17, 80 },
556
{ -18, 73 }, { -4, 74 }, { -10, 83 }, { -9, 71 },
557
{ -9, 67 }, { -1, 61 }, { -8, 66 }, { -14, 66 },
558
{ 0, 59 }, { 2, 59 }, { 9, -2 }, { 26, -9 },
559
{ 33, -9 }, { 39, -7 }, { 41, -2 }, { 45, 3 },
560
{ 49, 9 }, { 45, 27 }, { 36, 59 }, { 21, -13 },
561
{ 33, -14 }, { 39, -7 }, { 46, -2 }, { 51, 2 },
562
{ 60, 6 }, { 61, 17 }, { 55, 34 }, { 42, 62 },
563
{ -6, 66 }, { -7, 35 }, { -7, 42 }, { -8, 45 },
564
{ -5, 48 }, { -12, 56 }, { -6, 60 }, { -5, 62 },
565
{ -8, 66 }, { -8, 76 }, { -4, 79 }, { -7, 71 },
566
{ -5, 69 }, { -9, 70 }, { -8, 66 }, { -10, 68 },
567
{ -19, 73 }, { -12, 69 }, { -16, 70 }, { -15, 67 },
568
{ -20, 62 }, { -19, 70 }, { -16, 66 }, { -22, 65 },
569
{ -20, 63 }, { -5, 85 }, { -6, 81 }, { -10, 77 },
570
{ -7, 81 }, { -17, 80 }, { -18, 73 }, { -4, 74 },
571
{ -10, 83 }, { -9, 71 }, { -9, 67 }, { -1, 61 },
572
{ -8, 66 }, { -14, 66 }, { 0, 59 }, { 2, 59 },
573
{ 9, -2 }, { 26, -9 }, { 33, -9 }, { 39, -7 },
574
{ 41, -2 }, { 45, 3 }, { 49, 9 }, { 45, 27 },
575
{ 36, 59 }, { 21, -13 }, { 33, -14 }, { 39, -7 },
576
{ 46, -2 }, { 51, 2 }, { 60, 6 }, { 61, 17 },
577
{ 55, 34 }, { 42, 62 }, { -6, 66 }, { -7, 35 },
578
{ -7, 42 }, { -8, 45 }, { -5, 48 }, { -12, 56 },
579
{ -6, 60 }, { -5, 62 }, { -8, 66 }, { -8, 76 },
580
{ -13, 106 }, { -16, 106 }, { -10, 87 }, { -21, 114 },
581
{ -18, 110 }, { -14, 98 }, { -22, 110 }, { -21, 106 },
582
{ -18, 103 }, { -21, 107 }, { -23, 108 }, { -26, 112 },
583
{ -10, 96 }, { -12, 95 }, { -5, 91 }, { -9, 93 },
584
{ -22, 94 }, { -5, 86 }, { 9, 67 }, { -4, 80 },
585
{ -10, 85 }, { -1, 70 }, { 7, 60 }, { 9, 58 },
586
{ 5, 61 }, { 12, 50 }, { 15, 50 }, { 18, 49 },
587
{ 17, 54 }, { 10, 41 }, { 7, 46 }, { -1, 51 },
588
{ 7, 49 }, { 8, 52 }, { 9, 41 }, { 6, 47 },
589
{ 2, 55 }, { 13, 41 }, { 10, 44 }, { 6, 50 },
590
{ 5, 53 }, { 13, 49 }, { 4, 63 }, { 6, 64 },
591
{ -13, 106 }, { -16, 106 }, { -10, 87 }, { -21, 114 },
592
{ -18, 110 }, { -14, 98 }, { -22, 110 }, { -21, 106 },
593
{ -18, 103 }, { -21, 107 }, { -23, 108 }, { -26, 112 },
594
{ -10, 96 }, { -12, 95 }, { -5, 91 }, { -9, 93 },
595
{ -22, 94 }, { -5, 86 }, { 9, 67 }, { -4, 80 },
596
{ -10, 85 }, { -1, 70 }, { 7, 60 }, { 9, 58 },
597
{ 5, 61 }, { 12, 50 }, { 15, 50 }, { 18, 49 },
598
{ 17, 54 }, { 10, 41 }, { 7, 46 }, { -1, 51 },
599
{ 7, 49 }, { 8, 52 }, { 9, 41 }, { 6, 47 },
600
{ 2, 55 }, { 13, 41 }, { 10, 44 }, { 6, 50 },
601
{ 5, 53 }, { 13, 49 }, { 4, 63 }, { 6, 64 },
602
{ 14, 11 }, { 11, 14 }, { 9, 11 }, { 18, 11 },
603
{ 21, 9 }, { 23, -2 }, { 32, -15 }, { 32, -15 },
604
{ 34, -21 }, { 39, -23 }, { 42, -33 }, { 41, -31 },
605
{ 46, -28 }, { 38, -12 }, { 21, 29 }, { 45, -24 },
606
{ 53, -45 }, { 48, -26 }, { 65, -43 }, { 43, -19 },
607
{ 39, -10 }, { 30, 9 }, { 18, 26 }, { 20, 27 },
608
{ 0, 57 }, { -14, 82 }, { -5, 75 }, { -19, 97 },
609
{ -35, 125 }, { 27, 0 }, { 28, 0 }, { 31, -4 },
610
{ 27, 6 }, { 34, 8 }, { 30, 10 }, { 24, 22 },
611
{ 33, 19 }, { 22, 32 }, { 26, 31 }, { 21, 41 },
612
{ 26, 44 }, { 23, 47 }, { 16, 65 }, { 14, 71 },
613
{ 14, 11 }, { 11, 14 }, { 9, 11 }, { 18, 11 },
614
{ 21, 9 }, { 23, -2 }, { 32, -15 }, { 32, -15 },
615
{ 34, -21 }, { 39, -23 }, { 42, -33 }, { 41, -31 },
616
{ 46, -28 }, { 38, -12 }, { 21, 29 }, { 45, -24 },
617
{ 53, -45 }, { 48, -26 }, { 65, -43 }, { 43, -19 },
618
{ 39, -10 }, { 30, 9 }, { 18, 26 }, { 20, 27 },
619
{ 0, 57 }, { -14, 82 }, { -5, 75 }, { -19, 97 },
620
{ -35, 125 }, { 27, 0 }, { 28, 0 }, { 31, -4 },
621
{ 27, 6 }, { 34, 8 }, { 30, 10 }, { 24, 22 },
622
{ 33, 19 }, { 22, 32 }, { 26, 31 }, { 21, 41 },
623
{ 26, 44 }, { 23, 47 }, { 16, 65 }, { 14, 71 },
624
{ -6, 76 }, { -2, 44 }, { 0, 45 }, { 0, 52 },
625
{ -3, 64 }, { -2, 59 }, { -4, 70 }, { -4, 75 },
626
{ -8, 82 }, { -17, 102 }, { -9, 77 }, { 3, 24 },
627
{ 0, 42 }, { 0, 48 }, { 0, 55 }, { -6, 59 },
628
{ -7, 71 }, { -12, 83 }, { -11, 87 }, { -30, 119 },
629
{ 1, 58 }, { -3, 29 }, { -1, 36 }, { 1, 38 },
630
{ 2, 43 }, { -6, 55 }, { 0, 58 }, { 0, 64 },
631
{ -3, 74 }, { -10, 90 }, { -6, 76 }, { -2, 44 },
632
{ 0, 45 }, { 0, 52 }, { -3, 64 }, { -2, 59 },
633
{ -4, 70 }, { -4, 75 }, { -8, 82 }, { -17, 102 },
634
{ -9, 77 }, { 3, 24 }, { 0, 42 }, { 0, 48 },
635
{ 0, 55 }, { -6, 59 }, { -7, 71 }, { -12, 83 },
636
{ -11, 87 }, { -30, 119 }, { 1, 58 }, { -3, 29 },
637
{ -1, 36 }, { 1, 38 }, { 2, 43 }, { -6, 55 },
638
{ 0, 58 }, { 0, 64 }, { -3, 74 }, { -10, 90 },
639
{ -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 },
640
{ -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 },
641
{ -3, 74 }, { -9, 92 }, { -8, 87 }, { -23, 126 }
642
},
643
644
/* i_cabac_init_idc == 1 */
645
{
646
/* 0 - 10 */
647
{ 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
648
{ 2, 54 }, { 3, 74 }, { -28, 127 }, { -23, 104 },
649
{ -6, 53 }, { -1, 54 }, { 7, 51 },
650
651
/* 11 - 23 */
652
{ 22, 25 }, { 34, 0 }, { 16, 0 }, { -2, 9 },
653
{ 4, 41 }, { -29, 118 }, { 2, 65 }, { -6, 71 },
654
{ -13, 79 }, { 5, 52 }, { 9, 50 }, { -3, 70 },
655
{ 10, 54 },
656
657
/* 24 - 39 */
658
{ 26, 34 }, { 19, 22 }, { 40, 0 }, { 57, 2 },
659
{ 41, 36 }, { 26, 69 }, { -45, 127 }, { -15, 101 },
660
{ -4, 76 }, { -6, 71 }, { -13, 79 }, { 5, 52 },
661
{ 6, 69 }, { -13, 90 }, { 0, 52 }, { 8, 43 },
662
663
/* 40 - 53 */
664
{ -2, 69 },{ -5, 82 },{ -10, 96 },{ 2, 59 },
665
{ 2, 75 },{ -3, 87 },{ -3, 100 },{ 1, 56 },
666
{ -3, 74 },{ -6, 85 },{ 0, 59 },{ -3, 81 },
667
{ -7, 86 },{ -5, 95 },
668
669
/* 54 - 59 */
670
{ -1, 66 },{ -1, 77 },{ 1, 70 },{ -2, 86 },
671
{ -5, 72 },{ 0, 61 },
672
673
/* 60 - 69 */
674
{ 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
675
{ -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
676
{ 13, 41 }, { 3, 62 },
677
678
/* 70 - 104 */
679
{ 13, 15 }, { 7, 51 }, { 2, 80 }, { -39, 127 },
680
{ -18, 91 }, { -17, 96 }, { -26, 81 }, { -35, 98 },
681
{ -24, 102 }, { -23, 97 }, { -27, 119 }, { -24, 99 },
682
{ -21, 110 }, { -18, 102 }, { -36, 127 }, { 0, 80 },
683
{ -5, 89 }, { -7, 94 }, { -4, 92 }, { 0, 39 },
684
{ 0, 65 }, { -15, 84 }, { -35, 127 }, { -2, 73 },
685
{ -12, 104 }, { -9, 91 }, { -31, 127 }, { 3, 55 },
686
{ 7, 56 }, { 7, 55 }, { 8, 61 }, { -3, 53 },
687
{ 0, 68 }, { -7, 74 }, { -9, 88 },
688
689
/* 105 -> 165 */
690
{ -13, 103 }, { -13, 91 }, { -9, 89 }, { -14, 92 },
691
{ -8, 76 }, { -12, 87 }, { -23, 110 }, { -24, 105 },
692
{ -10, 78 }, { -20, 112 }, { -17, 99 }, { -78, 127 },
693
{ -70, 127 }, { -50, 127 }, { -46, 127 }, { -4, 66 },
694
{ -5, 78 }, { -4, 71 }, { -8, 72 }, { 2, 59 },
695
{ -1, 55 }, { -7, 70 }, { -6, 75 }, { -8, 89 },
696
{ -34, 119 }, { -3, 75 }, { 32, 20 }, { 30, 22 },
697
{ -44, 127 }, { 0, 54 }, { -5, 61 }, { 0, 58 },
698
{ -1, 60 }, { -3, 61 }, { -8, 67 }, { -25, 84 },
699
{ -14, 74 }, { -5, 65 }, { 5, 52 }, { 2, 57 },
700
{ 0, 61 }, { -9, 69 }, { -11, 70 }, { 18, 55 },
701
{ -4, 71 }, { 0, 58 }, { 7, 61 }, { 9, 41 },
702
{ 18, 25 }, { 9, 32 }, { 5, 43 }, { 9, 47 },
703
{ 0, 44 }, { 0, 51 }, { 2, 46 }, { 19, 38 },
704
{ -4, 66 }, { 15, 38 }, { 12, 42 }, { 9, 34 },
705
{ 0, 89 },
706
707
/* 166 - 226 */
708
{ 4, 45 }, { 10, 28 }, { 10, 31 }, { 33, -11 },
709
{ 52, -43 }, { 18, 15 }, { 28, 0 }, { 35, -22 },
710
{ 38, -25 }, { 34, 0 }, { 39, -18 }, { 32, -12 },
711
{ 102, -94 }, { 0, 0 }, { 56, -15 }, { 33, -4 },
712
{ 29, 10 }, { 37, -5 }, { 51, -29 }, { 39, -9 },
713
{ 52, -34 }, { 69, -58 }, { 67, -63 }, { 44, -5 },
714
{ 32, 7 }, { 55, -29 }, { 32, 1 }, { 0, 0 },
715
{ 27, 36 }, { 33, -25 }, { 34, -30 }, { 36, -28 },
716
{ 38, -28 }, { 38, -27 }, { 34, -18 }, { 35, -16 },
717
{ 34, -14 }, { 32, -8 }, { 37, -6 }, { 35, 0 },
718
{ 30, 10 }, { 28, 18 }, { 26, 25 }, { 29, 41 },
719
{ 0, 75 }, { 2, 72 }, { 8, 77 }, { 14, 35 },
720
{ 18, 31 }, { 17, 35 }, { 21, 30 }, { 17, 45 },
721
{ 20, 42 }, { 18, 45 }, { 27, 26 }, { 16, 54 },
722
{ 7, 66 }, { 16, 56 }, { 11, 73 }, { 10, 67 },
723
{ -10, 116 },
724
725
/* 227 - 275 */
726
{ -23, 112 }, { -15, 71 }, { -7, 61 }, { 0, 53 },
727
{ -5, 66 }, { -11, 77 }, { -9, 80 }, { -9, 84 },
728
{ -10, 87 }, { -34, 127 }, { -21, 101 }, { -3, 39 },
729
{ -5, 53 }, { -7, 61 }, { -11, 75 }, { -15, 77 },
730
{ -17, 91 }, { -25, 107 }, { -25, 111 }, { -28, 122 },
731
{ -11, 76 }, { -10, 44 }, { -10, 52 }, { -10, 57 },
732
{ -9, 58 }, { -16, 72 }, { -7, 69 }, { -4, 69 },
733
{ -5, 74 }, { -9, 86 }, { 2, 66 }, { -9, 34 },
734
{ 1, 32 }, { 11, 31 }, { 5, 52 }, { -2, 55 },
735
{ -2, 67 }, { 0, 73 }, { -8, 89 }, { 3, 52 },
736
{ 7, 4 }, { 10, 8 }, { 17, 8 }, { 16, 19 },
737
{ 3, 37 }, { -1, 61 }, { -5, 73 }, { -1, 70 },
738
{ -4, 78 },
739
740
/* 276 a bit special (not used, x264_cabac_encode_bypass is used instead) */
741
{ 0, 0 },
742
743
/* 277 - 337 */
744
{ -21, 126 }, { -23, 124 }, { -20, 110 }, { -26, 126 },
745
{ -25, 124 }, { -17, 105 }, { -27, 121 }, { -27, 117 },
746
{ -17, 102 }, { -26, 117 }, { -27, 116 }, { -33, 122 },
747
{ -10, 95 }, { -14, 100 }, { -8, 95 }, { -17, 111 },
748
{ -28, 114 }, { -6, 89 }, { -2, 80 }, { -4, 82 },
749
{ -9, 85 }, { -8, 81 }, { -1, 72 }, { 5, 64 },
750
{ 1, 67 }, { 9, 56 }, { 0, 69 }, { 1, 69 },
751
{ 7, 69 }, { -7, 69 }, { -6, 67 }, { -16, 77 },
752
{ -2, 64 }, { 2, 61 }, { -6, 67 }, { -3, 64 },
753
{ 2, 57 }, { -3, 65 }, { -3, 66 }, { 0, 62 },
754
{ 9, 51 }, { -1, 66 }, { -2, 71 }, { -2, 75 },
755
{ -1, 70 }, { -9, 72 }, { 14, 60 }, { 16, 37 },
756
{ 0, 47 }, { 18, 35 }, { 11, 37 }, { 12, 41 },
757
{ 10, 41 }, { 2, 48 }, { 12, 41 }, { 13, 41 },
758
{ 0, 59 }, { 3, 50 }, { 19, 40 }, { 3, 66 },
759
{ 18, 50 },
760
761
/* 338 - 398 */
762
{ 19, -6 }, { 18, -6 }, { 14, 0 }, { 26, -12 },
763
{ 31, -16 }, { 33, -25 }, { 33, -22 }, { 37, -28 },
764
{ 39, -30 }, { 42, -30 }, { 47, -42 }, { 45, -36 },
765
{ 49, -34 }, { 41, -17 }, { 32, 9 }, { 69, -71 },
766
{ 63, -63 }, { 66, -64 }, { 77, -74 }, { 54, -39 },
767
{ 52, -35 }, { 41, -10 }, { 36, 0 }, { 40, -1 },
768
{ 30, 14 }, { 28, 26 }, { 23, 37 }, { 12, 55 },
769
{ 11, 65 }, { 37, -33 }, { 39, -36 }, { 40, -37 },
770
{ 38, -30 }, { 46, -33 }, { 42, -30 }, { 40, -24 },
771
{ 49, -29 }, { 38, -12 }, { 40, -10 }, { 38, -3 },
772
{ 46, -5 }, { 31, 20 }, { 29, 30 }, { 25, 44 },
773
{ 12, 48 }, { 11, 49 }, { 26, 45 }, { 22, 22 },
774
{ 23, 22 }, { 27, 21 }, { 33, 20 }, { 26, 28 },
775
{ 30, 24 }, { 27, 34 }, { 18, 42 }, { 25, 39 },
776
{ 18, 50 }, { 12, 70 }, { 21, 54 }, { 14, 71 },
777
{ 11, 83 },
778
779
/* 399 -> 435 */
780
{ 25, 32 }, { 21, 49 }, { 21, 54 },
781
{ -5, 85 }, { -6, 81 }, { -10, 77 }, { -7, 81 },
782
{ -17, 80 }, { -18, 73 }, { -4, 74 }, { -10, 83 },
783
{ -9, 71 }, { -9, 67 }, { -1, 61 }, { -8, 66 },
784
{ -14, 66 }, { 0, 59 }, { 2, 59 }, { 17, -10 },
785
{ 32, -13 }, { 42, -9 }, { 49, -5 }, { 53, 0 },
786
{ 64, 3 }, { 68, 10 }, { 66, 27 }, { 47, 57 },
787
{ -5, 71 }, { 0, 24 }, { -1, 36 }, { -2, 42 },
788
{ -2, 52 }, { -9, 57 }, { -6, 63 }, { -4, 65 },
789
{ -4, 67 }, { -7, 82 },
790
791
/* 436 -> 459 */
792
{ -3, 81 }, { -3, 76 }, { -7, 72 }, { -6, 78 },
793
{ -12, 72 }, { -14, 68 }, { -3, 70 }, { -6, 76 },
794
{ -5, 66 }, { -5, 62 }, { 0, 57 }, { -4, 61 },
795
{ -9, 60 }, { 1, 54 }, { 2, 58 }, { 17, -10 },
796
{ 32, -13 }, { 42, -9 }, { 49, -5 }, { 53, 0 },
797
{ 64, 3 }, { 68, 10 }, { 66, 27 }, { 47, 57 },
798
799
/* 460 - 1024 */
800
{ 0, 80 }, { -5, 89 }, { -7, 94 }, { -4, 92 },
801
{ 0, 39 }, { 0, 65 }, { -15, 84 }, { -35, 127 },
802
{ -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 },
803
{ 0, 80 }, { -5, 89 }, { -7, 94 }, { -4, 92 },
804
{ 0, 39 }, { 0, 65 }, { -15, 84 }, { -35, 127 },
805
{ -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 },
806
{ -13, 103 }, { -13, 91 }, { -9, 89 }, { -14, 92 },
807
{ -8, 76 }, { -12, 87 }, { -23, 110 }, { -24, 105 },
808
{ -10, 78 }, { -20, 112 }, { -17, 99 }, { -78, 127 },
809
{ -70, 127 }, { -50, 127 }, { -46, 127 }, { -4, 66 },
810
{ -5, 78 }, { -4, 71 }, { -8, 72 }, { 2, 59 },
811
{ -1, 55 }, { -7, 70 }, { -6, 75 }, { -8, 89 },
812
{ -34, 119 }, { -3, 75 }, { 32, 20 }, { 30, 22 },
813
{ -44, 127 }, { 0, 54 }, { -5, 61 }, { 0, 58 },
814
{ -1, 60 }, { -3, 61 }, { -8, 67 }, { -25, 84 },
815
{ -14, 74 }, { -5, 65 }, { 5, 52 }, { 2, 57 },
816
{ 0, 61 }, { -9, 69 }, { -11, 70 }, { 18, 55 },
817
{ -13, 103 }, { -13, 91 }, { -9, 89 }, { -14, 92 },
818
{ -8, 76 }, { -12, 87 }, { -23, 110 }, { -24, 105 },
819
{ -10, 78 }, { -20, 112 }, { -17, 99 }, { -78, 127 },
820
{ -70, 127 }, { -50, 127 }, { -46, 127 }, { -4, 66 },
821
{ -5, 78 }, { -4, 71 }, { -8, 72 }, { 2, 59 },
822
{ -1, 55 }, { -7, 70 }, { -6, 75 }, { -8, 89 },
823
{ -34, 119 }, { -3, 75 }, { 32, 20 }, { 30, 22 },
824
{ -44, 127 }, { 0, 54 }, { -5, 61 }, { 0, 58 },
825
{ -1, 60 }, { -3, 61 }, { -8, 67 }, { -25, 84 },
826
{ -14, 74 }, { -5, 65 }, { 5, 52 }, { 2, 57 },
827
{ 0, 61 }, { -9, 69 }, { -11, 70 }, { 18, 55 },
828
{ 4, 45 }, { 10, 28 }, { 10, 31 }, { 33, -11 },
829
{ 52, -43 }, { 18, 15 }, { 28, 0 }, { 35, -22 },
830
{ 38, -25 }, { 34, 0 }, { 39, -18 }, { 32, -12 },
831
{ 102, -94 }, { 0, 0 }, { 56, -15 }, { 33, -4 },
832
{ 29, 10 }, { 37, -5 }, { 51, -29 }, { 39, -9 },
833
{ 52, -34 }, { 69, -58 }, { 67, -63 }, { 44, -5 },
834
{ 32, 7 }, { 55, -29 }, { 32, 1 }, { 0, 0 },
835
{ 27, 36 }, { 33, -25 }, { 34, -30 }, { 36, -28 },
836
{ 38, -28 }, { 38, -27 }, { 34, -18 }, { 35, -16 },
837
{ 34, -14 }, { 32, -8 }, { 37, -6 }, { 35, 0 },
838
{ 30, 10 }, { 28, 18 }, { 26, 25 }, { 29, 41 },
839
{ 4, 45 }, { 10, 28 }, { 10, 31 }, { 33, -11 },
840
{ 52, -43 }, { 18, 15 }, { 28, 0 }, { 35, -22 },
841
{ 38, -25 }, { 34, 0 }, { 39, -18 }, { 32, -12 },
842
{ 102, -94 }, { 0, 0 }, { 56, -15 }, { 33, -4 },
843
{ 29, 10 }, { 37, -5 }, { 51, -29 }, { 39, -9 },
844
{ 52, -34 }, { 69, -58 }, { 67, -63 }, { 44, -5 },
845
{ 32, 7 }, { 55, -29 }, { 32, 1 }, { 0, 0 },
846
{ 27, 36 }, { 33, -25 }, { 34, -30 }, { 36, -28 },
847
{ 38, -28 }, { 38, -27 }, { 34, -18 }, { 35, -16 },
848
{ 34, -14 }, { 32, -8 }, { 37, -6 }, { 35, 0 },
849
{ 30, 10 }, { 28, 18 }, { 26, 25 }, { 29, 41 },
850
{ -5, 85 }, { -6, 81 }, { -10, 77 }, { -7, 81 },
851
{ -17, 80 }, { -18, 73 }, { -4, 74 }, { -10, 83 },
852
{ -9, 71 }, { -9, 67 }, { -1, 61 }, { -8, 66 },
853
{ -14, 66 }, { 0, 59 }, { 2, 59 }, { -3, 81 },
854
{ -3, 76 }, { -7, 72 }, { -6, 78 }, { -12, 72 },
855
{ -14, 68 }, { -3, 70 }, { -6, 76 }, { -5, 66 },
856
{ -5, 62 }, { 0, 57 }, { -4, 61 }, { -9, 60 },
857
{ 1, 54 }, { 2, 58 }, { 17, -10 }, { 32, -13 },
858
{ 42, -9 }, { 49, -5 }, { 53, 0 }, { 64, 3 },
859
{ 68, 10 }, { 66, 27 }, { 47, 57 }, { 17, -10 },
860
{ 32, -13 }, { 42, -9 }, { 49, -5 }, { 53, 0 },
861
{ 64, 3 }, { 68, 10 }, { 66, 27 }, { 47, 57 },
862
{ -5, 71 }, { 0, 24 }, { -1, 36 }, { -2, 42 },
863
{ -2, 52 }, { -9, 57 }, { -6, 63 }, { -4, 65 },
864
{ -4, 67 }, { -7, 82 }, { -5, 85 }, { -6, 81 },
865
{ -10, 77 }, { -7, 81 }, { -17, 80 }, { -18, 73 },
866
{ -4, 74 }, { -10, 83 }, { -9, 71 }, { -9, 67 },
867
{ -1, 61 }, { -8, 66 }, { -14, 66 }, { 0, 59 },
868
{ 2, 59 }, { -3, 81 }, { -3, 76 }, { -7, 72 },
869
{ -6, 78 }, { -12, 72 }, { -14, 68 }, { -3, 70 },
870
{ -6, 76 }, { -5, 66 }, { -5, 62 }, { 0, 57 },
871
{ -4, 61 }, { -9, 60 }, { 1, 54 }, { 2, 58 },
872
{ 17, -10 }, { 32, -13 }, { 42, -9 }, { 49, -5 },
873
{ 53, 0 }, { 64, 3 }, { 68, 10 }, { 66, 27 },
874
{ 47, 57 }, { 17, -10 }, { 32, -13 }, { 42, -9 },
875
{ 49, -5 }, { 53, 0 }, { 64, 3 }, { 68, 10 },
876
{ 66, 27 }, { 47, 57 }, { -5, 71 }, { 0, 24 },
877
{ -1, 36 }, { -2, 42 }, { -2, 52 }, { -9, 57 },
878
{ -6, 63 }, { -4, 65 }, { -4, 67 }, { -7, 82 },
879
{ -21, 126 }, { -23, 124 }, { -20, 110 }, { -26, 126 },
880
{ -25, 124 }, { -17, 105 }, { -27, 121 }, { -27, 117 },
881
{ -17, 102 }, { -26, 117 }, { -27, 116 }, { -33, 122 },
882
{ -10, 95 }, { -14, 100 }, { -8, 95 }, { -17, 111 },
883
{ -28, 114 }, { -6, 89 }, { -2, 80 }, { -4, 82 },
884
{ -9, 85 }, { -8, 81 }, { -1, 72 }, { 5, 64 },
885
{ 1, 67 }, { 9, 56 }, { 0, 69 }, { 1, 69 },
886
{ 7, 69 }, { -7, 69 }, { -6, 67 }, { -16, 77 },
887
{ -2, 64 }, { 2, 61 }, { -6, 67 }, { -3, 64 },
888
{ 2, 57 }, { -3, 65 }, { -3, 66 }, { 0, 62 },
889
{ 9, 51 }, { -1, 66 }, { -2, 71 }, { -2, 75 },
890
{ -21, 126 }, { -23, 124 }, { -20, 110 }, { -26, 126 },
891
{ -25, 124 }, { -17, 105 }, { -27, 121 }, { -27, 117 },
892
{ -17, 102 }, { -26, 117 }, { -27, 116 }, { -33, 122 },
893
{ -10, 95 }, { -14, 100 }, { -8, 95 }, { -17, 111 },
894
{ -28, 114 }, { -6, 89 }, { -2, 80 }, { -4, 82 },
895
{ -9, 85 }, { -8, 81 }, { -1, 72 }, { 5, 64 },
896
{ 1, 67 }, { 9, 56 }, { 0, 69 }, { 1, 69 },
897
{ 7, 69 }, { -7, 69 }, { -6, 67 }, { -16, 77 },
898
{ -2, 64 }, { 2, 61 }, { -6, 67 }, { -3, 64 },
899
{ 2, 57 }, { -3, 65 }, { -3, 66 }, { 0, 62 },
900
{ 9, 51 }, { -1, 66 }, { -2, 71 }, { -2, 75 },
901
{ 19, -6 }, { 18, -6 }, { 14, 0 }, { 26, -12 },
902
{ 31, -16 }, { 33, -25 }, { 33, -22 }, { 37, -28 },
903
{ 39, -30 }, { 42, -30 }, { 47, -42 }, { 45, -36 },
904
{ 49, -34 }, { 41, -17 }, { 32, 9 }, { 69, -71 },
905
{ 63, -63 }, { 66, -64 }, { 77, -74 }, { 54, -39 },
906
{ 52, -35 }, { 41, -10 }, { 36, 0 }, { 40, -1 },
907
{ 30, 14 }, { 28, 26 }, { 23, 37 }, { 12, 55 },
908
{ 11, 65 }, { 37, -33 }, { 39, -36 }, { 40, -37 },
909
{ 38, -30 }, { 46, -33 }, { 42, -30 }, { 40, -24 },
910
{ 49, -29 }, { 38, -12 }, { 40, -10 }, { 38, -3 },
911
{ 46, -5 }, { 31, 20 }, { 29, 30 }, { 25, 44 },
912
{ 19, -6 }, { 18, -6 }, { 14, 0 }, { 26, -12 },
913
{ 31, -16 }, { 33, -25 }, { 33, -22 }, { 37, -28 },
914
{ 39, -30 }, { 42, -30 }, { 47, -42 }, { 45, -36 },
915
{ 49, -34 }, { 41, -17 }, { 32, 9 }, { 69, -71 },
916
{ 63, -63 }, { 66, -64 }, { 77, -74 }, { 54, -39 },
917
{ 52, -35 }, { 41, -10 }, { 36, 0 }, { 40, -1 },
918
{ 30, 14 }, { 28, 26 }, { 23, 37 }, { 12, 55 },
919
{ 11, 65 }, { 37, -33 }, { 39, -36 }, { 40, -37 },
920
{ 38, -30 }, { 46, -33 }, { 42, -30 }, { 40, -24 },
921
{ 49, -29 }, { 38, -12 }, { 40, -10 }, { 38, -3 },
922
{ 46, -5 }, { 31, 20 }, { 29, 30 }, { 25, 44 },
923
{ -23, 112 }, { -15, 71 }, { -7, 61 }, { 0, 53 },
924
{ -5, 66 }, { -11, 77 }, { -9, 80 }, { -9, 84 },
925
{ -10, 87 }, { -34, 127 }, { -21, 101 }, { -3, 39 },
926
{ -5, 53 }, { -7, 61 }, { -11, 75 }, { -15, 77 },
927
{ -17, 91 }, { -25, 107 }, { -25, 111 }, { -28, 122 },
928
{ -11, 76 }, { -10, 44 }, { -10, 52 }, { -10, 57 },
929
{ -9, 58 }, { -16, 72 }, { -7, 69 }, { -4, 69 },
930
{ -5, 74 }, { -9, 86 }, { -23, 112 }, { -15, 71 },
931
{ -7, 61 }, { 0, 53 }, { -5, 66 }, { -11, 77 },
932
{ -9, 80 }, { -9, 84 }, { -10, 87 }, { -34, 127 },
933
{ -21, 101 }, { -3, 39 }, { -5, 53 }, { -7, 61 },
934
{ -11, 75 }, { -15, 77 }, { -17, 91 }, { -25, 107 },
935
{ -25, 111 }, { -28, 122 }, { -11, 76 }, { -10, 44 },
936
{ -10, 52 }, { -10, 57 }, { -9, 58 }, { -16, 72 },
937
{ -7, 69 }, { -4, 69 }, { -5, 74 }, { -9, 86 },
938
{ -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 },
939
{ -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 },
940
{ -2, 73 }, { -12, 104 }, { -9, 91 }, { -31, 127 }
941
},
942
943
/* i_cabac_init_idc == 2 */
944
{
945
/* 0 - 10 */
946
{ 20, -15 }, { 2, 54 }, { 3, 74 }, { 20, -15 },
947
{ 2, 54 }, { 3, 74 }, { -28, 127 }, { -23, 104 },
948
{ -6, 53 }, { -1, 54 }, { 7, 51 },
949
950
/* 11 - 23 */
951
{ 29, 16 }, { 25, 0 }, { 14, 0 }, { -10, 51 },
952
{ -3, 62 }, { -27, 99 }, { 26, 16 }, { -4, 85 },
953
{ -24, 102 }, { 5, 57 }, { 6, 57 }, { -17, 73 },
954
{ 14, 57 },
955
956
/* 24 - 39 */
957
{ 20, 40 }, { 20, 10 }, { 29, 0 }, { 54, 0 },
958
{ 37, 42 }, { 12, 97 }, { -32, 127 }, { -22, 117 },
959
{ -2, 74 }, { -4, 85 }, { -24, 102 }, { 5, 57 },
960
{ -6, 93 }, { -14, 88 }, { -6, 44 }, { 4, 55 },
961
962
/* 40 - 53 */
963
{ -11, 89 },{ -15, 103 },{ -21, 116 },{ 19, 57 },
964
{ 20, 58 },{ 4, 84 },{ 6, 96 },{ 1, 63 },
965
{ -5, 85 },{ -13, 106 },{ 5, 63 },{ 6, 75 },
966
{ -3, 90 },{ -1, 101 },
967
968
/* 54 - 59 */
969
{ 3, 55 },{ -4, 79 },{ -2, 75 },{ -12, 97 },
970
{ -7, 50 },{ 1, 60 },
971
972
/* 60 - 69 */
973
{ 0, 41 }, { 0, 63 }, { 0, 63 }, { 0, 63 },
974
{ -9, 83 }, { 4, 86 }, { 0, 97 }, { -7, 72 },
975
{ 13, 41 }, { 3, 62 },
976
977
/* 70 - 104 */
978
{ 7, 34 }, { -9, 88 }, { -20, 127 }, { -36, 127 },
979
{ -17, 91 }, { -14, 95 }, { -25, 84 }, { -25, 86 },
980
{ -12, 89 }, { -17, 91 }, { -31, 127 }, { -14, 76 },
981
{ -18, 103 }, { -13, 90 }, { -37, 127 }, { 11, 80 },
982
{ 5, 76 }, { 2, 84 }, { 5, 78 }, { -6, 55 },
983
{ 4, 61 }, { -14, 83 }, { -37, 127 }, { -5, 79 },
984
{ -11, 104 }, { -11, 91 }, { -30, 127 }, { 0, 65 },
985
{ -2, 79 }, { 0, 72 }, { -4, 92 }, { -6, 56 },
986
{ 3, 68 }, { -8, 71 }, { -13, 98 },
987
988
/* 105 -> 165 */
989
{ -4, 86 }, { -12, 88 }, { -5, 82 }, { -3, 72 },
990
{ -4, 67 }, { -8, 72 }, { -16, 89 }, { -9, 69 },
991
{ -1, 59 }, { 5, 66 }, { 4, 57 }, { -4, 71 },
992
{ -2, 71 }, { 2, 58 }, { -1, 74 }, { -4, 44 },
993
{ -1, 69 }, { 0, 62 }, { -7, 51 }, { -4, 47 },
994
{ -6, 42 }, { -3, 41 }, { -6, 53 }, { 8, 76 },
995
{ -9, 78 }, { -11, 83 }, { 9, 52 }, { 0, 67 },
996
{ -5, 90 }, { 1, 67 }, { -15, 72 }, { -5, 75 },
997
{ -8, 80 }, { -21, 83 }, { -21, 64 }, { -13, 31 },
998
{ -25, 64 }, { -29, 94 }, { 9, 75 }, { 17, 63 },
999
{ -8, 74 }, { -5, 35 }, { -2, 27 }, { 13, 91 },
1000
{ 3, 65 }, { -7, 69 }, { 8, 77 }, { -10, 66 },
1001
{ 3, 62 }, { -3, 68 }, { -20, 81 }, { 0, 30 },
1002
{ 1, 7 }, { -3, 23 }, { -21, 74 }, { 16, 66 },
1003
{ -23, 124 }, { 17, 37 }, { 44, -18 }, { 50, -34 },
1004
{ -22, 127 },
1005
1006
/* 166 - 226 */
1007
{ 4, 39 }, { 0, 42 }, { 7, 34 }, { 11, 29 },
1008
{ 8, 31 }, { 6, 37 }, { 7, 42 }, { 3, 40 },
1009
{ 8, 33 }, { 13, 43 }, { 13, 36 }, { 4, 47 },
1010
{ 3, 55 }, { 2, 58 }, { 6, 60 }, { 8, 44 },
1011
{ 11, 44 }, { 14, 42 }, { 7, 48 }, { 4, 56 },
1012
{ 4, 52 }, { 13, 37 }, { 9, 49 }, { 19, 58 },
1013
{ 10, 48 }, { 12, 45 }, { 0, 69 }, { 20, 33 },
1014
{ 8, 63 }, { 35, -18 }, { 33, -25 }, { 28, -3 },
1015
{ 24, 10 }, { 27, 0 }, { 34, -14 }, { 52, -44 },
1016
{ 39, -24 }, { 19, 17 }, { 31, 25 }, { 36, 29 },
1017
{ 24, 33 }, { 34, 15 }, { 30, 20 }, { 22, 73 },
1018
{ 20, 34 }, { 19, 31 }, { 27, 44 }, { 19, 16 },
1019
{ 15, 36 }, { 15, 36 }, { 21, 28 }, { 25, 21 },
1020
{ 30, 20 }, { 31, 12 }, { 27, 16 }, { 24, 42 },
1021
{ 0, 93 }, { 14, 56 }, { 15, 57 }, { 26, 38 },
1022
{ -24, 127 },
1023
1024
/* 227 - 275 */
1025
{ -24, 115 }, { -22, 82 }, { -9, 62 }, { 0, 53 },
1026
{ 0, 59 }, { -14, 85 }, { -13, 89 }, { -13, 94 },
1027
{ -11, 92 }, { -29, 127 }, { -21, 100 }, { -14, 57 },
1028
{ -12, 67 }, { -11, 71 }, { -10, 77 }, { -21, 85 },
1029
{ -16, 88 }, { -23, 104 }, { -15, 98 }, { -37, 127 },
1030
{ -10, 82 }, { -8, 48 }, { -8, 61 }, { -8, 66 },
1031
{ -7, 70 }, { -14, 75 }, { -10, 79 }, { -9, 83 },
1032
{ -12, 92 }, { -18, 108 }, { -4, 79 }, { -22, 69 },
1033
{ -16, 75 }, { -2, 58 }, { 1, 58 }, { -13, 78 },
1034
{ -9, 83 }, { -4, 81 }, { -13, 99 }, { -13, 81 },
1035
{ -6, 38 }, { -13, 62 }, { -6, 58 }, { -2, 59 },
1036
{ -16, 73 }, { -10, 76 }, { -13, 86 }, { -9, 83 },
1037
{ -10, 87 },
1038
1039
/* 276 a bit special (not used, x264_cabac_encode_bypass is used instead) */
1040
{ 0, 0 },
1041
1042
/* 277 - 337 */
1043
{ -22, 127 }, { -25, 127 }, { -25, 120 }, { -27, 127 },
1044
{ -19, 114 }, { -23, 117 }, { -25, 118 }, { -26, 117 },
1045
{ -24, 113 }, { -28, 118 }, { -31, 120 }, { -37, 124 },
1046
{ -10, 94 }, { -15, 102 }, { -10, 99 }, { -13, 106 },
1047
{ -50, 127 }, { -5, 92 }, { 17, 57 }, { -5, 86 },
1048
{ -13, 94 }, { -12, 91 }, { -2, 77 }, { 0, 71 },
1049
{ -1, 73 }, { 4, 64 }, { -7, 81 }, { 5, 64 },
1050
{ 15, 57 }, { 1, 67 }, { 0, 68 }, { -10, 67 },
1051
{ 1, 68 }, { 0, 77 }, { 2, 64 }, { 0, 68 },
1052
{ -5, 78 }, { 7, 55 }, { 5, 59 }, { 2, 65 },
1053
{ 14, 54 }, { 15, 44 }, { 5, 60 }, { 2, 70 },
1054
{ -2, 76 }, { -18, 86 }, { 12, 70 }, { 5, 64 },
1055
{ -12, 70 }, { 11, 55 }, { 5, 56 }, { 0, 69 },
1056
{ 2, 65 }, { -6, 74 }, { 5, 54 }, { 7, 54 },
1057
{ -6, 76 }, { -11, 82 }, { -2, 77 }, { -2, 77 },
1058
{ 25, 42 },
1059
1060
/* 338 - 398 */
1061
{ 17, -13 }, { 16, -9 }, { 17, -12 }, { 27, -21 },
1062
{ 37, -30 }, { 41, -40 }, { 42, -41 }, { 48, -47 },
1063
{ 39, -32 }, { 46, -40 }, { 52, -51 }, { 46, -41 },
1064
{ 52, -39 }, { 43, -19 }, { 32, 11 }, { 61, -55 },
1065
{ 56, -46 }, { 62, -50 }, { 81, -67 }, { 45, -20 },
1066
{ 35, -2 }, { 28, 15 }, { 34, 1 }, { 39, 1 },
1067
{ 30, 17 }, { 20, 38 }, { 18, 45 }, { 15, 54 },
1068
{ 0, 79 }, { 36, -16 }, { 37, -14 }, { 37, -17 },
1069
{ 32, 1 }, { 34, 15 }, { 29, 15 }, { 24, 25 },
1070
{ 34, 22 }, { 31, 16 }, { 35, 18 }, { 31, 28 },
1071
{ 33, 41 }, { 36, 28 }, { 27, 47 }, { 21, 62 },
1072
{ 18, 31 }, { 19, 26 }, { 36, 24 }, { 24, 23 },
1073
{ 27, 16 }, { 24, 30 }, { 31, 29 }, { 22, 41 },
1074
{ 22, 42 }, { 16, 60 }, { 15, 52 }, { 14, 60 },
1075
{ 3, 78 }, { -16, 123 }, { 21, 53 }, { 22, 56 },
1076
{ 25, 61 },
1077
1078
/* 399 -> 435 */
1079
{ 21, 33 }, { 19, 50 }, { 17, 61 },
1080
{ -3, 78 }, { -8, 74 }, { -9, 72 }, { -10, 72 },
1081
{ -18, 75 }, { -12, 71 }, { -11, 63 }, { -5, 70 },
1082
{ -17, 75 }, { -14, 72 }, { -16, 67 }, { -8, 53 },
1083
{ -14, 59 }, { -9, 52 }, { -11, 68 }, { 9, -2 },
1084
{ 30, -10 }, { 31, -4 }, { 33, -1 }, { 33, 7 },
1085
{ 31, 12 }, { 37, 23 }, { 31, 38 }, { 20, 64 },
1086
{ -9, 71 }, { -7, 37 }, { -8, 44 }, { -11, 49 },
1087
{ -10, 56 }, { -12, 59 }, { -8, 63 }, { -9, 67 },
1088
{ -6, 68 }, { -10, 79 },
1089
1090
/* 436 -> 459 */
1091
{ -3, 78 }, { -8, 74 }, { -9, 72 }, { -10, 72 },
1092
{ -18, 75 }, { -12, 71 }, { -11, 63 }, { -5, 70 },
1093
{ -17, 75 }, { -14, 72 }, { -16, 67 }, { -8, 53 },
1094
{ -14, 59 }, { -9, 52 }, { -11, 68 }, { 9, -2 },
1095
{ 30, -10 }, { 31, -4 }, { 33, -1 }, { 33, 7 },
1096
{ 31, 12 }, { 37, 23 }, { 31, 38 }, { 20, 64 },
1097
1098
/* 460 - 1024 */
1099
{ 11, 80 }, { 5, 76 }, { 2, 84 }, { 5, 78 },
1100
{ -6, 55 }, { 4, 61 }, { -14, 83 }, { -37, 127 },
1101
{ -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 },
1102
{ 11, 80 }, { 5, 76 }, { 2, 84 }, { 5, 78 },
1103
{ -6, 55 }, { 4, 61 }, { -14, 83 }, { -37, 127 },
1104
{ -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 },
1105
{ -4, 86 }, { -12, 88 }, { -5, 82 }, { -3, 72 },
1106
{ -4, 67 }, { -8, 72 }, { -16, 89 }, { -9, 69 },
1107
{ -1, 59 }, { 5, 66 }, { 4, 57 }, { -4, 71 },
1108
{ -2, 71 }, { 2, 58 }, { -1, 74 }, { -4, 44 },
1109
{ -1, 69 }, { 0, 62 }, { -7, 51 }, { -4, 47 },
1110
{ -6, 42 }, { -3, 41 }, { -6, 53 }, { 8, 76 },
1111
{ -9, 78 }, { -11, 83 }, { 9, 52 }, { 0, 67 },
1112
{ -5, 90 }, { 1, 67 }, { -15, 72 }, { -5, 75 },
1113
{ -8, 80 }, { -21, 83 }, { -21, 64 }, { -13, 31 },
1114
{ -25, 64 }, { -29, 94 }, { 9, 75 }, { 17, 63 },
1115
{ -8, 74 }, { -5, 35 }, { -2, 27 }, { 13, 91 },
1116
{ -4, 86 }, { -12, 88 }, { -5, 82 }, { -3, 72 },
1117
{ -4, 67 }, { -8, 72 }, { -16, 89 }, { -9, 69 },
1118
{ -1, 59 }, { 5, 66 }, { 4, 57 }, { -4, 71 },
1119
{ -2, 71 }, { 2, 58 }, { -1, 74 }, { -4, 44 },
1120
{ -1, 69 }, { 0, 62 }, { -7, 51 }, { -4, 47 },
1121
{ -6, 42 }, { -3, 41 }, { -6, 53 }, { 8, 76 },
1122
{ -9, 78 }, { -11, 83 }, { 9, 52 }, { 0, 67 },
1123
{ -5, 90 }, { 1, 67 }, { -15, 72 }, { -5, 75 },
1124
{ -8, 80 }, { -21, 83 }, { -21, 64 }, { -13, 31 },
1125
{ -25, 64 }, { -29, 94 }, { 9, 75 }, { 17, 63 },
1126
{ -8, 74 }, { -5, 35 }, { -2, 27 }, { 13, 91 },
1127
{ 4, 39 }, { 0, 42 }, { 7, 34 }, { 11, 29 },
1128
{ 8, 31 }, { 6, 37 }, { 7, 42 }, { 3, 40 },
1129
{ 8, 33 }, { 13, 43 }, { 13, 36 }, { 4, 47 },
1130
{ 3, 55 }, { 2, 58 }, { 6, 60 }, { 8, 44 },
1131
{ 11, 44 }, { 14, 42 }, { 7, 48 }, { 4, 56 },
1132
{ 4, 52 }, { 13, 37 }, { 9, 49 }, { 19, 58 },
1133
{ 10, 48 }, { 12, 45 }, { 0, 69 }, { 20, 33 },
1134
{ 8, 63 }, { 35, -18 }, { 33, -25 }, { 28, -3 },
1135
{ 24, 10 }, { 27, 0 }, { 34, -14 }, { 52, -44 },
1136
{ 39, -24 }, { 19, 17 }, { 31, 25 }, { 36, 29 },
1137
{ 24, 33 }, { 34, 15 }, { 30, 20 }, { 22, 73 },
1138
{ 4, 39 }, { 0, 42 }, { 7, 34 }, { 11, 29 },
1139
{ 8, 31 }, { 6, 37 }, { 7, 42 }, { 3, 40 },
1140
{ 8, 33 }, { 13, 43 }, { 13, 36 }, { 4, 47 },
1141
{ 3, 55 }, { 2, 58 }, { 6, 60 }, { 8, 44 },
1142
{ 11, 44 }, { 14, 42 }, { 7, 48 }, { 4, 56 },
1143
{ 4, 52 }, { 13, 37 }, { 9, 49 }, { 19, 58 },
1144
{ 10, 48 }, { 12, 45 }, { 0, 69 }, { 20, 33 },
1145
{ 8, 63 }, { 35, -18 }, { 33, -25 }, { 28, -3 },
1146
{ 24, 10 }, { 27, 0 }, { 34, -14 }, { 52, -44 },
1147
{ 39, -24 }, { 19, 17 }, { 31, 25 }, { 36, 29 },
1148
{ 24, 33 }, { 34, 15 }, { 30, 20 }, { 22, 73 },
1149
{ -3, 78 }, { -8, 74 }, { -9, 72 }, { -10, 72 },
1150
{ -18, 75 }, { -12, 71 }, { -11, 63 }, { -5, 70 },
1151
{ -17, 75 }, { -14, 72 }, { -16, 67 }, { -8, 53 },
1152
{ -14, 59 }, { -9, 52 }, { -11, 68 }, { -3, 78 },
1153
{ -8, 74 }, { -9, 72 }, { -10, 72 }, { -18, 75 },
1154
{ -12, 71 }, { -11, 63 }, { -5, 70 }, { -17, 75 },
1155
{ -14, 72 }, { -16, 67 }, { -8, 53 }, { -14, 59 },
1156
{ -9, 52 }, { -11, 68 }, { 9, -2 }, { 30, -10 },
1157
{ 31, -4 }, { 33, -1 }, { 33, 7 }, { 31, 12 },
1158
{ 37, 23 }, { 31, 38 }, { 20, 64 }, { 9, -2 },
1159
{ 30, -10 }, { 31, -4 }, { 33, -1 }, { 33, 7 },
1160
{ 31, 12 }, { 37, 23 }, { 31, 38 }, { 20, 64 },
1161
{ -9, 71 }, { -7, 37 }, { -8, 44 }, { -11, 49 },
1162
{ -10, 56 }, { -12, 59 }, { -8, 63 }, { -9, 67 },
1163
{ -6, 68 }, { -10, 79 }, { -3, 78 }, { -8, 74 },
1164
{ -9, 72 }, { -10, 72 }, { -18, 75 }, { -12, 71 },
1165
{ -11, 63 }, { -5, 70 }, { -17, 75 }, { -14, 72 },
1166
{ -16, 67 }, { -8, 53 }, { -14, 59 }, { -9, 52 },
1167
{ -11, 68 }, { -3, 78 }, { -8, 74 }, { -9, 72 },
1168
{ -10, 72 }, { -18, 75 }, { -12, 71 }, { -11, 63 },
1169
{ -5, 70 }, { -17, 75 }, { -14, 72 }, { -16, 67 },
1170
{ -8, 53 }, { -14, 59 }, { -9, 52 }, { -11, 68 },
1171
{ 9, -2 }, { 30, -10 }, { 31, -4 }, { 33, -1 },
1172
{ 33, 7 }, { 31, 12 }, { 37, 23 }, { 31, 38 },
1173
{ 20, 64 }, { 9, -2 }, { 30, -10 }, { 31, -4 },
1174
{ 33, -1 }, { 33, 7 }, { 31, 12 }, { 37, 23 },
1175
{ 31, 38 }, { 20, 64 }, { -9, 71 }, { -7, 37 },
1176
{ -8, 44 }, { -11, 49 }, { -10, 56 }, { -12, 59 },
1177
{ -8, 63 }, { -9, 67 }, { -6, 68 }, { -10, 79 },
1178
{ -22, 127 }, { -25, 127 }, { -25, 120 }, { -27, 127 },
1179
{ -19, 114 }, { -23, 117 }, { -25, 118 }, { -26, 117 },
1180
{ -24, 113 }, { -28, 118 }, { -31, 120 }, { -37, 124 },
1181
{ -10, 94 }, { -15, 102 }, { -10, 99 }, { -13, 106 },
1182
{ -50, 127 }, { -5, 92 }, { 17, 57 }, { -5, 86 },
1183
{ -13, 94 }, { -12, 91 }, { -2, 77 }, { 0, 71 },
1184
{ -1, 73 }, { 4, 64 }, { -7, 81 }, { 5, 64 },
1185
{ 15, 57 }, { 1, 67 }, { 0, 68 }, { -10, 67 },
1186
{ 1, 68 }, { 0, 77 }, { 2, 64 }, { 0, 68 },
1187
{ -5, 78 }, { 7, 55 }, { 5, 59 }, { 2, 65 },
1188
{ 14, 54 }, { 15, 44 }, { 5, 60 }, { 2, 70 },
1189
{ -22, 127 }, { -25, 127 }, { -25, 120 }, { -27, 127 },
1190
{ -19, 114 }, { -23, 117 }, { -25, 118 }, { -26, 117 },
1191
{ -24, 113 }, { -28, 118 }, { -31, 120 }, { -37, 124 },
1192
{ -10, 94 }, { -15, 102 }, { -10, 99 }, { -13, 106 },
1193
{ -50, 127 }, { -5, 92 }, { 17, 57 }, { -5, 86 },
1194
{ -13, 94 }, { -12, 91 }, { -2, 77 }, { 0, 71 },
1195
{ -1, 73 }, { 4, 64 }, { -7, 81 }, { 5, 64 },
1196
{ 15, 57 }, { 1, 67 }, { 0, 68 }, { -10, 67 },
1197
{ 1, 68 }, { 0, 77 }, { 2, 64 }, { 0, 68 },
1198
{ -5, 78 }, { 7, 55 }, { 5, 59 }, { 2, 65 },
1199
{ 14, 54 }, { 15, 44 }, { 5, 60 }, { 2, 70 },
1200
{ 17, -13 }, { 16, -9 }, { 17, -12 }, { 27, -21 },
1201
{ 37, -30 }, { 41, -40 }, { 42, -41 }, { 48, -47 },
1202
{ 39, -32 }, { 46, -40 }, { 52, -51 }, { 46, -41 },
1203
{ 52, -39 }, { 43, -19 }, { 32, 11 }, { 61, -55 },
1204
{ 56, -46 }, { 62, -50 }, { 81, -67 }, { 45, -20 },
1205
{ 35, -2 }, { 28, 15 }, { 34, 1 }, { 39, 1 },
1206
{ 30, 17 }, { 20, 38 }, { 18, 45 }, { 15, 54 },
1207
{ 0, 79 }, { 36, -16 }, { 37, -14 }, { 37, -17 },
1208
{ 32, 1 }, { 34, 15 }, { 29, 15 }, { 24, 25 },
1209
{ 34, 22 }, { 31, 16 }, { 35, 18 }, { 31, 28 },
1210
{ 33, 41 }, { 36, 28 }, { 27, 47 }, { 21, 62 },
1211
{ 17, -13 }, { 16, -9 }, { 17, -12 }, { 27, -21 },
1212
{ 37, -30 }, { 41, -40 }, { 42, -41 }, { 48, -47 },
1213
{ 39, -32 }, { 46, -40 }, { 52, -51 }, { 46, -41 },
1214
{ 52, -39 }, { 43, -19 }, { 32, 11 }, { 61, -55 },
1215
{ 56, -46 }, { 62, -50 }, { 81, -67 }, { 45, -20 },
1216
{ 35, -2 }, { 28, 15 }, { 34, 1 }, { 39, 1 },
1217
{ 30, 17 }, { 20, 38 }, { 18, 45 }, { 15, 54 },
1218
{ 0, 79 }, { 36, -16 }, { 37, -14 }, { 37, -17 },
1219
{ 32, 1 }, { 34, 15 }, { 29, 15 }, { 24, 25 },
1220
{ 34, 22 }, { 31, 16 }, { 35, 18 }, { 31, 28 },
1221
{ 33, 41 }, { 36, 28 }, { 27, 47 }, { 21, 62 },
1222
{ -24, 115 }, { -22, 82 }, { -9, 62 }, { 0, 53 },
1223
{ 0, 59 }, { -14, 85 }, { -13, 89 }, { -13, 94 },
1224
{ -11, 92 }, { -29, 127 }, { -21, 100 }, { -14, 57 },
1225
{ -12, 67 }, { -11, 71 }, { -10, 77 }, { -21, 85 },
1226
{ -16, 88 }, { -23, 104 }, { -15, 98 }, { -37, 127 },
1227
{ -10, 82 }, { -8, 48 }, { -8, 61 }, { -8, 66 },
1228
{ -7, 70 }, { -14, 75 }, { -10, 79 }, { -9, 83 },
1229
{ -12, 92 }, { -18, 108 }, { -24, 115 }, { -22, 82 },
1230
{ -9, 62 }, { 0, 53 }, { 0, 59 }, { -14, 85 },
1231
{ -13, 89 }, { -13, 94 }, { -11, 92 }, { -29, 127 },
1232
{ -21, 100 }, { -14, 57 }, { -12, 67 }, { -11, 71 },
1233
{ -10, 77 }, { -21, 85 }, { -16, 88 }, { -23, 104 },
1234
{ -15, 98 }, { -37, 127 }, { -10, 82 }, { -8, 48 },
1235
{ -8, 61 }, { -8, 66 }, { -7, 70 }, { -14, 75 },
1236
{ -10, 79 }, { -9, 83 }, { -12, 92 }, { -18, 108 },
1237
{ -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 },
1238
{ -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 },
1239
{ -5, 79 }, { -11, 104 }, { -11, 91 }, { -30, 127 }
1240
}
1241
};
1242
1243
const uint8_t x264_cabac_range_lps[64][4] =
1244
{
1245
{ 2, 2, 2, 2}, { 6, 7, 8, 9}, { 6, 7, 9, 10}, { 6, 8, 9, 11},
1246
{ 7, 8, 10, 11}, { 7, 9, 10, 12}, { 7, 9, 11, 12}, { 8, 9, 11, 13},
1247
{ 8, 10, 12, 14}, { 9, 11, 12, 14}, { 9, 11, 13, 15}, { 10, 12, 14, 16},
1248
{ 10, 12, 15, 17}, { 11, 13, 15, 18}, { 11, 14, 16, 19}, { 12, 14, 17, 20},
1249
{ 12, 15, 18, 21}, { 13, 16, 19, 22}, { 14, 17, 20, 23}, { 14, 18, 21, 24},
1250
{ 15, 19, 22, 25}, { 16, 20, 23, 27}, { 17, 21, 25, 28}, { 18, 22, 26, 30},
1251
{ 19, 23, 27, 31}, { 20, 24, 29, 33}, { 21, 26, 30, 35}, { 22, 27, 32, 37},
1252
{ 23, 28, 33, 39}, { 24, 30, 35, 41}, { 26, 31, 37, 43}, { 27, 33, 39, 45},
1253
{ 29, 35, 41, 48}, { 30, 37, 43, 50}, { 32, 39, 46, 53}, { 33, 41, 48, 56},
1254
{ 35, 43, 51, 59}, { 37, 45, 54, 62}, { 39, 48, 56, 65}, { 41, 50, 59, 69},
1255
{ 43, 53, 63, 72}, { 46, 56, 66, 76}, { 48, 59, 69, 80}, { 51, 62, 73, 85},
1256
{ 53, 65, 77, 89}, { 56, 69, 81, 94}, { 59, 72, 86, 99}, { 62, 76, 90, 104},
1257
{ 66, 80, 95, 110}, { 69, 85, 100, 116}, { 73, 89, 105, 122}, { 77, 94, 111, 128},
1258
{ 81, 99, 117, 135}, { 85, 104, 123, 142}, { 90, 110, 130, 150}, { 95, 116, 137, 158},
1259
{100, 122, 144, 166}, {105, 128, 152, 175}, {111, 135, 160, 185}, {116, 142, 169, 195},
1260
{123, 150, 178, 205}, {128, 158, 187, 216}, {128, 167, 197, 227}, {128, 176, 208, 240}
1261
};
1262
1263
const uint8_t x264_cabac_transition[128][2] =
1264
{
1265
{ 0, 0}, { 1, 1}, { 2, 50}, { 51, 3}, { 2, 50}, { 51, 3}, { 4, 52}, { 53, 5},
1266
{ 6, 52}, { 53, 7}, { 8, 52}, { 53, 9}, { 10, 54}, { 55, 11}, { 12, 54}, { 55, 13},
1267
{ 14, 54}, { 55, 15}, { 16, 56}, { 57, 17}, { 18, 56}, { 57, 19}, { 20, 56}, { 57, 21},
1268
{ 22, 58}, { 59, 23}, { 24, 58}, { 59, 25}, { 26, 60}, { 61, 27}, { 28, 60}, { 61, 29},
1269
{ 30, 60}, { 61, 31}, { 32, 62}, { 63, 33}, { 34, 62}, { 63, 35}, { 36, 64}, { 65, 37},
1270
{ 38, 66}, { 67, 39}, { 40, 66}, { 67, 41}, { 42, 66}, { 67, 43}, { 44, 68}, { 69, 45},
1271
{ 46, 68}, { 69, 47}, { 48, 70}, { 71, 49}, { 50, 72}, { 73, 51}, { 52, 72}, { 73, 53},
1272
{ 54, 74}, { 75, 55}, { 56, 74}, { 75, 57}, { 58, 76}, { 77, 59}, { 60, 78}, { 79, 61},
1273
{ 62, 78}, { 79, 63}, { 64, 80}, { 81, 65}, { 66, 82}, { 83, 67}, { 68, 82}, { 83, 69},
1274
{ 70, 84}, { 85, 71}, { 72, 84}, { 85, 73}, { 74, 88}, { 89, 75}, { 76, 88}, { 89, 77},
1275
{ 78, 90}, { 91, 79}, { 80, 90}, { 91, 81}, { 82, 94}, { 95, 83}, { 84, 94}, { 95, 85},
1276
{ 86, 96}, { 97, 87}, { 88, 96}, { 97, 89}, { 90, 100}, {101, 91}, { 92, 100}, {101, 93},
1277
{ 94, 102}, {103, 95}, { 96, 104}, {105, 97}, { 98, 104}, {105, 99}, {100, 108}, {109, 101},
1278
{102, 108}, {109, 103}, {104, 110}, {111, 105}, {106, 112}, {113, 107}, {108, 114}, {115, 109},
1279
{110, 116}, {117, 111}, {112, 118}, {119, 113}, {114, 118}, {119, 115}, {116, 122}, {123, 117},
1280
{118, 122}, {123, 119}, {120, 124}, {125, 121}, {122, 126}, {127, 123}, {124, 127}, {126, 125}
1281
};
1282
1283
const uint8_t x264_cabac_renorm_shift[64] =
1284
{
1285
6,5,4,4,3,3,3,3,2,2,2,2,2,2,2,2,
1286
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1287
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1288
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1289
};
1290
1291
/* -ln2(probability) */
1292
const uint16_t x264_cabac_entropy[128] =
1293
{
1294
FIX8(0.0273), FIX8(5.7370), FIX8(0.0288), FIX8(5.6618),
1295
FIX8(0.0303), FIX8(5.5866), FIX8(0.0320), FIX8(5.5114),
1296
FIX8(0.0337), FIX8(5.4362), FIX8(0.0355), FIX8(5.3610),
1297
FIX8(0.0375), FIX8(5.2859), FIX8(0.0395), FIX8(5.2106),
1298
FIX8(0.0416), FIX8(5.1354), FIX8(0.0439), FIX8(5.0602),
1299
FIX8(0.0463), FIX8(4.9851), FIX8(0.0488), FIX8(4.9099),
1300
FIX8(0.0515), FIX8(4.8347), FIX8(0.0543), FIX8(4.7595),
1301
FIX8(0.0572), FIX8(4.6843), FIX8(0.0604), FIX8(4.6091),
1302
FIX8(0.0637), FIX8(4.5339), FIX8(0.0671), FIX8(4.4588),
1303
FIX8(0.0708), FIX8(4.3836), FIX8(0.0747), FIX8(4.3083),
1304
FIX8(0.0788), FIX8(4.2332), FIX8(0.0832), FIX8(4.1580),
1305
FIX8(0.0878), FIX8(4.0828), FIX8(0.0926), FIX8(4.0076),
1306
FIX8(0.0977), FIX8(3.9324), FIX8(0.1032), FIX8(3.8572),
1307
FIX8(0.1089), FIX8(3.7820), FIX8(0.1149), FIX8(3.7068),
1308
FIX8(0.1214), FIX8(3.6316), FIX8(0.1282), FIX8(3.5565),
1309
FIX8(0.1353), FIX8(3.4813), FIX8(0.1429), FIX8(3.4061),
1310
FIX8(0.1510), FIX8(3.3309), FIX8(0.1596), FIX8(3.2557),
1311
FIX8(0.1686), FIX8(3.1805), FIX8(0.1782), FIX8(3.1053),
1312
FIX8(0.1884), FIX8(3.0301), FIX8(0.1992), FIX8(2.9549),
1313
FIX8(0.2107), FIX8(2.8797), FIX8(0.2229), FIX8(2.8046),
1314
FIX8(0.2358), FIX8(2.7294), FIX8(0.2496), FIX8(2.6542),
1315
FIX8(0.2642), FIX8(2.5790), FIX8(0.2798), FIX8(2.5038),
1316
FIX8(0.2964), FIX8(2.4286), FIX8(0.3142), FIX8(2.3534),
1317
FIX8(0.3331), FIX8(2.2782), FIX8(0.3532), FIX8(2.2030),
1318
FIX8(0.3748), FIX8(2.1278), FIX8(0.3979), FIX8(2.0527),
1319
FIX8(0.4226), FIX8(1.9775), FIX8(0.4491), FIX8(1.9023),
1320
FIX8(0.4776), FIX8(1.8271), FIX8(0.5082), FIX8(1.7519),
1321
FIX8(0.5412), FIX8(1.6767), FIX8(0.5768), FIX8(1.6015),
1322
FIX8(0.6152), FIX8(1.5263), FIX8(0.6568), FIX8(1.4511),
1323
FIX8(0.7020), FIX8(1.3759), FIX8(0.7513), FIX8(1.3008),
1324
FIX8(0.8050), FIX8(1.2256), FIX8(0.8638), FIX8(1.1504),
1325
FIX8(0.9285), FIX8(1.0752), FIX8(1.0000), FIX8(1.0000)
1326
};
1327
1328
uint8_t x264_cabac_contexts[4][QP_MAX_SPEC+1][1024];
1329
1330
void x264_cabac_init( x264_t *h )
1331
{
1332
int ctx_count = CHROMA444 ? 1024 : 460;
1333
for( int i = 0; i < 4; i++ )
1334
{
1335
const int8_t (*cabac_context_init)[1024][2] = i == 0 ? &x264_cabac_context_init_I
1336
: &x264_cabac_context_init_PB[i-1];
1337
for( int qp = 0; qp <= QP_MAX_SPEC; qp++ )
1338
for( int j = 0; j < ctx_count; j++ )
1339
{
1340
int state = x264_clip3( (((*cabac_context_init)[j][0] * qp) >> 4) + (*cabac_context_init)[j][1], 1, 126 );
1341
x264_cabac_contexts[i][qp][j] = (X264_MIN( state, 127-state ) << 1) | (state >> 6);
1342
}
1343
}
1344
}
1345
1346
/*****************************************************************************
1347
*
1348
*****************************************************************************/
1349
void x264_cabac_context_init( x264_t *h, x264_cabac_t *cb, int i_slice_type, int i_qp, int i_model )
1350
{
1351
memcpy( cb->state, x264_cabac_contexts[i_slice_type == SLICE_TYPE_I ? 0 : i_model + 1][i_qp], CHROMA444 ? 1024 : 460 );
1352
}
1353
1354
void x264_cabac_encode_init_core( x264_cabac_t *cb )
1355
{
1356
cb->i_low = 0;
1357
cb->i_range = 0x01FE;
1358
cb->i_queue = -9; // the first bit will be shifted away and not written
1359
cb->i_bytes_outstanding = 0;
1360
}
1361
1362
void x264_cabac_encode_init( x264_cabac_t *cb, uint8_t *p_data, uint8_t *p_end )
1363
{
1364
x264_cabac_encode_init_core( cb );
1365
cb->p_start = p_data;
1366
cb->p = p_data;
1367
cb->p_end = p_end;
1368
}
1369
1370
static inline void x264_cabac_putbyte( x264_cabac_t *cb )
1371
{
1372
if( cb->i_queue >= 0 )
1373
{
1374
int out = cb->i_low >> (cb->i_queue+10);
1375
cb->i_low &= (0x400<<cb->i_queue)-1;
1376
cb->i_queue -= 8;
1377
1378
if( (out & 0xff) == 0xff )
1379
cb->i_bytes_outstanding++;
1380
else
1381
{
1382
int carry = out >> 8;
1383
int bytes_outstanding = cb->i_bytes_outstanding;
1384
// this can't modify before the beginning of the stream because
1385
// that would correspond to a probability > 1.
1386
// it will write before the beginning of the stream, which is ok
1387
// because a slice header always comes before cabac data.
1388
// this can't carry beyond the one byte, because any 0xff bytes
1389
// are in bytes_outstanding and thus not written yet.
1390
cb->p[-1] += carry;
1391
while( bytes_outstanding > 0 )
1392
{
1393
*(cb->p++) = carry-1;
1394
bytes_outstanding--;
1395
}
1396
*(cb->p++) = out;
1397
cb->i_bytes_outstanding = 0;
1398
}
1399
}
1400
}
1401
1402
static inline void x264_cabac_encode_renorm( x264_cabac_t *cb )
1403
{
1404
int shift = x264_cabac_renorm_shift[cb->i_range>>3];
1405
cb->i_range <<= shift;
1406
cb->i_low <<= shift;
1407
cb->i_queue += shift;
1408
x264_cabac_putbyte( cb );
1409
}
1410
1411
/* Making custom versions of this function, even in asm, for the cases where
1412
* b is known to be 0 or 1, proved to be somewhat useful on x86_32 with GCC 3.4
1413
* but nearly useless with GCC 4.3 and worse than useless on x86_64. */
1414
void x264_cabac_encode_decision_c( x264_cabac_t *cb, int i_ctx, int b )
1415
{
1416
int i_state = cb->state[i_ctx];
1417
int i_range_lps = x264_cabac_range_lps[i_state>>1][(cb->i_range>>6)-4];
1418
cb->i_range -= i_range_lps;
1419
if( b != (i_state & 1) )
1420
{
1421
cb->i_low += cb->i_range;
1422
cb->i_range = i_range_lps;
1423
}
1424
cb->state[i_ctx] = x264_cabac_transition[i_state][b];
1425
x264_cabac_encode_renorm( cb );
1426
}
1427
1428
/* Note: b is negated for this function */
1429
void x264_cabac_encode_bypass_c( x264_cabac_t *cb, int b )
1430
{
1431
cb->i_low <<= 1;
1432
cb->i_low += b & cb->i_range;
1433
cb->i_queue += 1;
1434
x264_cabac_putbyte( cb );
1435
}
1436
1437
static const int bypass_lut[16] =
1438
{
1439
-1, 0x2, 0x14, 0x68, 0x1d0, 0x7a0, 0x1f40, 0x7e80,
1440
0x1fd00, 0x7fa00, 0x1ff400, 0x7fe800, 0x1ffd000, 0x7ffa000, 0x1fff4000, 0x7ffe8000
1441
};
1442
1443
void x264_cabac_encode_ue_bypass( x264_cabac_t *cb, int exp_bits, int val )
1444
{
1445
uint32_t v = val + (1<<exp_bits);
1446
int k = 31 - x264_clz( v );
1447
uint32_t x = (bypass_lut[k-exp_bits]<<exp_bits) + v;
1448
k = 2*k+1-exp_bits;
1449
int i = ((k-1)&7)+1;
1450
do {
1451
k -= i;
1452
cb->i_low <<= i;
1453
cb->i_low += ((x>>k)&0xff) * cb->i_range;
1454
cb->i_queue += i;
1455
x264_cabac_putbyte( cb );
1456
i = 8;
1457
} while( k > 0 );
1458
}
1459
1460
void x264_cabac_encode_terminal_c( x264_cabac_t *cb )
1461
{
1462
cb->i_range -= 2;
1463
x264_cabac_encode_renorm( cb );
1464
}
1465
1466
void x264_cabac_encode_flush( x264_t *h, x264_cabac_t *cb )
1467
{
1468
cb->i_low += cb->i_range - 2;
1469
cb->i_low |= 1;
1470
cb->i_low <<= 9;
1471
cb->i_queue += 9;
1472
x264_cabac_putbyte( cb );
1473
x264_cabac_putbyte( cb );
1474
cb->i_low <<= -cb->i_queue;
1475
cb->i_low |= (0x35a4e4f5 >> (h->i_frame & 31) & 1) << 10;
1476
cb->i_queue = 0;
1477
x264_cabac_putbyte( cb );
1478
1479
while( cb->i_bytes_outstanding > 0 )
1480
{
1481
*(cb->p++) = 0xff;
1482
cb->i_bytes_outstanding--;
1483
}
1484
}
1485
1486
1487