39 #ifndef __CONTEXTTABLES__
40 #define __CONTEXTTABLES__
49 #define MAX_NUM_CTX_MOD 512
51 #define NUM_SPLIT_FLAG_CTX 3
52 #define NUM_SKIP_FLAG_CTX 3
54 #define NUM_MERGE_FLAG_EXT_CTX 1
55 #define NUM_MERGE_IDX_EXT_CTX 1
57 #define NUM_PART_SIZE_CTX 4
58 #define NUM_PRED_MODE_CTX 1
60 #define NUM_INTRA_PREDICT_CTX 1
62 #define NUM_CHROMA_PRED_CTX 2
63 #define NUM_INTER_DIR_CTX 5
64 #define NUM_MV_RES_CTX 2
65 #define NUM_CHROMA_QP_ADJ_FLAG_CTX 1
66 #define NUM_CHROMA_QP_ADJ_IDC_CTX 1
68 #define NUM_REF_NO_CTX 2
69 #define NUM_TRANS_SUBDIV_FLAG_CTX 3
70 #define NUM_QT_ROOT_CBF_CTX 1
71 #define NUM_DELTA_QP_CTX 3
73 #define NUM_SIG_CG_FLAG_CTX 2
74 #define NUM_EXPLICIT_RDPCM_FLAG_CTX 1
75 #define NUM_EXPLICIT_RDPCM_DIR_CTX 1
81 #define NUM_SIG_FLAG_CTX_LUMA 28
82 #define NUM_SIG_FLAG_CTX_CHROMA 16
92 #define NEIGHBOURHOOD_00_CONTEXT_1_THRESHOLD_4x4 3
93 #define NEIGHBOURHOOD_00_CONTEXT_2_THRESHOLD_4x4 1
97 #define FIRST_SIG_FLAG_CTX_LUMA 0
98 #define FIRST_SIG_FLAG_CTX_CHROMA (FIRST_SIG_FLAG_CTX_LUMA + NUM_SIG_FLAG_CTX_LUMA)
100 #define NUM_SIG_FLAG_CTX (NUM_SIG_FLAG_CTX_LUMA + NUM_SIG_FLAG_CTX_CHROMA)
106 #define NUM_CTX_LAST_FLAG_SETS 2
108 #define NUM_CTX_LAST_FLAG_XY 15
114 #define NUM_ONE_FLAG_CTX_PER_SET 4
115 #define NUM_ABS_FLAG_CTX_PER_SET 1
119 #define NUM_CTX_SETS_LUMA 4
120 #define NUM_CTX_SETS_CHROMA 2
122 #define FIRST_CTX_SET_LUMA 0
126 #define NUM_ONE_FLAG_CTX_LUMA (NUM_ONE_FLAG_CTX_PER_SET * NUM_CTX_SETS_LUMA)
127 #define NUM_ONE_FLAG_CTX_CHROMA (NUM_ONE_FLAG_CTX_PER_SET * NUM_CTX_SETS_CHROMA)
129 #define NUM_ABS_FLAG_CTX_LUMA (NUM_ABS_FLAG_CTX_PER_SET * NUM_CTX_SETS_LUMA)
130 #define NUM_ABS_FLAG_CTX_CHROMA (NUM_ABS_FLAG_CTX_PER_SET * NUM_CTX_SETS_CHROMA)
132 #define NUM_ONE_FLAG_CTX (NUM_ONE_FLAG_CTX_LUMA + NUM_ONE_FLAG_CTX_CHROMA)
133 #define NUM_ABS_FLAG_CTX (NUM_ABS_FLAG_CTX_LUMA + NUM_ABS_FLAG_CTX_CHROMA)
135 #define FIRST_CTX_SET_CHROMA (FIRST_CTX_SET_LUMA + NUM_CTX_SETS_LUMA)
141 #define NUM_QT_CBF_CTX_SETS 2
143 #define NUM_QT_CBF_CTX_PER_SET 5
145 #define FIRST_CBF_CTX_LUMA 0
147 #define FIRST_CBF_CTX_CHROMA (FIRST_CBF_CTX_LUMA + NUM_QT_CBF_CTX_PER_SET)
152 #define NUM_MVP_IDX_CTX 1
154 #define NUM_SAO_MERGE_FLAG_CTX 1
155 #define NUM_SAO_TYPE_IDX_CTX 1
157 #define NUM_TRANSFORMSKIP_FLAG_CTX 1
159 #define NUM_CU_TRANSQUANT_BYPASS_FLAG_CTX 1
161 #define NUM_CROSS_COMPONENT_PREDICTION_CTX 10
215 { 154, 139, 154, 154 },
216 { 154, 139, 154, 154 },
247 { 95, 79, 63, 31, 31, },
248 { 95, 79, 63, 31, 31, },
297 #define BSLICE_LUMA_CBF_CONTEXT 153, 111, CNU, CNU, CNU
298 #define PSLICE_LUMA_CBF_CONTEXT 153, 111, CNU, CNU, CNU
299 #define ISLICE_LUMA_CBF_CONTEXT 111, 141, CNU, CNU, CNU
301 #define BSLICE_CHROMA_CBF_CONTEXT 149, 92, 167, 154, 154
302 #define PSLICE_CHROMA_CBF_CONTEXT 149, 107, 167, 154, 154
303 #define ISLICE_CHROMA_CBF_CONTEXT 94, 138, 182, 154, 154
331 #define BSLICE_LUMA_LAST_POSITION_CONTEXT 125, 110, 124, 110, 95, 94, 125, 111, 111, 79, 125, 126, 111, 111, 79
332 #define PSLICE_LUMA_LAST_POSITION_CONTEXT 125, 110, 94, 110, 95, 79, 125, 111, 110, 78, 110, 111, 111, 95, 94
333 #define ISLICE_LUMA_LAST_POSITION_CONTEXT 110, 110, 124, 125, 140, 153, 125, 127, 140, 109, 111, 143, 127, 111, 79
335 #define BSLICE_CHROMA_LAST_POSITION_CONTEXT 108, 123, 93, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU
336 #define PSLICE_CHROMA_LAST_POSITION_CONTEXT 108, 123, 108, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU
337 #define ISLICE_CHROMA_LAST_POSITION_CONTEXT 108, 123, 63, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU
372 #define BSLICE_LUMA_SIGNIFICANCE_CONTEXT 170, 154, 139, 153, 139, 123, 123, 63, 124, 166, 183, 140, 136, 153, 154, 166, 183, 140, 136, 153, 154, 166, 183, 140, 136, 153, 154, 140
373 #define PSLICE_LUMA_SIGNIFICANCE_CONTEXT 155, 154, 139, 153, 139, 123, 123, 63, 153, 166, 183, 140, 136, 153, 154, 166, 183, 140, 136, 153, 154, 166, 183, 140, 136, 153, 154, 140
374 #define ISLICE_LUMA_SIGNIFICANCE_CONTEXT 111, 111, 125, 110, 110, 94, 124, 108, 124, 107, 125, 141, 179, 153, 125, 107, 125, 141, 179, 153, 125, 107, 125, 141, 179, 153, 125, 141
377 #define BSLICE_CHROMA_SIGNIFICANCE_CONTEXT 170, 153, 138, 138, 122, 121, 122, 121, 167, 151, 183, 140, 151, 183, 140, 140
378 #define PSLICE_CHROMA_SIGNIFICANCE_CONTEXT 170, 153, 123, 123, 107, 121, 107, 121, 167, 151, 183, 140, 151, 183, 140, 140
379 #define ISLICE_CHROMA_SIGNIFICANCE_CONTEXT 140, 139, 182, 182, 152, 136, 152, 136, 153, 136, 139, 111, 136, 139, 111, 111
397 #define BSLICE_LUMA_ONE_CONTEXT 154, 196, 167, 167, 154, 152, 167, 182, 182, 134, 149, 136, 153, 121, 136, 122
398 #define PSLICE_LUMA_ONE_CONTEXT 154, 196, 196, 167, 154, 152, 167, 182, 182, 134, 149, 136, 153, 121, 136, 137
399 #define ISLICE_LUMA_ONE_CONTEXT 140, 92, 137, 138, 140, 152, 138, 139, 153, 74, 149, 92, 139, 107, 122, 152
401 #define BSLICE_LUMA_ABS_CONTEXT 107, 167, 91, 107
402 #define PSLICE_LUMA_ABS_CONTEXT 107, 167, 91, 122
403 #define ISLICE_LUMA_ABS_CONTEXT 138, 153, 136, 167
406 #define BSLICE_CHROMA_ONE_CONTEXT 169, 208, 166, 167, 154, 152, 167, 182
407 #define PSLICE_CHROMA_ONE_CONTEXT 169, 194, 166, 167, 154, 167, 137, 182
408 #define ISLICE_CHROMA_ONE_CONTEXT 140, 179, 166, 182, 140, 227, 122, 197
410 #define BSLICE_CHROMA_ABS_CONTEXT 107, 167
411 #define PSLICE_CHROMA_ABS_CONTEXT 107, 167
412 #define ISLICE_CHROMA_ABS_CONTEXT 152, 152
495 { 154, 154, 154, 154, 154, 154, 154, 154, 154, 154 },
496 { 154, 154, 154, 154, 154, 154, 154, 154, 154, 154 },
497 { 154, 154, 154, 154, 154, 154, 154, 154, 154, 154 },
static const UChar INIT_SAO_MERGE_FLAG[NUMBER_OF_SLICE_TYPES][1]
#define NUM_QT_ROOT_CBF_CTX
number of context models for QT ROOT CBF
static const UInt notFirstGroupNeighbourhoodContextOffset[MAX_NUM_CHANNEL_TYPE]
static const UChar INIT_PART_SIZE[NUMBER_OF_SLICE_TYPES][4]
static const UChar INIT_LAST[NUMBER_OF_SLICE_TYPES][2 *15]
#define ISLICE_LUMA_CBF_CONTEXT
#define PSLICE_CHROMA_LAST_POSITION_CONTEXT
static const UInt significanceMapContextSetSize[MAX_NUM_CHANNEL_TYPE][CONTEXT_NUMBER_OF_TYPES]
static const UChar INIT_SIG_FLAG[NUMBER_OF_SLICE_TYPES][(28+16)]
#define NUM_INTER_DIR_CTX
number of context models for inter prediction direction
#define NUM_MERGE_FLAG_EXT_CTX
number of context models for merge flag of merge extended
#define NUM_CU_TRANSQUANT_BYPASS_FLAG_CTX
#define NUM_MVP_IDX_CTX
number of context models for MVP index
#define BSLICE_LUMA_SIGNIFICANCE_CONTEXT
#define BSLICE_LUMA_LAST_POSITION_CONTEXT
#define BSLICE_CHROMA_CBF_CONTEXT
#define NUM_CTX_LAST_FLAG_XY
number of context models for last coefficient position
#define NUM_SAO_TYPE_IDX_CTX
number of context models for SAO type index
#define NUM_PRED_MODE_CTX
number of context models for prediction mode
#define ISLICE_LUMA_SIGNIFICANCE_CONTEXT
#define BSLICE_LUMA_ONE_CONTEXT
#define PSLICE_CHROMA_CBF_CONTEXT
static const UChar INIT_CHROMA_QP_ADJ_FLAG[NUMBER_OF_SLICE_TYPES][1]
#define BSLICE_LUMA_ABS_CONTEXT
#define ISLICE_CHROMA_CBF_CONTEXT
#define NUM_ONE_FLAG_CTX
number of context models for greater than 1 flag
#define NUM_SKIP_FLAG_CTX
number of context models for skip flag
static const UChar INIT_ABS_FLAG[NUMBER_OF_SLICE_TYPES][((1 *4)+(1 *2))]
static const UChar INIT_INTER_DIR[NUMBER_OF_SLICE_TYPES][5]
static const UChar INIT_QT_ROOT_CBF[NUMBER_OF_SLICE_TYPES][1]
#define NUM_SAO_MERGE_FLAG_CTX
number of context models for SAO merge flags
#define NUM_MV_RES_CTX
number of context models for motion vector difference
static const UChar INIT_CHROMA_PRED_MODE[NUMBER_OF_SLICE_TYPES][2]
static const UChar INIT_MERGE_FLAG_EXT[NUMBER_OF_SLICE_TYPES][1]
#define ISLICE_CHROMA_SIGNIFICANCE_CONTEXT
static const UInt nonDiagonalScan8x8ContextOffset[MAX_NUM_CHANNEL_TYPE]
static const UChar INIT_TRANSFORMSKIP_FLAG[NUMBER_OF_SLICE_TYPES][2 *1]
#define ISLICE_CHROMA_ABS_CONTEXT
static const UChar INIT_SKIP_FLAG[NUMBER_OF_SLICE_TYPES][3]
static const UChar INIT_QT_CBF[NUMBER_OF_SLICE_TYPES][2 *5]
#define NUM_SIG_CG_FLAG_CTX
number of context models for MULTI_LEVEL_SIGNIFICANCE
#define BSLICE_CHROMA_SIGNIFICANCE_CONTEXT
static const UChar INIT_PRED_MODE[NUMBER_OF_SLICE_TYPES][1]
static const UChar INIT_CHROMA_QP_ADJ_IDC[NUMBER_OF_SLICE_TYPES][1]
#define NUM_CHROMA_PRED_CTX
number of context models for intra prediction (chroma)
#define ISLICE_LUMA_ABS_CONTEXT
static const UChar INIT_EXPLICIT_RDPCM_FLAG[NUMBER_OF_SLICE_TYPES][2 *1]
#define BSLICE_CHROMA_ABS_CONTEXT
static const UChar INIT_TRANS_SUBDIV_FLAG[NUMBER_OF_SLICE_TYPES][3]
#define ISLICE_CHROMA_ONE_CONTEXT
#define NUM_REF_NO_CTX
number of context models for reference index
static const UChar INIT_SPLIT_FLAG[NUMBER_OF_SLICE_TYPES][3]
#define NUM_DELTA_QP_CTX
number of context models for dQP
static const UChar INIT_DQP[NUMBER_OF_SLICE_TYPES][3]
#define PSLICE_LUMA_CBF_CONTEXT
#define NUM_EXPLICIT_RDPCM_FLAG_CTX
number of context models for the flag which specifies whether to use RDPCM on inter coded residues ...
static const UChar INIT_CROSS_COMPONENT_PREDICTION[NUMBER_OF_SLICE_TYPES][10]
#define CNU
dummy initialization value for unused context models 'Context model Not Used'
#define NUM_EXPLICIT_RDPCM_DIR_CTX
number of context models for the flag which specifies which RDPCM direction is used on inter coded re...
#define PSLICE_CHROMA_ONE_CONTEXT
#define ISLICE_CHROMA_LAST_POSITION_CONTEXT
static const UChar INIT_SIG_CG_FLAG[NUMBER_OF_SLICE_TYPES][2 *2]
static const UInt significanceMapContextSetStart[MAX_NUM_CHANNEL_TYPE][CONTEXT_NUMBER_OF_TYPES]
#define NUM_QT_CBF_CTX_PER_SET
number of context models for QT CBF
static const UChar INIT_MERGE_IDX_EXT[NUMBER_OF_SLICE_TYPES][1]
#define BSLICE_CHROMA_LAST_POSITION_CONTEXT
static const UChar INIT_MVD[NUMBER_OF_SLICE_TYPES][2]
#define ISLICE_LUMA_LAST_POSITION_CONTEXT
#define NUM_CTX_LAST_FLAG_SETS
#define ISLICE_LUMA_ONE_CONTEXT
#define NUM_ABS_FLAG_CTX
number of context models for greater than 2 flag
#define BSLICE_CHROMA_ONE_CONTEXT
static const UChar INIT_ONE_FLAG[NUMBER_OF_SLICE_TYPES][((4 *4)+(4 *2))]
#define PSLICE_LUMA_SIGNIFICANCE_CONTEXT
#define NUM_TRANS_SUBDIV_FLAG_CTX
number of context models for transform subdivision flags
static const UChar INIT_SAO_TYPE_IDX[NUMBER_OF_SLICE_TYPES][1]
#define NUM_CROSS_COMPONENT_PREDICTION_CTX
#define NUM_CHROMA_QP_ADJ_IDC_CTX
number of context models for chroma_qp_adjustment_idc
static const UChar INIT_REF_PIC[NUMBER_OF_SLICE_TYPES][2]
#define NUM_TRANSFORMSKIP_FLAG_CTX
number of context models for transform skipping
#define PSLICE_CHROMA_ABS_CONTEXT
#define PSLICE_LUMA_ABS_CONTEXT
#define BSLICE_LUMA_CBF_CONTEXT
static const UChar INIT_CU_TRANSQUANT_BYPASS_FLAG[NUMBER_OF_SLICE_TYPES][1]
#define NUM_INTRA_PREDICT_CTX
number of context models for intra prediction
static const UChar INIT_INTRA_PRED_MODE[NUMBER_OF_SLICE_TYPES][1]
static const UChar INIT_MVP_IDX[NUMBER_OF_SLICE_TYPES][1]
#define PSLICE_LUMA_ONE_CONTEXT
#define PSLICE_CHROMA_SIGNIFICANCE_CONTEXT
#define NUM_QT_CBF_CTX_SETS
#define NUM_CHROMA_QP_ADJ_FLAG_CTX
number of context models for chroma_qp_adjustment_flag
#define NUM_PART_SIZE_CTX
number of context models for partition size
#define PSLICE_LUMA_LAST_POSITION_CONTEXT
#define NUM_MERGE_IDX_EXT_CTX
number of context models for merge index of merge extended
#define NUM_SIG_FLAG_CTX
number of context models for sig flag
static const UChar INIT_EXPLICIT_RDPCM_DIR[NUMBER_OF_SLICE_TYPES][2 *1]
#define NUM_SPLIT_FLAG_CTX
number of context models for split flag