source: 3DVCSoftware/trunk/source/Lib/TLibCommon/ContextTables.h @ 21

Last change on this file since 21 was 5, checked in by hhi, 13 years ago

Clean version with cfg-files

  • Property svn:eol-style set to native
File size: 60.9 KB
Line 
1/* The copyright in this software is being made available under the BSD
2 * License, included below. This software may be subject to other third party
3 * and contributor rights, including patent rights, and no such rights are
4 * granted under this license.
5 *
6 * Copyright (c) 2010-2011, ISO/IEC
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 *
12 *  * Redistributions of source code must retain the above copyright notice,
13 *    this list of conditions and the following disclaimer.
14 *  * Redistributions in binary form must reproduce the above copyright notice,
15 *    this list of conditions and the following disclaimer in the documentation
16 *    and/or other materials provided with the distribution.
17 *  * Neither the name of the ISO/IEC nor the names of its contributors may
18 *    be used to endorse or promote products derived from this software without
19 *    specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
25 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34
35
36/** \file     ContextTables.h
37    \brief    Defines constants and tables for SBAC
38    \todo     number of context models is not matched to actual use, should be fixed
39*/
40
41#ifndef __CONTEXTTABLES__
42#define __CONTEXTTABLES__
43
44// ====================================================================================================================
45// Constants
46// ====================================================================================================================
47
48#define NUM_SPLIT_FLAG_CTX            3       ///< number of context models for split flag
49#define NUM_SKIP_FLAG_CTX             3       ///< number of context models for skip flag
50
51#define NUM_ALF_CRTL_FLAG_CTX         3       ///< number of context models for ALF ctrl flag
52
53#define NUM_MERGE_FLAG_EXT_CTX        3       ///< number of context models for merge flag of merge extended
54#define NUM_MERGE_IDX_EXT_CTX         4       ///< number of context models for merge index of merge extended
55#define NUM_MV_MERGE_IDX_EXT_CTX      5       ///< number of context models for merge index of merge extended
56#define NUM_RES_PRED_FLAG_CTX         3       ///< number of context for residual prediction flag     
57
58#define NUM_ALF_CTRL_FLAG_CTX         3       ///< number of context models for ALF control flag
59#define NUM_PART_SIZE_CTX             5       ///< number of context models for partition size
60#define NUM_PRED_MODE_CTX             2       ///< number of context models for prediction mode
61#if MTK_DCM_MPM
62#define NUM_ADI_CTX                   3       ///< number of context models for intra prediction
63#else
64#define NUM_ADI_CTX                   2
65#endif
66#if ADD_PLANAR_MODE
67#define NUM_PLANARFLAG_CTX            2       ///< number of context models for planar mode flag (intra prediction)
68#endif
69
70#define NUM_CHROMA_PRED_CTX           4       ///< number of context models for intra prediction (chroma)
71#define NUM_INTER_DIR_CTX             4       ///< number of context models for inter prediction direction
72#define NUM_MV_RES_CTX                7       ///< number of context models for motion vector difference
73
74#define NUM_REF_NO_CTX                6       ///< number of context models for reference index
75#define NUM_TRANS_SUBDIV_FLAG_CTX     10      ///< number of context models for transform subdivision flags
76#define NUM_QT_CBF_CTX                15      ///< number of context models for QT CBF
77#define NUM_QT_ROOT_CBF_CTX           4       ///< number of context models for QT ROOT CBF
78#define NUM_DELTA_QP_CTX              4       ///< number of context models for dQP
79#define NUM_CBF_CTX                   4       ///< number of context models for CBF
80
81#define NUM_SIG_FLAG_CTX              16      ///< number of context models for sig flag
82#if PCP_SIGMAP_SIMPLE_LAST
83#define NUM_CTX_LAST_FLAG_XY          26      ///< number of context models for PCP last flag
84#else
85#define NUM_LAST_FLAG_CTX             16      ///< number of context models for last flag
86#endif
87#define NUM_ONE_FLAG_CTX              40      ///< number of context models for greater than one
88#define NUM_ABS_FLAG_CTX              40      ///< number of context models for magnitude
89
90#define NUM_MVP_IDX_CTX               2       ///< number of context models for MVP index
91
92#define NUM_ALF_FLAG_CTX              1       ///< number of context models for ALF flag
93#define NUM_ALF_UVLC_CTX              2       ///< number of context models for ALF UVLC (filter length)
94#define NUM_ALF_SVLC_CTX              3       ///< number of context models for ALF SVLC (filter coeff.)
95
96#if MTK_SAO
97#define NUM_AO_FLAG_CTX              1       ///< number of context models for AO flag
98#define NUM_AO_UVLC_CTX              2       ///< number of context models for AO UVLC (filter length)
99#define NUM_AO_SVLC_CTX              3       ///< number of context models for AO SVLC (filter coeff.)
100#endif
101
102#define NUM_VIEW_IDX_CTX              6
103
104#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
105#define NUM_DMM_CTX                   2
106#define NUM_WEDGE_CTX                 4
107#endif
108
109// ====================================================================================================================
110// Tables
111// ====================================================================================================================
112
113// mapping table for mapping 8x8 sigmap to 4x4 sigmap
114static const int  pos2ctx_map8x8  []  =
115{
116  0,  1,  2,  3,  4,  5,  5,  4,  4,  3,  3,  4,  4,  4,  5,  5,
117  4,  4,  4,  4,  3,  3,  6,  7,  7,  7,  8,  9, 10,  9,  8,  7,
118  7,  6, 11, 12, 13, 11,  6,  7,  8,  9, 14, 10,  9,  8,  6, 11,
119  12, 13, 11,  6,  9, 14, 10,  9, 11, 12, 13, 11 ,14, 10, 12, 14
120};
121
122// mapping table for mapping 8x8 lastbit to 4x4 lastbit
123static const int  pos2ctx_last8x8 []  =
124{
125  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
126  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
127  3,  3,  3,  3,  3,  3,  3,  3,  4,  4,  4,  4,  4,  4,  4,  4,
128  5,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,  8,  8,  8,  8
129};
130
131// no-mapping case
132static const int  pos2ctx_nomap   []  =
133{
134  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15
135};
136
137
138// initial probability for split flag
139static const Short
140INIT_SPLIT_FLAG[3][NUM_SPLIT_FLAG_CTX][2] =
141{
142  {
143    {   -7,   68 }, {  -10,   87 }, {  -10,  105 }
144  },
145  {
146    {  -14,   71 }, {   -6,   73 }, {   -6,   91 }
147  },
148  {
149    {  -14,   71 }, {   -7,   74 }, {  -10,   92 }
150  }
151};
152
153// initial probability for skip flag
154static const Short
155INIT_SKIP_FLAG[3][NUM_SKIP_FLAG_CTX][2] =
156{
157  {
158    {    0,   64 }, {    0,   64 }, {    0,   64 }
159  },
160  {
161    {    0,   64 }, {    0,   64 }, {    0,   64 }
162  },
163  {
164    {    0,   64 }, {    0,   64 }, {    0,   64 }
165  }
166};
167
168// initial probability for skip flag
169static const Short
170INIT_ALF_CTRL_FLAG[3][NUM_ALF_CTRL_FLAG_CTX][2] =
171{
172  {
173    {    0,   64 }, {    0,   64 }, {    0,   64 }
174  },
175  {
176    {    0,   64 }, {    0,   64 }, {    0,   64 }
177  },
178  {
179    {    0,   64 }, {    0,   64 }, {    0,   64 }
180  }
181};
182
183// initial probability for merge flag
184static const Short
185INIT_MERGE_FLAG_EXT[3][NUM_MERGE_FLAG_EXT_CTX][2] =
186{
187  {
188    {    0,   64 }, {    0,   64 }, {    0,   64 }
189  },
190  {
191    {    0,   64 }, {    0,   64 }, {    0,   64 }
192  },
193  {
194    {    0,   64 }, {    0,   64 }, {    0,   64 }
195  }
196};
197
198static const Short
199INIT_MERGE_IDX_EXT[3][NUM_MERGE_IDX_EXT_CTX][2] =
200{
201  {
202    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }
203  },
204  {
205    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }
206  },
207  {
208    {    1,   65 }, {    6,   42 }, {   -7,   75 }, {   -4,   72 }
209  }
210};
211
212
213static const Short
214INIT_MV_MERGE_IDX_EXT[3][NUM_MV_MERGE_IDX_EXT_CTX][2] =
215{
216  {
217    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }
218  },
219  {
220    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }
221  },
222  {
223    {    0,   64 }, {    1,   65 }, {    6,   42 }, {   -7,   75 }, {   -4,   72 }
224  }
225};
226
227
228static const Short
229INIT_RES_PRED_FLAG[3][NUM_RES_PRED_FLAG_CTX][2] =
230{
231  {
232    {    0,   64 }, {    0,   64 }, {    0,   64 }
233  },
234  {
235    {    0,   64 }, {    0,   64 }, {    0,   64 }
236  },
237  {
238    {    0,   64 }, {    0,   64 }, {    0,   64 }
239  }
240};
241
242
243// initial probability for PU size
244static const Short
245INIT_PART_SIZE[3][NUM_PART_SIZE_CTX][2] =
246{
247  {
248    {    0,   73 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
249    {    0,   64 }
250  },
251  {
252    {   -1,   64 }, {   -3,   63 }, {    6,   78 }, {    0,   64 }, 
253    {    0,   64 }
254  },
255  {
256    {    6,   50 }, {   -1,   56 }, {   13,   53 }, {  -11,   76 }, 
257    {  -11,   70 }
258  }
259};
260
261// initial probability for prediction mode
262static const Short
263INIT_PRED_MODE[3][NUM_PRED_MODE_CTX][2] =
264{
265  {
266    {    0,   64 }, {    0,   64 }
267  },
268  {
269    {    0,   64 }, {  -25,   89 }
270  },
271  {
272    {    0,   64 }, {    0,   64 }
273  }
274};
275
276// initial probability for intra direction of luma
277#if MTK_DCM_MPM
278static const Short
279INIT_INTRA_PRED_MODE[3][NUM_ADI_CTX][2] =
280{
281  {
282    {    2,   54 }, {  -3,   65  }, {   -3,   65 }
283  },
284  {
285    {    0,   50 }, {  -2,   61  }, {   -2,   61 }
286  },
287  {
288    {    0,   51 }, {  1,   55   }, {    1,   55 }
289  }
290};
291#else
292static const Short
293INIT_INTRA_PRED_MODE[3][NUM_ADI_CTX][2] =
294{
295  {
296    {    2,   54 }, {   -3,   65 }
297  },
298  {
299    {    0,   50 }, {   -2,   61 }
300  },
301  {
302    {    0,   51 }, {    1,   55 }
303  }
304};
305#endif
306
307#if ADD_PLANAR_MODE
308// initial probability for planar mode flag
309static const Short
310INIT_PLANARFLAG[3][NUM_PLANARFLAG_CTX][2] =
311{
312  {
313    {    0,   64 }, {    0,   64 }
314  },
315  {
316    {    0,   64 }, {    0,   64 }
317  },
318  {
319    {    0,   64 }, {    0,   64 }
320  }
321};
322#endif
323
324// initial probability for intra direction of chroma
325static const Short
326INIT_CHROMA_PRED_MODE[3][4][2] =
327{
328#if CHROMA_CODEWORD
329  {
330    {  0,   64 }, {   0,   64 }, {  0,  64 }, {  0,  64 }
331  },
332  {
333    {  0,   64 }, {   0,   64 }, {  0,  64 }, {  0,  64 }
334  },
335  {
336    {  0,   64 }, {   0,   64 }, {  0,  64 }, {  0,  64 }
337  }
338#else
339  {
340    {  -14,   78 }, {   -5,   78 }, {  -13,  109 }, {  -13,  100 }
341  },
342  {
343    {  -26,  113 }, {  -13,   92 }, {  -23,  110 }, {  -11,  105 }
344  },
345  {
346    {  -20,  101 }, {  -25,  111 }, {  -29,  118 }, {  -24,  121 }
347  }
348#endif
349};
350
351// initial probability for temporal direction
352static const Short
353INIT_INTER_DIR[3][4][2] =
354{
355  {
356    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }
357  },
358  {
359    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }
360  },
361  {
362    {   -2,   58 }, {   -5,   70 }, {   -9,   85 }, {    1,   61 }
363  }
364};
365
366// initial probability for motion vector difference
367static const Short INIT_MVD[3][14][2] =
368{
369  {
370    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
371    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
372    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
373    {    0,   64 }, {    0,   64 }
374  },
375  {
376    {   -6,   80 }, {   -6,   84 }, {   -9,   90 }, {    4,   62 }, 
377    {   13,   55 }, {    2,   70 }, {    8,   74 }, {   -6,   77 }, 
378    {   -7,   84 }, {   -9,   89 }, {    5,   59 }, {   10,   62 }, 
379    {    4,   68 }, {    7,   75 }
380  },
381  {
382    {   -4,   75 }, {   -5,   82 }, {  -12,   94 }, {    7,   55 }, 
383    {   11,   59 }, {    6,   63 }, {    8,   71 }, {   -2,   71 }, 
384    {   -5,   81 }, {  -21,  111 }, {    6,   58 }, {   10,   60 }, 
385    {    5,   64 }, {   10,   67 }
386  }
387};
388
389// initial probability for reference frame index
390static const Short
391INIT_REF_PIC[3][NUM_REF_NO_CTX][2] =
392{
393  {
394    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
395    {    0,   64 }, {    0,   64 }
396  },
397  {
398    {   -6,   59 }, {  -10,   75 }, {   -8,   75 }, {  -17,   96 }, 
399    {    1,   59 }, {    0,   64 }
400  },
401  {
402    {   -9,   55 }, {   -9,   71 }, {   -9,   76 }, {  -12,   86 }, 
403    {  -18,   55 }, {    0,   64 }
404  }
405};
406
407
408static const Short
409INIT_VIEW_IDX[3][NUM_VIEW_IDX_CTX][2] =
410{
411    {
412      {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
413      {    0,   64 }, {    0,   64 }
414    },
415    {
416      {   -6,   59 }, {  -10,   75 }, {   -8,   75 }, {  -17,   96 },
417      {    1,   59 }, {    0,   64 }
418    },
419    {
420      {   -9,   55 }, {   -9,   71 }, {   -9,   76 }, {  -12,   86 },
421      {  -18,   55 }, {    0,   64 }
422    }
423};
424
425// initial probability for dQP
426static const Short
427INIT_DQP[3][NUM_DELTA_QP_CTX][2] =
428{
429  {
430    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }
431  },
432  {
433    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }
434  },
435  {
436    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }
437  }
438};
439
440static const Short
441INIT_QT_CBF[3][3*NUM_QT_CBF_CTX][2] =
442{
443  {
444    {  -22,  116 }, {   -5,   75 }, {  -16,  112 }, {  -16,  111 }, 
445    {  -32,  165 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
446    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
447    {    0,   64 }, {    0,   64 }, {    0,   64 }, {  -35,  116 }, 
448    {  -12,   61 }, {   -9,   73 }, {  -10,   75 }, {  -14,   96 }, 
449    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
450    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
451    {    0,   64 }, {    0,   64 }, {  -29,  104 }, {  -12,   59 }, 
452    {   -5,   65 }, {   -6,   67 }, {  -11,   90 }, {    0,   64 }, 
453    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
454    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
455    {    0,   64 }
456  },
457  {
458    {  -18,   98 }, {  -41,  120 }, {  -29,  117 }, {  -23,  108 }, 
459    {  -35,  143 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
460    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
461    {    0,   64 }, {    0,   64 }, {    0,   64 }, {  -46,  114 }, 
462    {  -42,  119 }, {  -11,   74 }, {  -19,   90 }, {  -42,  139 }, 
463    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
464    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
465    {    0,   64 }, {    0,   64 }, {  -43,  107 }, {  -41,  118 }, 
466    {  -17,   86 }, {  -25,  101 }, {  -14,   91 }, {    0,   64 }, 
467    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
468    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
469    {    0,   64 }
470  },
471  {
472    {  -11,   80 }, {  -32,   83 }, {  -19,   89 }, {  -16,   85 }, 
473    {  -19,  102 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
474    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
475    {    0,   64 }, {    0,   64 }, {    0,   64 }, {  -22,   52 }, 
476    {  -48,  123 }, {   -7,   68 }, {  -37,  121 }, {  -58,  164 }, 
477    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
478    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
479    {    0,   64 }, {    0,   64 }, {  -19,   45 }, {  -48,  123 }, 
480    {  -21,   94 }, {   -9,   73 }, {  -42,  138 }, {    0,   64 }, 
481    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
482    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
483    {    0,   64 }
484  }
485};
486
487static const Short
488INIT_QT_ROOT_CBF[3][NUM_QT_ROOT_CBF_CTX][2] =
489{
490  {
491    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
492  },
493  {
494    {  -22,   85 }, {  -15,   86 }, {  -13,   84 }, {  -23,  116 },
495  },
496  {
497    {  -36,  103 }, {  -21,   95 }, {  -21,   97 }, {  -24,  114 },
498  }
499};
500
501#if PCP_SIGMAP_SIMPLE_LAST
502static const Short
503INIT_LAST_X[3][2*NUM_CTX_LAST_FLAG_XY][2] =
504{
505  {
506    {   8,  31 }, {   8,  39 }, {   8,  48 }, {  12,  31 },
507    {   8,  38 }, {   6,  45 }, {   3,  46 }, {  -1,  56 },
508    {  18,  16 }, {  14,  22 }, {  15,  22 }, {  16,  17 },
509    {  16,  16 }, {  12,  24 }, {  -4,  59 }, {  33, -26 },
510    {  18,   1 }, {  20,   2 }, {  22,  -1 }, {  17,  14 },
511    {  11,  21 }, {  31, -24 }, {  38, -38 }, {  12,  11 },
512    {  -4,  47 }, { -13,  69 }, {  32,  11 }, {  25,  27 },
513    {  50,  -1 }, {  32,  20 }, {  12,  38 }, {  18,  32 },
514    {  12,  41 }, {   5,  70 }, {  40,  -6 }, {  14,  29 },
515    {  17,  26 }, {   7,  43 }, {  15,  26 }, {  15,  27 },
516    {   9,  51 }, {   0,  64 }, {   0,  64 }, {   0,  64 },
517    {   0,  64 }, {   0,  64 }, {   0,  64 }, {   0,  64 },
518    {   0,  64 }, {   0,  64 }, {   0,  64 }, {   0,  64 }
519  },
520  {
521    {   9,  40 }, {   9,  44 }, {  10,  52 }, {  17,  24 },
522    {  21,  15 }, {  20,  20 }, {  14,  29 }, {   8,  46 },
523    {   7,  46 }, {  18,  18 }, {  26,   3 }, {  26,   0 },
524    {  25,   2 }, {  15,  18 }, {   9,  27 }, {  23,  20 },
525    {  19,  16 }, {  27,  -1 }, {  33, -19 }, {  38, -30 },
526    {  41, -39 }, {  40, -36 }, {  26, -12 }, {   3,  20 },
527    {  -7,  33 }, {  -4,  20 }, {  16,  42 }, {  16,  45 },
528    {  49,   7 }, {   6,  61 }, {  17,  36 }, {  24,  24 },
529    {  24,  21 }, {  61, -22 }, { -11, 101 }, {   6,  53 },
530    {  14,  40 }, {  17,  30 }, {  20,  22 }, { -10,  67 },
531    {  -6,  68 }, {   0,  64 }, {   0,  64 }, {   0,  64 },
532    {   0,  64 }, {   0,  64 }, {   0,  64 }, {   0,  64 },
533    {   0,  64 }, {   0,  64 }, {   0,  64 }, {   0,  64 }
534  },
535  {
536    {   9,  40 }, {   9,  44 }, {  10,  52 }, {  17,  24 },
537    {  21,  15 }, {  20,  20 }, {  14,  29 }, {   8,  46 },
538    {   7,  46 }, {  18,  18 }, {  26,   3 }, {  26,   0 },
539    {  25,   2 }, {  15,  18 }, {   9,  27 }, {  23,  20 },
540    {  19,  16 }, {  27,  -1 }, {  33, -19 }, {  38, -30 },
541    {  41, -39 }, {  40, -36 }, {  26, -12 }, {   3,  20 },
542    {  -7,  33 }, {  -4,  20 }, {  16,  42 }, {  16,  45 },
543    {  49,   7 }, {   6,  61 }, {  17,  36 }, {  24,  24 },
544    {  24,  21 }, {  61, -22 }, { -11, 101 }, {   6,  53 },
545    {  14,  40 }, {  17,  30 }, {  20,  22 }, { -10,  67 },
546    {  -6,  68 }, {   0,  64 }, {   0,  64 }, {   0,  64 },
547    {   0,  64 }, {   0,  64 }, {   0,  64 }, {   0,  64 },
548    {   0,  64 }, {   0,  64 }, {   0,  64 }, {   0,  64 }
549  }
550};
551
552static const Short
553INIT_LAST_Y[3][2*NUM_CTX_LAST_FLAG_XY][2] =
554{
555  {
556    {  19,  19 }, {  12,  36 }, {  16,  34 }, {  22,  18 },
557    {  12,  35 }, {  12,  35 }, {  12,  32 }, {   5,  46 },
558    {  16,  21 }, {  15,  20 }, {  17,  13 }, {  17,  14 },
559    {  19,  10 }, {  19,  12 }, {   4,  37 }, {  13,  22 },
560    {  22,  -4 }, {  27, -19 }, {  26, -12 }, {  18,   6 },
561    {   6,  27 }, {  12,  10 }, {  34, -33 }, {  38, -42 },
562    {  24, -15 }, {  14,   7 }, {  41,   7 }, {  45,   1 },
563    {  56,  -9 }, {  30,  22 }, {  14,  40 }, {  23,  24 },
564    {  19,  32 }, {  25,  26 }, {  29,  10 }, {  29,   4 },
565    {  19,  20 }, {  10,  37 }, {  12,  38 }, {  -2,  60 },
566    { -37, 114 }, {   0,  64 }, {   0,  64 }, {   0,  64 },
567    {   0,  64 }, {   0,  64 }, {   0,  64 }, {   0,  64 },
568    {   0,  64 }, {   0,  64 }, {   0,  64 }, {   0,  64 }
569  },
570  {
571    {  15,  29 }, {  14,  36 }, {  15,  41 }, {  25,   8 },
572    {  26,   4 }, {  25,  10 }, {  21,  16 }, {  12,  34 },
573    {  18,  21 }, {  25,   1 }, {  32, -12 }, {  32, -15 },
574    {  29, -11 }, {  24,  -5 }, {  13,  12 }, {  27,   6 },
575    {  40, -32 }, {  42, -39 }, {  40, -39 }, {  45, -51 },
576    {  43, -51 }, {  45, -56 }, {  38, -46 }, {  15,  -6 },
577    {  11,  -4 }, {  11,  -4 }, {  26,  29 }, {  28,  29 },
578    {  21,  46 }, {  15,  45 }, {  27,  17 }, {  29,  12 },
579    {  23,  15 }, {  -1,  57 }, {   6,  65 }, {  22,  17 },
580    {  31,  -4 }, {  37, -25 }, {  43, -44 }, {  43, -46 },
581    {  48, -44 }, {   0,  64 }, {   0,  64 }, {   0,  64 },
582    {   0,  64 }, {   0,  64 }, {   0,  64 }, {   0,  64 },
583    {   0,  64 }, {   0,  64 }, {   0,  64 }, {   0,  64 }
584  },
585  {
586    {  15,  29 }, {  14,  36 }, {  15,  41 }, {  25,   8 },
587    {  26,   4 }, {  25,  10 }, {  21,  16 }, {  12,  34 },
588    {  18,  21 }, {  25,   1 }, {  32, -12 }, {  32, -15 },
589    {  29, -11 }, {  24,  -5 }, {  13,  12 }, {  27,   6 },
590    {  40, -32 }, {  42, -39 }, {  40, -39 }, {  45, -51 },
591    {  43, -51 }, {  45, -56 }, {  38, -46 }, {  15,  -6 },
592    {  11,  -4 }, {  11,  -4 }, {  26,  29 }, {  28,  29 },
593    {  21,  46 }, {  15,  45 }, {  27,  17 }, {  29,  12 },
594    {  23,  15 }, {  -1,  57 }, {   6,  65 }, {  22,  17 },
595    {  31,  -4 }, {  37, -25 }, {  43, -44 }, {  43, -46 },
596    {  48, -44 }, {   0,  64 }, {   0,  64 }, {   0,  64 },
597    {   0,  64 }, {   0,  64 }, {   0,  64 }, {   0,  64 },
598    {   0,  64 }, {   0,  64 }, {   0,  64 }, {   0,  64 }
599  }
600};
601#endif
602
603#if SIMPLE_CONTEXT_SIG
604static const Short
605INIT_SIG_FLAG[3][128][2] =
606{
607  {
608    {   -3,  102 }, {  -17,  114 }, {   -7,   97 }, {  -12,   96 },
609    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
610    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
611    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
612    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
613    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
614    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
615    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
616    {   -5,   99 }, {   -9,   92 }, {   -5,   90 }, {   -7,   83 },
617    {   -3,   37 }, {   -1,   62 }, {   -5,   81 }, {   -2,   41 },
618    {    1,   64 }, {   -6,   82 }, {    0,   12 }, {    1,   43 },
619    {    0,   57 }, {   -1,   66 }, {   -4,   79 }, {    0,   64 },
620    {   23,   51 }, {    0,   69 }, {   10,   54 }, {    0,   65 },
621    {   -1,   42 }, {    4,   51 }, {   -3,   70 }, {  -12,   61 },
622    {   -4,   50 }, {   -2,   68 }, {   -18,  57 }, {    5,   38 },
623    {    1,   54 }, {   -3,   66 }, {   -9,   80 }, {    0,   64 },
624    {  -10,   91 }, {   -9,   76 }, {   -3,   61 }, {    1,   46 },
625    {  -13,   84 }, {  -13,   81 }, {   -2,   60 }, {   -5,   61 },
626    {  -11,   77 }, {  -10,   76 }, {   -3,   65 }, {   -3,   63 },
627    {   -4,   59 }, {  -14,   79 }, {    1,   61 }, {  -33,  126 },
628    {   19,   45 }, {    8,   48 }, {    2,   40 }, {   -3,   40 },
629    {    8,   46 }, {   16,   31 }, {  -10,   73 }, {  -51,  114 },
630    {    2,   52 }, {   -9,   71 }, {  -37,  118 }, {   -8,   38 },
631    {  -10,   64 }, {  -47,  113 }, { -105,  234 }, {  -32,  123 },
632    {   -4,   94 }, {   -2,   84 }, {   -4,   83 }, {   16,   39 },
633    {    0,   83 }, {   -1,   81 }, {   -4,   82 }, {  -16,   91 },
634    {   -9,   86 }, {   -8,   89 }, {   -2,   82 }, {  -14,   92 },
635    {  -16,   91 }, {   13,   44 }, {  -12,   91 }, {    0,   64 },
636    {   29,   42 }, {    1,   74 }, {   -6,   77 }, {   23,   41 },
637    {   13,   63 }, {   -6,   88 }, {   -8,   80 }, {   35,   17 },
638    {    0,   70 }, {  -17,  100 }, {  -25,  111 }, {  -39,  122 },
639    {   26,   29 }, {  -36,  114 }, {  -41,  130 }, {    0,   64 }
640  },
641  {
642    {   -7,   88 }, {    5,   52 }, {   -4,   74 }, {    5,   56 },
643    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
644    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
645    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
646    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
647    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
648    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
649    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
650    {    0,   75 }, {    1,   59 }, {   -1,   67 }, {   -3,   67 },
651    {    6,   29 }, {    2,   57 }, {   -5,   77 }, {   -5,   44 },
652    {   -4,   64 }, {   -7,   78 }, {   -9,   34 }, {    2,   43 },
653    {    2,   53 }, {    2,   60 }, {   -8,   83 }, {    0,   64 },
654    {   19,   22 }, {   11,   48 }, {    9,   51 }, {  -24,   95 },
655    {  -27,   82 }, {  -22,   92 }, {  -20,   89 }, {  -25,   82 },
656    {  -15,   77 }, {   24,   32 }, {  -31,   76 }, {  -19,   77 },
657    {  -21,   84 }, {  -23,   95 }, {  -35,  112 }, {    0,   64 },
658    {    2,   69 }, {  -10,   82 }, {   -1,   57 }, {   -7,   59 },
659    {   -5,   71 }, {  -13,   85 }, {  -28,  107 }, {  -29,  100 },
660    {  -21,   93 }, {  -28,  108 }, {   -6,   71 }, {  -48,  136 },
661    {  -35,  111 }, {  -10,   74 }, {    4,   56 }, {    5,   56 },
662    {   -3,   84 }, {  -35,  122 }, {  -42,  111 }, {  101, -147 },
663    {  -14,   87 }, {  -70,  179 }, {    6,   30 }, {    0,   64 },
664    {    8,   32 }, {  -64,  156 }, {    0,   64 }, {    0,   64 },
665    {  -65,  144 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
666    {    6,   67 }, {   -1,   72 }, {   -9,   84 }, {  -29,  100 },
667    {    4,   65 }, {    0,   70 }, {   -7,   80 }, {  -34,  117 },
668    {  -11,   79 }, {  -14,   91 }, {  -15,   93 }, {  -34,  119 },
669    {   26,   26 }, {  -34,  111 }, {  -35,  126 }, {    0,   64 },
670    {  -15,  103 }, {   25,   19 }, {   23,   29 }, {  -65,  142 },
671    {  -21,  108 }, {   27,   19 }, {  -34,  111 }, {  -71,  174 },
672    {  -30,  104 }, {   34,   12 }, { -144,  285 }, { -168,  304 },
673    {   43,    6 }, { -125,  248 }, { -129,  252 }, {    0,   64 }
674  },
675  {
676    {   -7,   88 }, {    5,   52 }, {   -4,   74 }, {    5,   56 },
677    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
678    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
679    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
680    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
681    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
682    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
683    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
684    {    0,   75 }, {    1,   59 }, {   -1,   67 }, {   -3,   67 },
685    {    6,   29 }, {    2,   57 }, {   -5,   77 }, {   -5,   44 },
686    {   -4,   64 }, {   -7,   78 }, {   -9,   34 }, {    2,   43 },
687    {    2,   53 }, {    2,   60 }, {   -8,   83 }, {    0,   64 },
688    {   19,   22 }, {   11,   48 }, {    9,   51 }, {  -24,   95 },
689    {  -27,   82 }, {  -22,   92 }, {  -20,   89 }, {  -25,   82 },
690    {  -15,   77 }, {   24,   32 }, {  -31,   76 }, {  -19,   77 },
691    {  -21,   84 }, {  -23,   95 }, {  -35,  112 }, {    0,   64 },
692    {    2,   69 }, {  -10,   82 }, {   -1,   57 }, {   -7,   59 },
693    {   -5,   71 }, {  -13,   85 }, {  -28,  107 }, {  -29,  100 },
694    {  -21,   93 }, {  -28,  108 }, {   -6,   71 }, {  -48,  136 },
695    {  -35,  111 }, {  -10,   74 }, {    4,   56 }, {    5,   56 },
696    {   -3,   84 }, {  -35,  122 }, {  -42,  111 }, {  101, -147 },
697    {  -14,   87 }, {  -70,  179 }, {    6,   30 }, {    0,   64 },
698    {    8,   32 }, {  -64,  156 }, {    0,   64 }, {    0,   64 },
699    {  -65,  144 }, {    0,   64 }, {    0,   64 }, {    0,   64 },
700    {    6,   67 }, {   -1,   72 }, {   -9,   84 }, {  -29,  100 },
701    {    4,   65 }, {    0,   70 }, {   -7,   80 }, {  -34,  117 },
702    {  -11,   79 }, {  -14,   91 }, {  -15,   93 }, {  -34,  119 },
703    {   26,   26 }, {  -34,  111 }, {  -35,  126 }, {    0,   64 },
704    {  -15,  103 }, {   25,   19 }, {   23,   29 }, {  -65,  142 },
705    {  -21,  108 }, {   27,   19 }, {  -34,  111 }, {  -71,  174 },
706    {  -30,  104 }, {   34,   12 }, { -144,  285 }, { -168,  304 },
707    {   43,    6 }, { -125,  248 }, { -129,  252 }, {    0,   64 }
708  }
709};
710#else
711static const Short
712INIT_SIG_FLAG[3][224][2] =
713{
714  {
715    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
716    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
717    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
718    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
719    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
720    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
721    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
722    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
723    {  -24,  145 }, {  -40,  159 }, {  -38,  155 }, {  -44,  159 }, 
724    {   -1,   27 }, {   -4,   68 }, {  -12,  100 }, {  -15,   61 }, 
725    {  -14,   82 }, {  -23,  117 }, {    0,    6 }, {  -11,   54 }, 
726    {    8,   40 }, {   -1,   65 }, {  -18,  104 }, {    0,   64 }, 
727    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
728    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
729    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
730    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
731    {  -31,  151 }, {  -19,  114 }, {  -22,  124 }, {  -14,  100 }, 
732    {   -7,   39 }, {   -1,   61 }, {  -12,   96 }, {  -13,   55 }, 
733    {   -1,   61 }, {  -16,  101 }, {    2,    5 }, {    8,   23 }, 
734    {    6,   43 }, {    1,   62 }, {  -16,   99 }, {    0,   64 }, 
735    {  -19,  119 }, {  -12,   91 }, {  -19,  106 }, {  -25,  108 }, 
736    {   19,   -5 }, {  -24,   96 }, {   -7,   78 }, {   19,    1 }, 
737    {    1,   54 }, {  -10,   82 }, {    1,   15 }, {   -3,   51 }, 
738    {   -4,   62 }, {    1,   61 }, {   -5,   74 }, {    0,   64 }, 
739    {  -10,  107 }, {   -9,   90 }, {   -7,   89 }, {  -12,   87 }, 
740    {   -3,   32 }, {    0,   60 }, {   -3,   75 }, {   -6,   49 }, 
741    {    3,   54 }, {   -5,   78 }, {  -16,   39 }, {   -3,   43 }, 
742    {   -6,   64 }, {   -3,   67 }, {   -6,   80 }, {    0,   64 }, 
743    {  -14,  112 }, {   -6,   78 }, {   -6,   83 }, {    2,   61 }, 
744    {    9,   22 }, {   -6,   65 }, {  -26,  107 }, {    4,   33 }, 
745    {    4,   52 }, {  -27,  110 }, {    9,    4 }, {    5,   38 }, 
746    {    6,   46 }, {    6,   54 }, {   -3,   72 }, {    0,   64 }, 
747    {  -10,   91 }, {   -9,   76 }, {   -3,   61 }, {    1,   46 }, 
748    {  -13,   84 }, {  -13,   81 }, {   -2,   60 }, {   -5,   61 }, 
749    {  -11,   77 }, {  -10,   76 }, {   -3,   65 }, {   -3,   63 }, 
750    {   -4,   59 }, {  -14,   79 }, {    1,   61 }, {  -33,  126 }, 
751    {   19,   45 }, {    8,   48 }, {    2,   40 }, {   -3,   40 }, 
752    {    8,   46 }, {   16,   31 }, {  -10,   73 }, {  -51,  114 }, 
753    {    2,   52 }, {   -9,   71 }, {  -37,  118 }, {   -8,   38 }, 
754    {  -10,   64 }, {  -47,  113 }, { -105,  234 }, {  -32,  123 }, 
755    {  -11,  105 }, {   -8,   84 }, {   -5,   72 }, {   -7,   71 }, 
756    {  -13,   96 }, {   -9,   85 }, {   -4,   75 }, {   -7,   75 }, 
757    {  -10,   84 }, {   -7,   81 }, {    0,   76 }, {   -3,   78 }, 
758    {  -11,   84 }, {   -4,   75 }, {   -1,   83 }, {    0,   64 }, 
759    {   32,   35 }, {    3,   59 }, {   -1,   61 }, {  -31,  104 }, 
760    {   29,   28 }, {   11,   51 }, {   -6,   77 }, {  -41,  125 }, 
761    {    9,   53 }, {   -3,   76 }, {  -34,  130 }, {  -42,  133 }, 
762    {  -29,  109 }, {  -49,  143 }, {  -47,  144 }, {    0,   64 }, 
763    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
764    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
765    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
766    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
767    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
768    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
769    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
770    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 } 
771  },
772  {
773    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
774    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
775    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
776    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
777    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
778    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
779    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
780    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
781    {  -22,  128 }, {  -14,   96 }, {  -17,   99 }, {  -26,  113 }, 
782    {    5,   31 }, {   -2,   65 }, {  -32,  125 }, {  -19,   72 }, 
783    {   -7,   69 }, {  -24,  111 }, {    0,   25 }, {   -1,   49 }, 
784    {    2,   54 }, {    0,   64 }, {  -15,   97 }, {    0,   64 }, 
785    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
786    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
787    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
788    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
789    {   -4,   88 }, {    0,   68 }, {   -4,   75 }, {   -5,   74 }, 
790    {   17,    7 }, {    2,   56 }, {   -8,   80 }, {    1,   36 }, 
791    {    2,   52 }, {  -11,   85 }, {    6,   12 }, {    5,   41 }, 
792    {    2,   54 }, {    0,   65 }, {   -8,   82 }, {    0,   64 }, 
793    {   -8,   95 }, {   -7,   77 }, {   -7,   73 }, {   -9,   74 }, 
794    {  -18,   77 }, {   -7,   72 }, {  -11,   81 }, {  -29,   92 }, 
795    {    4,   47 }, {  -14,   83 }, {  -26,   79 }, {    2,   46 }, 
796    {    5,   50 }, {    6,   52 }, {  -22,  104 }, {    0,   64 }, 
797    {   -7,   93 }, {   -5,   79 }, {   -6,   79 }, {   -8,   79 }, 
798    {    5,   36 }, {    3,   56 }, {  -18,   99 }, {  -10,   59 }, 
799    {    0,   56 }, {  -11,   84 }, {   -3,   31 }, {    8,   35 }, 
800    {    4,   51 }, {   -1,   66 }, {   -7,   81 }, {    0,   64 }, 
801    {    1,   80 }, {  -28,  116 }, {  -26,  112 }, {    2,   56 }, 
802    {  -17,   75 }, {    3,   52 }, {  -10,   79 }, {  -26,   91 }, 
803    {   -2,   61 }, {   -3,   66 }, {  -45,  114 }, {  -21,   91 }, 
804    {    1,   59 }, {    2,   62 }, {  -10,   82 }, {    0,   64 }, 
805    {    3,   68 }, {    0,   62 }, {   -8,   69 }, {    1,   43 }, 
806    {   -6,   70 }, {   -4,   66 }, {   -2,   60 }, {   -6,   61 }, 
807    {  -13,   78 }, {   -8,   71 }, {   -6,   71 }, {   -5,   67 }, 
808    {   -7,   63 }, {    0,   56 }, {  -13,   83 }, {   -4,   77 }, 
809    {    6,   70 }, {  -19,   94 }, {  -21,   80 }, {   -7,   30 }, 
810    {  -15,   88 }, {  -19,   95 }, {  -39,  117 }, {  -10,   42 }, 
811    {  -15,   78 }, {  -30,  104 }, {    4,   36 }, {   91, -137 }, 
812    {  -45,  125 }, {    0,   42 }, {   30,    2 }, {    0,   64 }, 
813    {   -3,   84 }, {   -8,   83 }, {  -13,   86 }, {  -12,   75 }, 
814    {   -6,   81 }, {   -9,   83 }, {   -5,   77 }, {   -8,   75 }, 
815    {   -8,   79 }, {   -7,   82 }, {    0,   73 }, {   -7,   83 }, 
816    {  -13,   84 }, {   -4,   73 }, {   -3,   82 }, {    0,   64 }, 
817    {   15,   63 }, {    0,   69 }, {  -28,  110 }, {  -29,  104 }, 
818    {   -1,   74 }, {  -22,  105 }, {  -50,  150 }, {  -57,  151 }, 
819    {  -21,   96 }, {  -29,  113 }, {  -49,  151 }, {  -85,  197 }, 
820    {  -46,  133 }, {  -60,  159 }, {  -84,  198 }, {    0,   64 }, 
821    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
822    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
823    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
824    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
825    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
826    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
827    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
828    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 } 
829  },
830  {
831    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
832    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
833    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
834    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
835    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
836    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
837    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
838    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
839    {  -34,  146 }, {  -20,  108 }, {  -23,  111 }, {  -38,  141 }, 
840    {    3,   34 }, {   -4,   69 }, {  -17,  103 }, {   -9,   50 }, 
841    {   -4,   66 }, {  -16,   97 }, {   -1,   24 }, {    0,   50 }, 
842    {   -1,   61 }, {  -12,   90 }, {  -14,   97 }, {    0,   64 }, 
843    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
844    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
845    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
846    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
847    {  -12,   99 }, {   -4,   75 }, {   -8,   81 }, {   -7,   80 }, 
848    {   15,   13 }, {    2,   57 }, {  -10,   85 }, {    4,   27 }, 
849    {  -10,   75 }, {   -9,   81 }, {   -9,   46 }, {    6,   41 }, 
850    {    3,   56 }, {   -1,   69 }, {  -14,   96 }, {    0,   64 }, 
851    {   -7,   85 }, {  -22,  102 }, {  -12,   79 }, {  -35,  121 }, 
852    {   -5,   55 }, {  -16,   88 }, {   -9,   78 }, {  -26,   73 }, 
853    {  -28,   99 }, {  -38,  123 }, {   -3,   35 }, {  -25,   97 }, 
854    {   -9,   75 }, {    6,   54 }, {  -15,   92 }, {    0,   64 }, 
855    {   -9,   94 }, {  -14,   94 }, {   -4,   74 }, {  -14,   92 }, 
856    {    7,   37 }, {    3,   57 }, {   -7,   78 }, {   -8,   54 }, 
857    {   -7,   70 }, {   -8,   78 }, {   -2,   31 }, {    4,   49 }, 
858    {    1,   60 }, {   -5,   75 }, {  -10,   87 }, {    0,   64 }, 
859    {   -3,   82 }, {  -19,  102 }, {  -14,   91 }, {  -33,  123 }, 
860    {  -46,  124 }, {  -12,   82 }, {  -43,  138 }, {  -46,  121 }, 
861    {  -38,  125 }, {  -44,  138 }, {  -32,   89 }, {   -3,   60 }, 
862    {  -22,  102 }, {  -27,  114 }, {  -37,  128 }, {    0,   64 }, 
863    {    2,   69 }, {  -10,   82 }, {   -1,   57 }, {   -7,   59 }, 
864    {   -5,   71 }, {  -13,   85 }, {  -28,  107 }, {  -29,  100 }, 
865    {  -21,   93 }, {  -28,  108 }, {   -6,   71 }, {  -48,  136 }, 
866    {  -35,  111 }, {  -10,   74 }, {    4,   56 }, {    5,   56 }, 
867    {   -3,   84 }, {  -35,  122 }, {  -42,  111 }, {  101, -147 }, 
868    {  -14,   87 }, {  -70,  179 }, {    6,   30 }, {    0,   64 }, 
869    {    8,   32 }, {  -64,  156 }, {    0,   64 }, {    0,   64 }, 
870    {  -65,  144 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
871    {    4,   67 }, {   -5,   77 }, {  -12,   85 }, {  -28,  105 }, 
872    {   -5,   77 }, {   -7,   79 }, {   -7,   79 }, {  -28,  109 }, 
873    {  -17,   94 }, {  -11,   88 }, {   -6,   81 }, {  -32,  125 }, 
874    {  -38,  128 }, {  -40,  136 }, {  -39,  142 }, {    0,   64 }, 
875    {  -35,  148 }, {  -47,  150 }, {  -22,  100 }, {  -73,  176 }, 
876    {  -12,   91 }, {  -54,  155 }, {  -86,  203 }, {  -71,  174 }, 
877    {  -66,  167 }, {  -41,  129 }, { -144,  285 }, { -168,  304 }, 
878    {  -59,  148 }, { -125,  248 }, { -129,  252 }, {    0,   64 }, 
879    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
880    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
881    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
882    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
883    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
884    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
885    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
886    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 } 
887  }
888};
889#endif
890#if !PCP_SIGMAP_SIMPLE_LAST
891static const Short
892INIT_LAST_FLAG[3][224][2] =
893{
894  {
895    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
896    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
897    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
898    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
899    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
900    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
901    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
902    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
903    {   24,  -37 }, {   35,  -52 }, {    8,   -9 }, {   14,  -11 }, 
904    {   14,  -10 }, {   22,  -18 }, {   48,  -64 }, {   -1,   29 }, 
905    {   20,   13 }, {  -15,   51 }, {   77, -101 }, {   22,  -20 }, 
906    {  -34,   89 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
907    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
908    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
909    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
910    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
911    {   33,  -47 }, {   38,  -54 }, {   25,  -32 }, {   46,  -66 }, 
912    {   24,  -27 }, {   26,  -28 }, {   36,  -39 }, {   -6,   48 }, 
913    {   -2,   51 }, {   -1,   44 }, {    9,   26 }, {  -36,   93 }, 
914    {  -20,   61 }, {  -51,  130 }, {   29,   -2 }, {    0,    0 }, 
915    {   42,  -30 }, {   43,  -46 }, {   61,  -81 }, {   48,  -51 }, 
916    {   21,    5 }, {    8,   22 }, {    5,   38 }, {   23,   12 }, 
917    {  102, -138 }, {  304, -440 }, {    0,   64 }, {    0,   64 }, 
918    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
919    {   30,  -24 }, {   24,  -15 }, {   19,   -2 }, {    9,   15 }, 
920    {    9,   16 }, {    5,   27 }, {   19,    6 }, {   11,   29 }, 
921    {   -7,   62 }, {   -9,   66 }, {    7,   41 }, {  -11,   76 }, 
922    {  -42,  130 }, {  -14,   91 }, {   16,   14 }, {    0,   64 }, 
923    {   22,   14 }, {   26,   -1 }, {   13,   18 }, {    4,   37 }, 
924    {    5,   36 }, {   20,   14 }, {   12,   29 }, {   24,   17 }, 
925    {  -50,  133 }, { -165,  315 }, { -160,  301 }, { -217,  408 }, 
926    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
927    {   31,  -12 }, {   20,    4 }, {   16,    9 }, {   16,    9 }, 
928    {   17,    8 }, {   20,    4 }, {   23,    4 }, {   17,   18 }, 
929    {    9,   36 }, {   10,   36 }, {   10,   39 }, {    7,   52 }, 
930    {   -3,   75 }, {  -16,  103 }, {    0,   64 }, {    0,   64 }, 
931    {   14,   44 }, {   -2,   64 }, {    3,   51 }, {   18,   22 }, 
932    {   -8,   70 }, {    3,   53 }, {    7,   48 }, {   -6,   70 }, 
933    {  -48,  133 }, {  -22,   96 }, { -111,  240 }, {  -55,  156 }, 
934    {  -92,  215 }, { -347,  585 }, {    0,   64 }, {    0,   64 }, 
935    {   12,   26 }, {   11,   23 }, {   16,   15 }, {   19,   17 }, 
936    {    9,   30 }, {   14,   24 }, {   18,   21 }, {   16,   30 }, 
937    {   13,   27 }, {   12,   33 }, {   13,   37 }, {    9,   54 }, 
938    {   12,   37 }, {   12,   42 }, {   15,   49 }, {    0,   64 }, 
939    {   23,   26 }, {   17,   30 }, {    0,   60 }, {    7,   53 }, 
940    {   18,   33 }, {   15,   39 }, {   10,   48 }, {  -22,  101 }, 
941    {   19,   34 }, {   10,   51 }, {  -35,  124 }, {  -16,   93 }, 
942    {    2,   65 }, {   -9,   83 }, {  -24,  109 }, {    0,   64 }, 
943    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
944    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
945    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
946    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
947    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
948    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
949    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
950    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 } 
951  },
952  {
953    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
954    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
955    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
956    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
957    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
958    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
959    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
960    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
961    {   17,   18 }, {   28,  -21 }, {   40,  -50 }, {    7,   20 }, 
962    {   -9,   47 }, {  -12,   43 }, {    9,   -1 }, {   -7,   52 }, 
963    {  -29,   89 }, {   25,  -20 }, {  -36,   82 }, {  106, -178 }, 
964    {  248, -404 }, {   56,  -38 }, {    0,   64 }, {    0,   64 }, 
965    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
966    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
967    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
968    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
969    {   20,   10 }, {   25,   -8 }, {   23,   -5 }, {    2,   32 }, 
970    {    8,   15 }, {   19,   -5 }, {   15,    0 }, {    8,   27 }, 
971    {   -1,   48 }, {    1,   42 }, {    1,   41 }, {  -48,  124 }, 
972    {  -97,  213 }, {   32,  -21 }, {   61,  -47 }, { -480,  845 }, 
973    {   22,   17 }, {   26,   -6 }, {   42,  -38 }, {   33,  -15 }, 
974    {    9,   29 }, {  -19,   70 }, {  -77,  167 }, {  -80,  176 }, 
975    {  -96,  186 }, {  171, -294 }, {    5,   45 }, {    0,   64 }, 
976    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
977    {   23,    2 }, {   30,  -12 }, {   20,    9 }, {   16,   16 }, 
978    {   19,    4 }, {    8,   24 }, {   15,   13 }, {   10,   26 }, 
979    {   12,   25 }, {  -12,   66 }, {   -7,   60 }, {   -8,   64 }, 
980    {   -2,   63 }, {   -7,   75 }, { -116,  252 }, {    0,   64 }, 
981    {   -4,   68 }, {   20,   16 }, {   17,   22 }, {   13,   31 }, 
982    {    3,   48 }, {  -21,   84 }, {  -41,  117 }, {  -43,  125 }, 
983    {    5,   40 }, {   29,    4 }, {  -24,   87 }, {    0,   64 }, 
984    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
985    {   14,   23 }, {   24,    4 }, {   15,   23 }, {    7,   34 }, 
986    {   19,   14 }, {   19,   12 }, {   17,   18 }, {   11,   33 }, 
987    {    4,   44 }, {   -2,   55 }, {    2,   54 }, {    3,   53 }, 
988    {  -43,  137 }, {  -22,  104 }, {    0,   64 }, {    0,   64 }, 
989    {   -5,   76 }, {    7,   50 }, {    9,   43 }, {    6,   50 }, 
990    {    0,   59 }, {    1,   56 }, {    4,   51 }, {   22,   18 }, 
991    {   21,   21 }, { -105,  242 }, {  -52,  145 }, {  260, -439 }, 
992    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
993    {    0,   50 }, {    5,   42 }, {    4,   43 }, {   18,   20 }, 
994    {   17,   23 }, {    0,   55 }, {   10,   39 }, {    6,   46 }, 
995    {   10,   36 }, {    9,   41 }, {   12,   42 }, {    3,   63 }, 
996    {   15,   30 }, {    9,   46 }, {    0,   73 }, {    0,   64 }, 
997    {   12,   47 }, {   11,   43 }, {    5,   50 }, {    5,   53 }, 
998    {   -2,   68 }, {  -11,   83 }, {  -18,   93 }, {  -59,  154 }, 
999    {  -22,   99 }, {  -45,  137 }, {  -63,  167 }, {  -56,  152 }, 
1000    {  -34,  117 }, {  -45,  136 }, {  -74,  182 }, {    0,   64 }, 
1001    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1002    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1003    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1004    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1005    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1006    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1007    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1008    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 } 
1009  },
1010  {
1011    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1012    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1013    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1014    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1015    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1016    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1017    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1018    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1019    {   20,    7 }, {   38,  -44 }, {   37,  -43 }, {   -9,   48 }, 
1020    {  -45,  104 }, {  -87,  174 }, {   26,  -35 }, {   51,  -63 }, 
1021    {  129, -174 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1022    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1023    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1024    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1025    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1026    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1027    {    7,   38 }, {   28,  -14 }, {   25,   -7 }, {    2,   38 }, 
1028    {  -13,   53 }, {   11,    2 }, {  -18,   59 }, {   23,   -4 }, 
1029    {   46,  -35 }, {   -9,   59 }, {  -32,   97 }, {   -5,   57 }, 
1030    {  -98,  215 }, {  -51,  141 }, {  163, -267 }, {    0,    0 }, 
1031    {    2,   48 }, {   57,  -65 }, {   70,  -78 }, {   74,  -74 }, 
1032    {   38,   -7 }, {   64,  -44 }, {    0,   64 }, {    0,   64 }, 
1033    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1034    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1035    {   12,   24 }, {   17,   17 }, {   11,   31 }, {    6,   35 }, 
1036    {    9,   25 }, {   -2,   41 }, {   11,   19 }, {   -3,   51 }, 
1037    {  -30,  100 }, {   -4,   55 }, {    2,   49 }, {   38,  -17 }, 
1038    {   43,  -28 }, {  -35,  117 }, {  -97,  214 }, {    0,   64 }, 
1039    {    7,   41 }, {   29,   -3 }, {   17,   23 }, {    6,   45 }, 
1040    {   12,   36 }, {  -22,   85 }, {    2,   54 }, {  -18,   87 }, 
1041    {    0,   65 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1042    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1043    {   -5,   59 }, {   14,   25 }, {   13,   29 }, {    4,   42 }, 
1044    {    8,   33 }, {    5,   37 }, {   20,   11 }, {   16,   20 }, 
1045    {   15,   22 }, {  -12,   70 }, {   -9,   67 }, {   13,   35 }, 
1046    {  -15,   85 }, {  -25,  101 }, {    0,   64 }, {    0,   64 }, 
1047    {   -3,   65 }, {    6,   50 }, {    3,   56 }, {   21,   19 }, 
1048    {   -1,   64 }, {  -73,  175 }, {  -17,   76 }, {    7,   52 }, 
1049    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1050    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1051    {   12,   22 }, {   15,   20 }, {   18,   14 }, {   13,   28 }, 
1052    {   18,   18 }, {    0,   54 }, {  -14,   77 }, {  -34,  113 }, 
1053    {    4,   43 }, {    7,   43 }, {    2,   55 }, {   -2,   69 }, 
1054    {  -17,   82 }, {   -2,   60 }, {   -8,   81 }, {    0,   64 }, 
1055    {  -20,   92 }, {    1,   56 }, {  -35,  114 }, {  -12,   78 }, 
1056    {    6,   51 }, {  -48,  141 }, {  -77,  183 }, {  -63,  157 }, 
1057    {    7,   46 }, {  -56,  149 }, { -125,  254 }, { -134,  247 }, 
1058    {  -49,  134 }, {  -72,  167 }, { -130,  253 }, {    0,   64 }, 
1059    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1060    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1061    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1062    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1063    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1064    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1065    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1066    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 } 
1067  }
1068};
1069#endif
1070
1071static const Short
1072INIT_ONE_FLAG[3][80][2] =
1073{
1074  {
1075    {  -11,   87 }, {  -20,   64 }, {  -16,   68 }, {  -13,   71 }, 
1076    {  -10,   73 }, {   -5,   67 }, {   -8,   26 }, {   -8,   37 }, 
1077    {   -3,   36 }, {   -9,   56 }, {    0,   63 }, {   -5,   39 }, 
1078    {  -12,   56 }, {   -9,   57 }, {   -1,   52 }, {   -4,   72 }, 
1079    {  -19,   73 }, {  -28,   88 }, {  -23,   85 }, {   -3,   59 }, 
1080    {   -2,   72 }, {  -27,   97 }, {  -22,   89 }, {  -14,   77 }, 
1081    {   -1,   58 }, {  -10,   86 }, {  -22,   74 }, {  -13,   63 }, 
1082    {   -6,   57 }, {   -5,   63 }, {    0,   64 }, {    0,   64 }, 
1083    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1084    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1085    {   -4,   70 }, {   16,   -2 }, {    9,   23 }, {    5,   41 }, 
1086    {   -7,   67 }, {   -6,   63 }, {   13,   -5 }, {  -12,   42 }, 
1087    {  -18,   53 }, {  -14,   59 }, {   -5,   65 }, {   -8,   36 }, 
1088    {  -22,   67 }, {  -35,   89 }, {   -3,   47 }, {  -12,   77 }, 
1089    {  -20,   66 }, {  -51,  113 }, {  -44,  109 }, {  -23,   84 }, 
1090    {   -1,   64 }, {  -58,  127 }, {  -71,  143 }, {  -67,  134 }, 
1091    {  -91,  187 }, {   -1,   64 }, {   20,   -3 }, {   13,   21 }, 
1092    {    2,   46 }, {    5,   48 }, {    0,   64 }, {    0,   64 }, 
1093    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1094    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 } 
1095  },
1096  {
1097    {   -4,   71 }, {   29,   -5 }, {    1,   45 }, {   -6,   58 }, 
1098    {   -9,   67 }, {   -6,   66 }, {   23,   -7 }, {    3,   26 }, 
1099    {   -5,   42 }, {    5,   31 }, {  -12,   79 }, {   -2,   45 }, 
1100    {  -15,   67 }, {  -11,   62 }, {   -3,   54 }, {   -4,   70 }, 
1101    {  -13,   68 }, {  -31,  100 }, {  -26,   91 }, {  -18,   84 }, 
1102    {   -9,   83 }, {  -30,  103 }, {  -24,   90 }, {  -43,  122 }, 
1103    {   -6,   66 }, {    4,   59 }, {   34,  -11 }, {   21,   10 }, 
1104    {   14,   25 }, {    5,   44 }, {    0,   64 }, {    0,   64 }, 
1105    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1106    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1107    {   -4,   69 }, {   40,  -33 }, {   19,    8 }, {  -11,   65 }, 
1108    {   -6,   59 }, {  -11,   68 }, {   12,   -2 }, {   17,  -10 }, 
1109    {   -6,   34 }, {   11,   14 }, {  -11,   70 }, {    1,   27 }, 
1110    {  -26,   71 }, {  -28,   79 }, {   -2,   47 }, {    6,   47 }, 
1111    {  -23,   67 }, {  -47,  107 }, {  -55,  117 }, {  -21,   83 }, 
1112    {    1,   59 }, {  -38,   82 }, {  -34,   77 }, {  -45,   95 }, 
1113    {   10,   25 }, {    9,   46 }, {   41,  -31 }, {   32,  -17 }, 
1114    {   14,   19 }, {   17,   18 }, {    0,   64 }, {    0,   64 }, 
1115    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1116    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 } 
1117  },
1118  {
1119    {   -2,   65 }, {   18,   22 }, {   10,   33 }, {   -2,   55 }, 
1120    {   -7,   64 }, {   -6,   67 }, {   19,   11 }, {   -5,   50 }, 
1121    {   -7,   53 }, {   -4,   54 }, {  -23,   99 }, {   -3,   51 }, 
1122    {    2,   41 }, {  -32,  102 }, {  -16,   79 }, {   -8,   77 }, 
1123    {  -21,   84 }, {  -26,   91 }, {  -33,  104 }, {   -4,   61 }, 
1124    {  -31,  122 }, {  -34,  110 }, {  -25,   96 }, {  -43,  124 }, 
1125    {   -6,   70 }, {    3,   60 }, {   23,   12 }, {   12,   30 }, 
1126    {   11,   33 }, {    8,   40 }, {    0,   64 }, {    0,   64 }, 
1127    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1128    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1129    {   -2,   66 }, {   40,  -20 }, {    0,   46 }, {   -5,   54 }, 
1130    {    7,   37 }, {  -39,  116 }, {   31,  -27 }, {    1,   22 }, 
1131    {  -35,   82 }, {  -32,   85 }, {  -15,   72 }, {   16,    0 }, 
1132    {  -43,  102 }, {  -75,  152 }, {   -8,   55 }, {   -9,   68 }, 
1133    {  -12,   54 }, {  -84,  171 }, {  -93,  186 }, {   25,   12 }, 
1134    { -104,  222 }, {  -40,   92 }, {  -51,   93 }, {  110, -169 }, 
1135    {    3,   52 }, {   17,   33 }, {   55,  -45 }, {   28,    1 }, 
1136    {   -5,   55 }, {   29,   -4 }, {    0,   64 }, {    0,   64 }, 
1137    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1138    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 } 
1139  }
1140};
1141
1142static const Short
1143INIT_ABS_FLAG[3][80][2] =
1144{
1145  {
1146    {  -12,   72 }, {  -10,   79 }, {  -11,   87 }, {  -14,   94 }, 
1147    {  -35,  136 }, {  -10,   58 }, {   -1,   54 }, {  -17,   86 }, 
1148    {   -5,   70 }, {  -22,  105 }, {  -13,   70 }, {   -2,   59 }, 
1149    {  -13,   81 }, {  -21,   96 }, {   -3,   73 }, {  -24,   90 }, 
1150    {  -19,   88 }, {   -1,   63 }, {    1,   60 }, {  -17,   97 }, 
1151    {   -7,   69 }, {  -20,   95 }, {  -11,   84 }, {  -27,  110 }, 
1152    {  -12,   96 }, {   -9,   72 }, {   -8,   76 }, {   -4,   75 }, 
1153    {   -3,   76 }, {   -9,   94 }, {    0,   64 }, {    0,   64 }, 
1154    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1155    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1156    {  -11,   65 }, {   -4,   66 }, {   -9,   82 }, {  -24,  107 }, 
1157    {  -24,  111 }, {  -18,   58 }, {  -10,   61 }, {  -19,   82 }, 
1158    {  -28,   97 }, {    6,   47 }, {  -12,   50 }, {  -17,   73 }, 
1159    {   -8,   66 }, {  -44,  115 }, {  -17,   86 }, {  -26,   74 }, 
1160    {   -4,   48 }, {  -43,  115 }, {  -58,  141 }, {  -51,  137 }, 
1161    {  -51,  117 }, {  -85,  176 }, {  -47,  120 }, {  -95,  202 }, 
1162    {  -65,  159 }, {   -2,   53 }, {    7,   43 }, {   -2,   67 }, 
1163    {    3,   62 }, {    4,   67 }, {    0,   64 }, {    0,   64 }, 
1164    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1165    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 } 
1166  },
1167  {
1168    {   -2,   49 }, {  -13,   81 }, {  -11,   82 }, {  -13,   88 }, 
1169    {  -24,  112 }, {   -4,   44 }, {  -17,   77 }, {  -16,   82 }, 
1170    {  -19,   89 }, {  -28,  110 }, {  -12,   64 }, {  -11,   70 }, 
1171    {  -18,   88 }, {   -6,   67 }, {  -19,   97 }, {  -17,   76 }, 
1172    {  -27,  100 }, {  -18,   88 }, {  -13,   84 }, {  -17,   94 }, 
1173    {  -11,   73 }, {  -15,   83 }, {  -10,   77 }, {  -10,   80 }, 
1174    {  -12,   91 }, {   -8,   63 }, {   -7,   71 }, {   -6,   73 }, 
1175    {   -8,   80 }, {   -9,   90 }, {    0,   64 }, {    0,   64 }, 
1176    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1177    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1178    {   14,   20 }, {   -7,   68 }, {   -4,   66 }, {   -8,   76 }, 
1179    {  -50,  148 }, {    2,   22 }, {   11,   15 }, {   -4,   49 }, 
1180    {  -41,  117 }, {  -60,  149 }, {  -12,   49 }, {   -6,   55 }, 
1181    {    1,   44 }, {   -5,   58 }, {  -12,   73 }, {   13,    9 }, 
1182    {    5,   26 }, {  -29,  101 }, {    0,   46 }, {  -23,   92 }, 
1183    {  -12,   57 }, {    6,   30 }, {   35,   -4 }, {   42,  -24 }, 
1184    {   22,   24 }, {   24,    0 }, {   11,   34 }, {    2,   61 }, 
1185    {   -5,   75 }, {    4,   62 }, {    0,   64 }, {    0,   64 }, 
1186    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1187    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 } 
1188  },
1189  {
1190    {    0,   43 }, {   -6,   65 }, {   -7,   71 }, {  -31,  117 }, 
1191    {  -25,  109 }, {  -20,   76 }, {  -14,   73 }, {  -20,   88 }, 
1192    {  -21,   92 }, {   -6,   71 }, {  -19,   73 }, {  -34,  108 }, 
1193    {  -27,  101 }, {   -7,   69 }, {   -7,   75 }, {  -18,   77 }, 
1194    {   -7,   64 }, {  -20,   91 }, {   -9,   75 }, {   -7,   78 }, 
1195    {  -26,   98 }, {  -13,   81 }, {   -6,   69 }, {  -12,   83 }, 
1196    {   -2,   70 }, {   -3,   50 }, {   -6,   66 }, {   -7,   73 }, 
1197    {   -6,   75 }, {  -11,   91 }, {    0,   64 }, {    0,   64 }, 
1198    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1199    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1200    {   19,   10 }, {    2,   49 }, {    4,   52 }, {   -4,   69 }, 
1201    {  -32,  114 }, {   13,   -1 }, {  -29,   85 }, {  -64,  143 }, 
1202    {  -90,  186 }, {   26,    4 }, {  -24,   68 }, {    8,   30 }, 
1203    {  -10,   61 }, {  -16,   78 }, {  -27,   96 }, {   31,  -16 }, 
1204    {  -12,   54 }, {  -15,   70 }, {  -68,  158 }, {   31,   12 }, 
1205    {   -8,   44 }, {  -32,   63 }, {  -36,   81 }, {  -53,  106 }, 
1206    {   36,   12 }, {   26,   -5 }, {   19,   17 }, {  -22,  101 }, 
1207    {    5,   54 }, {    8,   53 }, {    0,   64 }, {    0,   64 }, 
1208    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1209    {    0,   64 }, {    0,   64 }, {    0,   64 }, {    0,   64 } 
1210  }
1211};
1212
1213// initial probability for motion vector predictor index
1214static const Short
1215INIT_MVP_IDX[3][NUM_MVP_IDX_CTX][2] =
1216{
1217  {
1218    {    0,   64 }, {    0,   64 }
1219  },
1220  {
1221    {    0,   64 }, {    0,   64 }
1222  },
1223  {
1224    {    0,   64 }, {    0,   64 }
1225  }
1226};
1227
1228// initial probability for ALF flag
1229static const Short
1230INIT_ALF_FLAG[3][NUM_ALF_FLAG_CTX][2] =
1231{
1232  {
1233    {   50,  -48 }
1234  },
1235  {
1236    {   27,  -20 }
1237  },
1238  {
1239    {  -12,   68 }
1240  }
1241};
1242
1243// initial probability for ALF side information (unsigned)
1244static const Short
1245INIT_ALF_UVLC[3][NUM_ALF_UVLC_CTX][2] =
1246{
1247  {
1248    {    1,   66 }, {   -3,   77 }
1249  },
1250  {
1251    {   -5,   75 }, {  -14,   94 }
1252  },
1253  {
1254    {   -5,   72 }, {  -30,  122 }
1255  }
1256};
1257
1258// initial probability for ALF side information (signed)
1259static const Short
1260INIT_ALF_SVLC[3][NUM_ALF_SVLC_CTX][2] =
1261{
1262  {
1263    {   11,   57 }, {   -1,   62 }, {    0,   64 }
1264  },
1265  {
1266    {    6,   66 }, {   -1,   64 }, {    0,   64 }
1267  },
1268  {
1269    {    1,   73 }, {    2,   61 }, {    0,   64 }
1270  }
1271};
1272#if MTK_SAO
1273// initial probability for ALF flag
1274static const Short
1275INIT_AO_FLAG[3][NUM_AO_FLAG_CTX][2] =
1276{
1277  {
1278    {   50,  -48 }
1279  },
1280  {
1281    {   27,  -20 }
1282  },
1283  {
1284    {  -12,   68 }
1285  }
1286};
1287
1288// initial probability for ALF side information (unsigned)
1289static const Short
1290INIT_AO_UVLC[3][NUM_AO_UVLC_CTX][2] =
1291{
1292  {
1293    {    1,   66 }, {   -3,   77 }
1294  },
1295  {
1296    {   -5,   75 }, {  -14,   94 }
1297  },
1298  {
1299    {   -5,   72 }, {  -30,  122 }
1300  }
1301};
1302
1303// initial probability for ALF side information (signed)
1304static const Short
1305INIT_AO_SVLC[3][NUM_AO_SVLC_CTX][2] =
1306{
1307  {
1308    {   11,   57 }, {   -1,   62 }, {    0,   64 }
1309  },
1310  {
1311    {    6,   66 }, {   -1,   64 }, {    0,   64 }
1312  },
1313  {
1314    {    1,   73 }, {    2,   61 }, {    0,   64 }
1315  }
1316};
1317#endif
1318
1319static const Short
1320INIT_TRANS_SUBDIV_FLAG[3][NUM_TRANS_SUBDIV_FLAG_CTX][2] =
1321{
1322  {
1323    {    0,    0 }, {   12,   12 }, {   22,    4 }, {   -2,   49 }, 
1324    {    4,   46 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1325    {    0,   64 }, {    0,   64 }
1326  },
1327  {
1328    {    0,   13 }, {  -28,   89 }, {  -30,   99 }, {  -34,  106 }, 
1329    {  -19,   76 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1330    {    0,   64 }, {    0,   64 }
1331  },
1332  {
1333    {  -11,   38 }, {  -31,   88 }, {  -42,  118 }, {  -47,  130 }, 
1334    {  -21,   73 }, {    0,   64 }, {    0,   64 }, {    0,   64 }, 
1335    {    0,   64 }, {    0,   64 }
1336  }
1337};
1338
1339#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
1340static const Short
1341INIT_INTRA_DMM[3][NUM_DMM_CTX][2] =
1342{
1343 {
1344   {   0,   64 }, {   0,   64 }
1345 },
1346 {
1347   {   0,   64 }, {   0,   64 }
1348 },
1349 {
1350   {   0,   64 }, {   0,   64 }
1351 }
1352};
1353
1354static const Short
1355INIT_INTRA_WEDGELET[3][NUM_WEDGE_CTX][2] = 
1356{
1357  {
1358    {   0,   64 }, {   0,   64 }, {    0,   64 }, {    0,   64 }
1359  },
1360  {
1361    {   0,   64 }, {   0,   64 }, {    0,   64 }, {    0,   64 }
1362  },
1363  {
1364    {   0,   64 }, {   0,   64 }, {    0,   64 }, {    0,   64 }
1365  }
1366};
1367#endif
1368#endif
1369
Note: See TracBrowser for help on using the repository browser.