Almost every element of the slice data is coded with CABAC. Each element is turned into a string of bins (its binarisation); each bin is either decoded with an adaptive context, chosen by a context index, or bypassed at a fixed probability of one half. This page gives the context tables: the start value of every context, how the context for each bin is chosen, the binarisations, and the tables of the arithmetic decoder. Source: ITU-T H.265 (01/2026, version 11), clause 9.3, Tables 9-4 to 9-53.
Initialising a context
Each context has its own table (ctxTable, one per syntax element) and index (ctxIdx).
Contexts are initialised at the start of each slice segment and each tile (or copied
from saved states with wavefronts and dependent slice segments). Each starts from an
8-bit initValue (clause 9.3.2.2):
slopeIdx = initValue >> 4
offsetIdx = initValue & 15
m = slopeIdx × 5 − 45
n = (offsetIdx << 3) − 16
preCtxState = Clip3(1, 126, ((m × Clip3(0, 51, SliceQpY)) >> 4) + n)
valMps = preCtxState <= 63 ? 0 : 1
pStateIdx = valMps ? preCtxState − 64 : 63 − preCtxState
The set of values used depends on initType: 0 for I slices; for P slices 1,
or 2 when cabac_init_flag is 1; for B slices 2, or 1 when
cabac_init_flag is 1 (Equation 9-7). end_of_slice_segment_flag,
end_of_subset_one_bit and pcm_flag use no table: they are
decoded with DecodeTerminate (ctxTable 0, ctxIdx 0, which a decoder may instead treat as
a fixed state with pStateIdx 63 and valMps 0). The engine itself starts with
ivlCurrRange = 510 and ivlOffset = the next 9 bits; offsets
510 and 511 may not occur.
Initial values by syntax element
Tables 9-4 to 9-42. For each element, the ctxIdx used by each initType and their initValues in order. Elements that occur only in P and B slices have nothing for initType 0.
| Syntax element (table) | initType 0 | initType 1 | initType 2 |
|---|---|---|---|
sao_merge_left_flag, sao_merge_up_flag (9-5) | 0: 153 | 1: 153 | 2: 153 |
sao_type_idx_luma, sao_type_idx_chroma (9-6) | 0: 200 | 1: 185 | 2: 160 |
split_cu_flag (9-7) | 0–2: 139, 141, 157 | 3–5: 107, 139, 126 | 6–8: 107, 139, 126 |
cu_transquant_bypass_flag (9-8) | 0: 154 | 1: 154 | 2: 154 |
cu_skip_flag (9-9) | 0–2: 197, 185, 201 | 3–5: 197, 185, 201 | |
palette_mode_flag (9-38) | 0: 154 | 1: 154 | 2: 154 |
pred_mode_flag (9-10) | 0: 149 | 1: 134 | |
part_mode (9-11) | 0: 184 | 1–4: 154, 139, 154, 154 | 5–8: 154, 139, 154, 154 |
prev_intra_luma_pred_flag (9-12) | 0: 184 | 1: 154 | 2: 183 |
intra_chroma_pred_mode (9-13) | 0: 63 | 1: 152 | 2: 152 |
rqt_root_cbf (9-14) | 0: 79 | 1: 79 | |
merge_flag (9-15) | 0: 110 | 1: 154 | |
merge_idx (9-16) | 0: 122 | 1: 137 | |
inter_pred_idc (9-17) | 0–4: 95, 79, 63, 31, 31 | 5–9: 95, 79, 63, 31, 31 | |
ref_idx_l0, ref_idx_l1 (9-18) | 0–1: 153, 153 | 2–3: 153, 153 | |
mvp_l0_flag, mvp_l1_flag (9-19) | 0: 168 | 1: 168 | |
split_transform_flag (9-20) | 0–2: 153, 138, 138 | 3–5: 124, 138, 94 | 6–8: 224, 167, 122 |
cbf_luma (9-21) | 0–1: 111, 141 | 2–3: 153, 111 | 4–5: 153, 111 |
cbf_cb, cbf_cr (9-22) | 0–3: 94, 138, 182, 154; 12: 154 | 4–7: 149, 107, 167, 154; 13: 154 | 8–11: 149, 92, 167, 154; 14: 154 |
abs_mvd_greater0_flag (9-23) | 0: 140 | 2: 169 | |
abs_mvd_greater1_flag (9-23) | 1: 198 | 3: 198 | |
tu_residual_act_flag (9-39) | 0: 154 | 1: 154 | 2: 154 |
log2_res_scale_abs_plus1 (9-36) | 0–7: all 154 | 8–15: all 154 | 16–23: all 154 |
res_scale_sign_flag (9-37) | 0–1: 154, 154 | 2–3: 154, 154 | 4–5: 154, 154 |
transform_skip_flag, luma (9-25) | 0: 139 | 1: 139 | 2: 139 |
transform_skip_flag, Cb and Cr (9-25) | 3: 139 | 4: 139 | 5: 139 |
explicit_rdpcm_flag, luma (9-32) | 0: 139 | 1: 139 | |
explicit_rdpcm_flag, Cb and Cr (9-32) | 2: 139 | 3: 139 | |
explicit_rdpcm_dir_flag, luma (9-33) | 0: 139 | 1: 139 | |
explicit_rdpcm_dir_flag, Cb and Cr (9-33) | 2: 139 | 3: 139 | |
coded_sub_block_flag (9-28) | 0–3: 91, 171, 134, 141 | 4–7: 121, 140, 61, 154 | 8–11: 121, 140, 61, 154 |
coeff_abs_level_greater2_flag (9-31) | 0–5: 138, 153, 136, 167, 152, 152 | 6–11: 107, 167, 91, 122, 107, 167 | 12–17: 107, 167, 91, 107, 107, 167 |
palette_run_prefix (9-40) | 0–7: all 154 | 8–15: all 154 | 16–23: all 154 |
copy_above_palette_indices_flag, copy_above_indices_for_final_run_flag (9-41) | 0: 154 | 1: 154 | 2: 154 |
palette_transpose_flag (9-42) | 0: 154 | 1: 154 | 2: 154 |
cu_qp_delta_abs (9-24) | 0–1: 154, 154 | 2–3: 154, 154 | 4–5: 154, 154 |
cu_chroma_qp_offset_flag (9-34) | 0: 154 | 1: 154 | 2: 154 |
cu_chroma_qp_offset_idx (9-35) | 0: 154 | 1: 154 | 2: 154 |
The coefficient elements have longer lists. last_sig_coeff_x_prefix and
last_sig_coeff_y_prefix (Tables 9-26 and 9-27, identical) use ctxIdx 0 to 17
for initType 0, 18 to 35 for 1 and 36 to 53 for 2:
| ctxInc | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| initType 0 | 110 | 110 | 124 | 125 | 140 | 153 | 125 | 127 | 140 | 109 | 111 | 143 | 127 | 111 | 79 | 108 | 123 | 63 |
| initType 1 | 125 | 110 | 94 | 110 | 95 | 79 | 125 | 111 | 110 | 78 | 110 | 111 | 111 | 95 | 94 | 108 | 123 | 108 |
| initType 2 | 125 | 110 | 124 | 110 | 95 | 94 | 125 | 111 | 111 | 79 | 125 | 126 | 111 | 111 | 79 | 108 | 123 | 93 |
sig_coeff_flag (Table 9-29) uses 44 contexts per initType: ctxInc 0 to 41
are ctxIdx 0 to 41, 42 to 83 or 84 to 125, and ctxInc 42 and 43 (the transform-skip
contexts) are ctxIdx 126 and 127, 128 and 129, or 130 and 131. The values by ctxIdx:
| ctxIdx | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | +10 | +11 | +12 | +13 | +14 | +15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 111 | 111 | 125 | 110 | 110 | 94 | 124 | 108 | 124 | 107 | 125 | 141 | 179 | 153 | 125 | 107 |
| 16 | 125 | 141 | 179 | 153 | 125 | 107 | 125 | 141 | 179 | 153 | 125 | 140 | 139 | 182 | 182 | 152 |
| 32 | 136 | 152 | 136 | 153 | 136 | 139 | 111 | 136 | 139 | 111 | 155 | 154 | 139 | 153 | 139 | 123 |
| 48 | 123 | 63 | 153 | 166 | 183 | 140 | 136 | 153 | 154 | 166 | 183 | 140 | 136 | 153 | 154 | 166 |
| 64 | 183 | 140 | 136 | 153 | 154 | 170 | 153 | 123 | 123 | 107 | 121 | 107 | 121 | 167 | 151 | 183 |
| 80 | 140 | 151 | 183 | 140 | 170 | 154 | 139 | 153 | 139 | 123 | 123 | 63 | 124 | 166 | 183 | 140 |
| 96 | 136 | 153 | 154 | 166 | 183 | 140 | 136 | 153 | 154 | 166 | 183 | 140 | 136 | 153 | 154 | 170 |
| 112 | 153 | 138 | 138 | 122 | 121 | 122 | 121 | 167 | 151 | 183 | 140 | 151 | 183 | 140 | 141 | 111 |
| 128 | 140 | 140 | 140 | 140 | ||||||||||||
coeff_abs_level_greater1_flag (Table 9-30) uses ctxIdx 0 to 23 for
initType 0, 24 to 47 for 1 and 48 to 71 for 2:
| ctxIdx | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | +10 | +11 | +12 | +13 | +14 | +15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 140 | 92 | 137 | 138 | 140 | 152 | 138 | 139 | 153 | 74 | 149 | 92 | 139 | 107 | 122 | 152 |
| 16 | 140 | 179 | 166 | 182 | 140 | 227 | 122 | 197 | 154 | 196 | 196 | 167 | 154 | 152 | 167 | 182 |
| 32 | 182 | 134 | 149 | 136 | 153 | 121 | 136 | 137 | 169 | 194 | 166 | 167 | 154 | 167 | 137 | 182 |
| 48 | 154 | 196 | 167 | 167 | 154 | 152 | 167 | 182 | 182 | 134 | 149 | 136 | 153 | 121 | 136 | 122 |
| 64 | 169 | 208 | 166 | 167 | 154 | 152 | 167 | 182 | ||||||||
Binarisations
Table 9-43. FL is fixed length (the value in ⌈log2(cMax + 1)⌉ bits), TR truncated Rice (a unary prefix of 1s ended by a 0, which is left out at the maximum, then a suffix of cRiceParam bits; with cRiceParam 0 it is truncated unary), EGk k-th order Exp-Golomb, TB truncated binary.
| Syntax element | Binarisation |
|---|---|
end_of_slice_segment_flag, end_of_subset_one_bit, pcm_flag | FL, cMax 1 |
sao_merge_left_flag, sao_merge_up_flag, sao_offset_sign | FL, cMax 1 |
sao_type_idx_luma, sao_type_idx_chroma | TR, cMax 2 |
sao_offset_abs | TR, cMax (1 << (Min(bitDepth, 10) − 5)) − 1 |
sao_band_position | FL, cMax 31 |
sao_eo_class_luma, sao_eo_class_chroma | FL, cMax 3 |
split_cu_flag, cu_transquant_bypass_flag, cu_skip_flag, palette_mode_flag, pred_mode_flag, prev_intra_luma_pred_flag, rqt_root_cbf, merge_flag, mvp_l0_flag, mvp_l1_flag, split_transform_flag, cbf_luma, cbf_cb, cbf_cr, abs_mvd_greater0_flag, abs_mvd_greater1_flag, mvd_sign_flag, tu_residual_act_flag, res_scale_sign_flag, transform_skip_flag, explicit_rdpcm_flag, explicit_rdpcm_dir_flag, coded_sub_block_flag, sig_coeff_flag, coeff_abs_level_greater1_flag, coeff_abs_level_greater2_flag, coeff_sign_flag, palette_escape_val_present_flag, copy_above_indices_for_final_run_flag, palette_transpose_flag, copy_above_palette_indices_flag, cu_qp_delta_sign_flag, cu_chroma_qp_offset_flag | FL, cMax 1 |
part_mode | Table 9-45, below |
mpm_idx | TR, cMax 2 |
rem_intra_luma_pred_mode | FL, cMax 31 |
intra_chroma_pred_mode | Table 9-46, below |
merge_idx | TR, cMax MaxNumMergeCand − 1 |
inter_pred_idc | Table 9-47, below |
ref_idx_l0, ref_idx_l1 | TR, cMax num_ref_idx_lX_active_minus1 |
abs_mvd_minus2 | EG1 |
log2_res_scale_abs_plus1 | TR, cMax 4 |
last_sig_coeff_x_prefix, last_sig_coeff_y_prefix | TR, cMax (log2TrafoSize << 1) − 1 |
last_sig_coeff_x_suffix, last_sig_coeff_y_suffix | FL, cMax (1 << ((prefix >> 1) − 1)) − 1 |
coeff_abs_level_remaining | clause 9.3.3.11: a TR prefix with Rice parameter cRiceParam (which adapts within the sub-block, and with persistent_rice_adaptation_enabled_flag starts from StatCoeff ÷ 4); when the prefix is 1111, an EG(cRiceParam + 1) suffix, or the limited EGk form with extended_precision_processing_flag |
palette_predictor_run, num_signalled_palette_entries | EG0 |
new_palette_entries | FL, cMax (1 << bit depth of the component) − 1 |
num_palette_indices_minus1 | clause 9.3.3.14, from MaxPaletteIndex |
palette_idx_idc | clause 9.3.3.13, from MaxPaletteIndex |
palette_run_prefix | TR, cMax Floor(Log2(PaletteMaxRunMinus1)) + 1 |
palette_run_suffix | TB, cMax (PrefixOffset << 1) > PaletteMaxRunMinus1 ? PaletteMaxRunMinus1 − PrefixOffset : PrefixOffset − 1 |
palette_escape_val | clause 9.3.3.12: FL with cMax (1 << bit depth) − 1 when cu_transquant_bypass_flag is 1, otherwise EG3 |
cu_qp_delta_abs | clause 9.3.3.10: a TR prefix of up to 5 bins, then EG0 of the rest |
cu_chroma_qp_offset_idx | TR, cMax chroma_qp_offset_list_len_minus1 |
| Prediction | part_mode | PartMode | CB larger than minimum | CB of minimum size | ||
|---|---|---|---|---|---|---|
| no AMP | AMP | size 8 × 8 | larger | |||
| intra | 0 | PART_2Nx2N | – | – | 1 | 1 |
| intra | 1 | PART_NxN | – | – | 0 | 0 |
| inter | 0 | PART_2Nx2N | 1 | 1 | 1 | 1 |
| inter | 1 | PART_2NxN | 01 | 011 | 01 | 01 |
| inter | 2 | PART_Nx2N | 00 | 001 | 00 | 001 |
| inter | 3 | PART_NxN | – | – | – | 000 |
| inter | 4 | PART_2NxnU | – | 0100 | – | – |
| inter | 5 | PART_2NxnD | – | 0101 | – | – |
| inter | 6 | PART_nLx2N | – | 0000 | – | – |
| inter | 7 | PART_nRx2N | – | 0001 | – | – |
intra_chroma_pred_mode (Table 9-46): 4 is 0; 0 to 3 are
100, 101, 110, 111.
inter_pred_idc (Table 9-47): PRED_L0 (0) 00, PRED_L1 (1)
01, PRED_BI (2) 1; for 8 × 4 and 4 × 8 blocks (nPbW + nPbH =
12) only 0 for L0 and 1 for L1.
Choosing the context of each bin
Table 9-48. The context of bin binIdx is ctxIdx = the first ctxIdx of the element for the current initType + ctxInc. “bypass” bins use no context; “terminate” uses DecodeTerminate; “–” means the bin never occurs.
| Syntax element | bin 0 | 1 | 2 | 3 | 4 | ≥ 5 |
|---|---|---|---|---|---|---|
end_of_slice_segment_flag, end_of_subset_one_bit, pcm_flag | terminate | – | – | – | – | – |
sao_merge_left_flag, sao_merge_up_flag | 0 | – | – | – | – | – |
sao_type_idx_luma, sao_type_idx_chroma | 0 | bypass | – | – | – | – |
sao_offset_abs | bypass | bypass | bypass | bypass | bypass | – |
sao_offset_sign | bypass | – | – | – | – | – |
sao_band_position | bypass | bypass | bypass | bypass | bypass | bypass |
sao_eo_class_luma, sao_eo_class_chroma | bypass | bypass | – | – | – | – |
split_cu_flag, cu_skip_flag | 0, 1 or 2 (from the neighbours, below) | – | – | – | – | – |
cu_transquant_bypass_flag, palette_mode_flag, pred_mode_flag, prev_intra_luma_pred_flag, rqt_root_cbf, tu_residual_act_flag, merge_flag, mvp_l0_flag, mvp_l1_flag, abs_mvd_greater0_flag, abs_mvd_greater1_flag, cu_chroma_qp_offset_flag, transform_skip_flag, explicit_rdpcm_flag, explicit_rdpcm_dir_flag, palette_transpose_flag, copy_above_palette_indices_flag, copy_above_indices_for_final_run_flag | 0 | – | – | – | – | – |
part_mode, CB of minimum size | 0 | 1 | 2 | bypass | – | – |
part_mode, larger CB | 0 | 1 | 3 | bypass | – | – |
mpm_idx | bypass | bypass | – | – | – | – |
rem_intra_luma_pred_mode | bypass | bypass | bypass | bypass | bypass | – |
intra_chroma_pred_mode | 0 | bypass | bypass | – | – | – |
merge_idx | 0 | bypass | bypass | bypass | – | – |
inter_pred_idc | nPbW + nPbH ≠ 12 ? CtDepth : 4 | 4 | – | – | – | – |
ref_idx_l0, ref_idx_l1 | 0 | 1 | bypass | bypass | bypass | bypass |
split_transform_flag | 5 − log2TrafoSize | – | – | – | – | – |
cbf_cb, cbf_cr | trafoDepth | – | – | – | – | – |
cbf_luma | trafoDepth = 0 ? 1 : 0 | – | – | – | – | – |
abs_mvd_minus2, coeff_abs_level_remaining, palette_predictor_run, num_signalled_palette_entries, new_palette_entries, num_palette_indices_minus1, palette_idx_idc, palette_run_suffix, palette_escape_val | bypass | bypass | bypass | bypass | bypass | bypass |
mvd_sign_flag, cu_qp_delta_sign_flag, coeff_sign_flag, palette_escape_val_present_flag | bypass | – | – | – | – | – |
cu_qp_delta_abs | 0 | 1 | 1 | 1 | 1 | bypass |
cu_chroma_qp_offset_idx | 0 | 0 | 0 | 0 | 0 | – |
log2_res_scale_abs_plus1[c] | 4c | 4c + 1 | 4c + 2 | 4c + 3 | – | – |
res_scale_sign_flag[c] | c | – | – | – | – | – |
last_sig_coeff_x_prefix, last_sig_coeff_y_prefix | 0 to 17, below | |||||
last_sig_coeff_x_suffix, last_sig_coeff_y_suffix | bypass | bypass | bypass | – | – | – |
coded_sub_block_flag | 0 to 3, below | – | – | – | – | – |
sig_coeff_flag | 0 to 43, below | – | – | – | – | – |
coeff_abs_level_greater1_flag | 0 to 23, below | – | – | – | – | – |
coeff_abs_level_greater2_flag | 0 to 5, below | – | – | – | – | – |
palette_run_prefix | 0 to 7, below | |||||
Neighbour-based contexts (clause 9.3.4.2.2)
For split_cu_flag, ctxInc counts the available neighbours to the left and
above whose coding tree depth CtDepth is greater than the current depth;
for cu_skip_flag, the available neighbours that are skipped (Table 9-49).
last_sig_coeff_x_prefix and _y_prefix (clause 9.3.4.2.3)
ctxInc = (binIdx >> ctxShift) + ctxOffset. For luma ctxOffset = 3 × (log2TrafoSize − 2) + ((log2TrafoSize − 1) >> 2) and ctxShift = (log2TrafoSize + 1) >> 2; for chroma ctxOffset = 15 and ctxShift = log2TrafoSize − 2.
coded_sub_block_flag (clause 9.3.4.2.4)
csbfCtx is the sum of the flags of the sub-blocks to the right and below (where they exist); ctxInc = Min(csbfCtx, 1) for luma and 2 + Min(csbfCtx, 1) for chroma.
sig_coeff_flag (clause 9.3.4.2.5)
- With
transform_skip_context_enabled_flagand either transform skip or transquant bypass: sigCtx = 42 for luma, 16 for chroma. - Else in a 4 × 4 block: sigCtx = ctxIdxMap[(yC << 2) + xC], with ctxIdxMap (Table 9-50) = 0, 1, 4, 5, 2, 3, 4, 5, 6, 6, 8, 8, 7, 7, 8 for positions 0 to 14.
- Else the DC position (xC + yC = 0): sigCtx = 0.
- Else, from prevCsbf (bit 0 the sub-block to the right, bit 1 the one below) and the position (xP, yP) inside the 4 × 4 sub-block: prevCsbf 0 gives 2 when xP + yP = 0, 1 when xP + yP < 3, else 0; prevCsbf 1 gives 2, 1, 0 for yP = 0, 1, more; prevCsbf 2 gives 2, 1, 0 for xP = 0, 1, more; prevCsbf 3 gives 2. Then for luma add 3 when the sub-block is not the first, and add 9 (8 × 8, diagonal scan) or 15 (8 × 8, other scans) or 21 (larger blocks); for chroma add 9 (8 × 8) or 12 (larger).
ctxInc = sigCtx for luma and 27 + sigCtx for chroma.
coeff_abs_level_greater1_flag and _greater2_flag (clauses 9.3.4.2.6, 9.3.4.2.7)
At the first coefficient of each sub-block, ctxSet is 0 for the first sub-block or for chroma and 2 otherwise, plus 1 if the previous sub-block’s last greater1Ctx had reached 0 (that is, a greater-than-1 level was seen there). greater1Ctx starts at 1, becomes 0 after a flag of 1 and grows by 1 after each flag of 0. greater1 ctxInc = ctxSet × 4 + Min(3, greater1Ctx), plus 16 for chroma. greater2 ctxInc = ctxSet, plus 4 for chroma.
palette_run_prefix (clause 9.3.4.2.8)
For bin 0 after an index (not copy-above), ctxInc is 0 if palette_idx_idc
< 1, 1 if < 3, else 2. Otherwise Table 9-51: copy above, bins 0 to 4 use 5, 6, 6,
7, 7; index mode, bins 1 to 4 use 3, 3, 4, 4; later bins are bypassed.
The arithmetic decoder
Decoding a context-coded bin (clause 9.3.4.3.2): qRangeIdx = (ivlCurrRange >> 6) & 3 and ivlLpsRange = rangeTabLps[pStateIdx][qRangeIdx]; ivlCurrRange −= ivlLpsRange. If ivlOffset ≥ ivlCurrRange the bin is the LPS (1 − valMps), ivlOffset −= ivlCurrRange and ivlCurrRange = ivlLpsRange; otherwise it is valMps. The state then moves: after an MPS to transIdxMps(pStateIdx); after an LPS, valMps flips if pStateIdx was 0, then pStateIdx = transIdxLps(pStateIdx). Renormalisation doubles ivlCurrRange and shifts one bit into ivlOffset while ivlCurrRange < 256.
A bypass bin doubles ivlOffset, shifts in one bit and gives 1 (subtracting
ivlCurrRange) if ivlOffset ≥ ivlCurrRange. A terminate bin subtracts 2 from
ivlCurrRange and gives 1, ending CABAC, if ivlOffset ≥ ivlCurrRange; the last bit read is
then the stop bit or the alignment bit. Before aligned bypass decoding of
coeff_abs_level_remaining and coeff_sign_flag, ivlCurrRange is
set to 256 (clause 9.3.4.3.6).
| pStateIdx | q 0 | q 1 | q 2 | q 3 | pStateIdx | q 0 | q 1 | q 2 | q 3 |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 128 | 176 | 208 | 240 | 32 | 27 | 33 | 39 | 45 |
| 1 | 128 | 167 | 197 | 227 | 33 | 26 | 31 | 37 | 43 |
| 2 | 128 | 158 | 187 | 216 | 34 | 24 | 30 | 35 | 41 |
| 3 | 123 | 150 | 178 | 205 | 35 | 23 | 28 | 33 | 39 |
| 4 | 116 | 142 | 169 | 195 | 36 | 22 | 27 | 32 | 37 |
| 5 | 111 | 135 | 160 | 185 | 37 | 21 | 26 | 30 | 35 |
| 6 | 105 | 128 | 152 | 175 | 38 | 20 | 24 | 29 | 33 |
| 7 | 100 | 122 | 144 | 166 | 39 | 19 | 23 | 27 | 31 |
| 8 | 95 | 116 | 137 | 158 | 40 | 18 | 22 | 26 | 30 |
| 9 | 90 | 110 | 130 | 150 | 41 | 17 | 21 | 25 | 28 |
| 10 | 85 | 104 | 123 | 142 | 42 | 16 | 20 | 23 | 27 |
| 11 | 81 | 99 | 117 | 135 | 43 | 15 | 19 | 22 | 25 |
| 12 | 77 | 94 | 111 | 128 | 44 | 14 | 18 | 21 | 24 |
| 13 | 73 | 89 | 105 | 122 | 45 | 14 | 17 | 20 | 23 |
| 14 | 69 | 85 | 100 | 116 | 46 | 13 | 16 | 19 | 22 |
| 15 | 66 | 80 | 95 | 110 | 47 | 12 | 15 | 18 | 21 |
| 16 | 62 | 76 | 90 | 104 | 48 | 12 | 14 | 17 | 20 |
| 17 | 59 | 72 | 86 | 99 | 49 | 11 | 14 | 16 | 19 |
| 18 | 56 | 69 | 81 | 94 | 50 | 11 | 13 | 15 | 18 |
| 19 | 53 | 65 | 77 | 89 | 51 | 10 | 12 | 15 | 17 |
| 20 | 51 | 62 | 73 | 85 | 52 | 10 | 12 | 14 | 16 |
| 21 | 48 | 59 | 69 | 80 | 53 | 9 | 11 | 13 | 15 |
| 22 | 46 | 56 | 66 | 76 | 54 | 9 | 11 | 12 | 14 |
| 23 | 43 | 53 | 63 | 72 | 55 | 8 | 10 | 12 | 14 |
| 24 | 41 | 50 | 59 | 69 | 56 | 8 | 9 | 11 | 13 |
| 25 | 39 | 48 | 56 | 65 | 57 | 7 | 9 | 11 | 12 |
| 26 | 37 | 45 | 54 | 62 | 58 | 7 | 9 | 10 | 12 |
| 27 | 35 | 43 | 51 | 59 | 59 | 7 | 8 | 10 | 11 |
| 28 | 33 | 41 | 48 | 56 | 60 | 6 | 8 | 9 | 11 |
| 29 | 32 | 39 | 46 | 53 | 61 | 6 | 7 | 9 | 10 |
| 30 | 30 | 37 | 43 | 50 | 62 | 6 | 7 | 8 | 9 |
| 31 | 29 | 35 | 41 | 48 | 63 | 2 | 2 | 2 | 2 |
Table 9-52 above gives rangeTabLps (q is qRangeIdx). Table 9-53, the state transitions:
| pStateIdx | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | +10 | +11 | +12 | +13 | +14 | +15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 LPS | 0 | 0 | 1 | 2 | 2 | 4 | 4 | 5 | 6 | 7 | 8 | 9 | 9 | 11 | 11 | 12 |
| 0 MPS | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 16 LPS | 13 | 13 | 15 | 15 | 16 | 16 | 18 | 18 | 19 | 19 | 21 | 21 | 22 | 22 | 23 | 24 |
| 16 MPS | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
| 32 LPS | 24 | 25 | 26 | 26 | 27 | 27 | 28 | 29 | 29 | 30 | 30 | 30 | 31 | 32 | 32 | 33 |
| 32 MPS | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
| 48 LPS | 33 | 33 | 34 | 34 | 35 | 35 | 35 | 36 | 36 | 36 | 37 | 37 | 37 | 38 | 38 | 63 |
| 48 MPS | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 62 | 63 |