[FFmpeg-devel] [PATCH] lavc/hevc_cabac: fix cbf_cb and cbf_cr for transform depth 4

Linjie Fu linjie.fu at intel.com
Wed Dec 11 10:47:38 EET 2019


The max transform depth is 5(from 0 to 4), so we need 5 cabac states for
cbf_cb and cbf_cr.

See Table 9-4 for details.

Signed-off-by: Xu Guangxin <guangxin.xu at intel.com>
Signed-off-by: Linjie Fu <linjie.fu at intel.com>
---
 libavcodec/hevc_cabac.c | 42 +++++++++++++++++++++---------------------
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/libavcodec/hevc_cabac.c b/libavcodec/hevc_cabac.c
index 8abb780..3dc0987 100644
--- a/libavcodec/hevc_cabac.c
+++ b/libavcodec/hevc_cabac.c
@@ -66,7 +66,7 @@ static const int8_t num_bins_in_se[] = {
      1, // no_residual_data_flag
      3, // split_transform_flag
      2, // cbf_luma
-     4, // cbf_cb, cbf_cr
+     5, // cbf_cb, cbf_cr
      2, // transform_skip_flag[][]
      2, // explicit_rdpcm_flag[][]
      2, // explicit_rdpcm_dir_flag[][]
@@ -122,23 +122,23 @@ static const int elem_offset[sizeof(num_bins_in_se)] = {
     37, // split_transform_flag
     40, // cbf_luma
     42, // cbf_cb, cbf_cr
-    46, // transform_skip_flag[][]
-    48, // explicit_rdpcm_flag[][]
-    50, // explicit_rdpcm_dir_flag[][]
-    52, // last_significant_coeff_x_prefix
-    70, // last_significant_coeff_y_prefix
-    88, // last_significant_coeff_x_suffix
-    88, // last_significant_coeff_y_suffix
-    88, // significant_coeff_group_flag
-    92, // significant_coeff_flag
-    136, // coeff_abs_level_greater1_flag
-    160, // coeff_abs_level_greater2_flag
-    166, // coeff_abs_level_remaining
-    166, // coeff_sign_flag
-    166, // log2_res_scale_abs
-    174, // res_scale_sign_flag
-    176, // cu_chroma_qp_offset_flag
-    177, // cu_chroma_qp_offset_idx
+    47, // transform_skip_flag[][]
+    49, // explicit_rdpcm_flag[][]
+    51, // explicit_rdpcm_dir_flag[][]
+    53, // last_significant_coeff_x_prefix
+    71, // last_significant_coeff_y_prefix
+    89, // last_significant_coeff_x_suffix
+    89, // last_significant_coeff_y_suffix
+    89, // significant_coeff_group_flag
+    93, // significant_coeff_flag
+    137, // coeff_abs_level_greater1_flag
+    161, // coeff_abs_level_greater2_flag
+    167, // coeff_abs_level_remaining
+    167, // coeff_sign_flag
+    167, // log2_res_scale_abs
+    175, // res_scale_sign_flag
+    177, // cu_chroma_qp_offset_flag
+    178, // cu_chroma_qp_offset_idx
 };
 
 #define CNU 154
@@ -189,7 +189,7 @@ static const uint8_t init_values[3][HEVC_CONTEXTS] = {
       // cbf_luma
       111, 141,
       // cbf_cb, cbf_cr
-      94, 138, 182, 154,
+      94, 138, 182, 154, 154,
       // transform_skip_flag
       139, 139,
       // explicit_rdpcm_flag
@@ -266,7 +266,7 @@ static const uint8_t init_values[3][HEVC_CONTEXTS] = {
       // cbf_luma
       153, 111,
       // cbf_cb, cbf_cr
-      149, 107, 167, 154,
+      149, 107, 167, 154, 154,
       // transform_skip_flag
       139, 139,
       // explicit_rdpcm_flag
@@ -343,7 +343,7 @@ static const uint8_t init_values[3][HEVC_CONTEXTS] = {
       // cbf_luma
       153, 111,
       // cbf_cb, cbf_cr
-      149, 92, 167, 154,
+      149, 92, 167, 154, 154,
       // transform_skip_flag
       139, 139,
       // explicit_rdpcm_flag
-- 
2.7.4



More information about the ffmpeg-devel mailing list