[FFmpeg-devel] [PATCH] lavc/hevc_cabac: fix cbf_cb and cbf_cr for transform depth 4
James Almer
jamrial at gmail.com
Tue Dec 17 19:22:14 EET 2019
On 12/11/2019 5:47 AM, Linjie Fu wrote:
> 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
Applied, thanks.
More information about the ffmpeg-devel
mailing list