source: 3DVCSoftware/branches/0.3-poznan-univ/source/Lib/TLibCommon/ContextTables.h @ 730

Last change on this file since 730 was 28, checked in by poznan-univ, 13 years ago

Poznan Tools

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