source: 3DVCSoftware/branches/HTM-4.1-dev2-HHI/source/Lib/TLibCommon/ContextTables.h @ 157

Last change on this file since 157 was 156, checked in by lg, 12 years ago

minor fix:

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