From 232332dc5f7db62502001c7dc9220141ac75f381 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arttu=20M=C3=A4kinen?= Date: Mon, 17 Aug 2020 14:23:26 +0300 Subject: [PATCH] Update of contexts. --- src/context.c | 111 +++++++++++++++++++++++++------------------------- 1 file changed, 55 insertions(+), 56 deletions(-) diff --git a/src/context.c b/src/context.c index e05230d8..a97dac6b 100644 --- a/src/context.c +++ b/src/context.c @@ -25,17 +25,17 @@ static const uint8_t INIT_SPLIT_FLAG[4][9] = { - { 18, 27, 15, 18, 28, 45, 19, 7, 23, }, + { 18, 27, 15, 18, 28, 45, 26, 7, 23, }, { 11, 35, 53, 12, 6, 30, 13, 15, 31, }, - { 19, 28, 38, 27, 29, 38, 28, 38, 31, }, + { 19, 28, 38, 27, 29, 38, 20, 30, 31, }, { 12, 13, 8, 8, 13, 12, 5, 9, 9, }, }; static const uint8_t INIT_QT_SPLIT_FLAG[4][6] = { { 26, 36, 38, 18, 34, 21, }, { 20, 14, 23, 18, 19, 6, }, - { 27, 6, 15, 25, 19, 22, }, - { 0, 8, 8, 12, 12, 9, }, + { 27, 6, 15, 25, 19, 37, }, + { 0, 8, 8, 12, 12, 8, }, }; static const uint8_t INIT_SKIP_FLAG[4][3] = { @@ -47,15 +47,15 @@ static const uint8_t INIT_SKIP_FLAG[4][3] = { static const uint8_t INIT_MERGE_FLAG_EXT[4][1] = { { 6, }, - { 6, }, + { 21, }, { 26, }, { 4, }, }; static const uint8_t INIT_MERGE_IDX_EXT[4][1] = { - { 33, }, - { 35, }, + { 18, }, + { 20, }, { 34, }, { 4, }, }; @@ -82,7 +82,7 @@ static const uint8_t MULTI_REF_LINE_MODE[4][2] = { }; static const uint8_t INIT_INTRA_LUMA_MPM_FLAG[4] = { - 29, 36, 45, 6 + 44, 36, 45, 6 }; static const uint8_t INIT_INTRA_LUMA_PLANAR_MODE[4][2] = { @@ -107,7 +107,7 @@ static const uint8_t INIT_CU_QP_DELTA_ABS[4][2] = { }; static const uint8_t INIT_INTER_DIR[4][6] = { - { 14, 6, 5, 4, 3, 40, }, + { 14, 13, 5, 4, 3, 40, }, { 7, 6, 5, 12, 4, 40, }, { CNU, CNU, CNU, CNU, CNU, CNU, }, { 0, 0, 1, 4, 4, 0, }, @@ -121,7 +121,7 @@ static const uint8_t INIT_REF_PIC[4][2] = { }; static const uint8_t INIT_MVD[4][2] = { - { 51, 58, }, + { 51, 36, }, { 44, 43, }, { 14, 45, }, { 9, 5, }, @@ -142,17 +142,17 @@ static const uint8_t INIT_QT_CBF[4][9] = { { 5, 1, 8, 9, 5, 0, 2, 1, 0}, }; -static const uint8_t BDPCM_MODE_INIT[4][2] = { - { 19, 28, }, - { 40, 36, }, - { 19, 35, }, - { 4, 4, }, +static const uint8_t BDPCM_MODE_INIT[4][4] = { + { 19, 21, 0, 28, }, + { 40, 36, 0, 13, }, + { 19, 35, 1, 27, }, + { 1, 4, 1, 0, }, }; static const uint8_t INIT_SIG_COEFF_GROUP[4][4] = { - { 25, 45, 25, 45}, - { 25, 30, 25, 52}, - { 18, 31, 25, 7}, + { 25, 45, 25, 14}, + { 25, 30, 25, 45}, + { 18, 31, 25, 15}, { 8, 5, 5, 8}, }; @@ -164,13 +164,13 @@ static const uint8_t INIT_SIG_FLAG[6][4][12] = { { 12, 9, 9, 10, 9, 9, 9, 10, 8, 8, 8, 10, }, }, { - { 9, 49, 50, 29, 48, 59, 59, 38, }, - { 17, 19, 20, 29, 41, 59, 60, 38, }, - { 25, 27, 28, 37, 49, 53, 53, 46, }, - { 9, 9, 9, 13, 4, 5, 8, 9, }, + { 9, 49, 50, 36, 48, 59, 59, 38, }, + { 17, 34, 35, 21, 41, 59, 60, 38, }, + { 25, 27, 28, 37, 34, 53, 53, 46, }, + { 12, 12, 9, 13, 4, 5, 8, 9, }, }, { - { 26, 45, 53, 46, 49, 54, 61, 39, 42, 39, 39, 39, }, + { 26, 45, 53, 46, 49, 54, 61, 39, 35, 39, 39, 39, }, { 19, 38, 38, 46, 34, 54, 54, 39, 6, 39, 39, 39, }, { 11, 38, 46, 54, 27, 39, 39, 39, 44, 39, 39, 39, }, { 9, 13, 8, 8, 8, 8, 8, 5, 8, 0, 0, 0, }, @@ -179,12 +179,12 @@ static const uint8_t INIT_SIG_FLAG[6][4][12] = { { 34, 45, 38, 31, 58, 39, 39, 39, }, { 35, 45, 53, 54, 44, 39, 39, 39, }, { 19, 46, 38, 39, 52, 39, 39, 39, }, - { 8, 12, 8, 8, 4, 0, 0, 0, }, + { 8, 12, 12, 8, 4, 0, 0, 0, }, }, { { 19, 54, 39, 39, 50, 39, 39, 39, 0, 39, 39, 39, }, { 19, 39, 54, 39, 19, 39, 39, 39, 56, 39, 39, 39, }, - { 18, 39, 39, 39, 19, 39, 39, 39, 0, 39, 39, 39, }, + { 18, 39, 39, 39, 27, 39, 39, 39, 0, 39, 39, 39, }, { 8, 8, 8, 8, 8, 0, 4, 4, 0, 0, 0, 0, }, }, { @@ -204,53 +204,53 @@ static const uint8_t INIT_PARITY_FLAG[2][4][21] = { 8, 9, 12, 13, 13, 13, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 10, 13, 13, 13, 13, }, }, { - { 33, 25, 26, 19, 19, 27, 33, 42, 43, 35, 43, }, - { 25, 25, 26, 11, 19, 27, 33, 42, 35, 20, 43, }, + { 33, 25, 26, 34, 19, 27, 33, 42, 43, 35, 43, }, + { 25, 25, 26, 11, 19, 27, 33, 42, 35, 35, 43, }, { 33, 25, 26, 42, 19, 27, 26, 50, 35, 20, 43, }, - { 9, 13, 12, 12, 13, 13, 13, 13, 13, 13, 13, }, + { 8, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, }, } }; static const uint8_t INIT_GTX_FLAG[4][4][21] = { { - { 25, 0, 0, 17, 25, 18, 0, 9, 25, 33, 19, 0, 25, 33, 26, 20, 25, 33, 34, 35, 29, }, - { 17, 0, 1, 17, 25, 18, 0, 9, 25, 33, 34, 9, 25, 18, 26, 20, 25, 18, 19, 27, 21, }, - { 25, 1, 40, 25, 33, 11, 17, 25, 25, 18, 4, 17, 33, 26, 19, 5, 33, 19, 20, 28, 22, }, - { 1, 5, 9, 9, 9, 6, 5, 9, 10, 10, 9, 9, 9, 9, 9, 9, 6, 8, 9, 9, 9, }, + { 25, 0, 0, 17, 25, 26, 0, 9, 25, 33, 19, 0, 25, 33, 26, 20, 25, 33, 27, 35, 22, }, + { 17, 0, 1, 17, 25, 18, 0, 9, 25, 33, 34, 9, 25, 18, 26, 20, 25, 18, 19, 27, 29, }, + { 25, 1, 40, 25, 33, 11, 17, 25, 25, 18, 4, 17, 33, 26, 19, 13, 33, 19, 20, 28, 22, }, + { 1, 5, 9, 9, 9, 6, 5, 9, 10, 10, 9, 9, 9, 9, 9, 9, 6, 8, 9, 9, 10, }, }, { - { 25, 1, 25, 33, 11, 4, 25, 33, 27, 36, 37, }, - { 17, 9, 25, 10, 3, 4, 17, 33, 19, 28, 29, }, - { 48, 9, 25, 18, 26, 35, 25, 26, 35, 28, 37, }, - { 1, 5, 8, 8, 8, 6, 6, 9, 8, 8, 10, }, + { 25, 1, 25, 33, 26, 12, 25, 33, 27, 28, 37, }, + { 17, 9, 25, 10, 18, 4, 17, 33, 19, 20, 29, }, + { 40, 9, 25, 18, 26, 35, 25, 26, 35, 28, 37, }, + { 1, 5, 8, 8, 9, 6, 6, 9, 8, 8, 9, }, }, { - { 0, 0, 33, 34, 35, 36, 25, 34, 35, 28, 29, 40, 42, 43, 36, 30, 56, 43, 44, 45, 38, }, + { 0, 0, 33, 34, 35, 21, 25, 34, 35, 28, 29, 40, 42, 43, 29, 30, 49, 36, 37, 45, 38, }, { 0, 17, 26, 19, 35, 21, 25, 34, 20, 28, 29, 33, 27, 28, 29, 22, 34, 28, 44, 37, 38, }, - { 25, 25, 11, 27, 20, 21, 18, 12, 28, 21, 22, 34, 28, 29, 29, 30, 28, 29, 45, 30, 23, }, - { 9, 5, 10, 13, 13, 10, 9, 10, 13, 13, 13, 9, 10, 10, 10, 13, 8, 9, 9, 10, 13, }, + { 25, 25, 11, 27, 20, 21, 33, 12, 28, 21, 22, 34, 28, 29, 29, 30, 36, 29, 45, 30, 23, }, + { 9, 5, 10, 13, 13, 10, 9, 10, 13, 13, 13, 9, 10, 10, 10, 13, 8, 9, 10, 10, 13, }, }, { - { 0, 40, 42, 28, 21, 29, 57, 52, 53, 38, 46, }, - { 0, 25, 27, 20, 13, 6, 57, 52, 30, 38, 31, }, - { 40, 33, 27, 28, 21, 37, 51, 37, 53, 38, 46, }, - { 9, 9, 10, 12, 12, 10, 5, 9, 9, 9, 13, }, + { 0, 40, 34, 43, 36, 37, 57, 52, 45, 38, 46, }, + { 0, 25, 19, 20, 13, 14, 57, 44, 30, 30, 23, }, + { 40, 33, 27, 28, 21, 37, 36, 37, 45, 38, 46, }, + { 8, 8, 9, 12, 12, 10, 5, 9, 9, 9, 13, }, } }; static const uint8_t INIT_LAST_X[4][23] = { - { 14, 6, 12, 7, 6, 4, 14, 7, 6, 4, 29, 7, 6, 6, 12, 28, 7, 13, 13, 20, 26, 5, 3,}, - { 6, 13, 12, 6, 6, 12, 14, 14, 13, 12, 29, 7, 6, 13, 36, 28, 14, 13, 20, 19, 12, 4, 18, }, - { 13, 5, 4, 6, 14, 4, 6, 14, 21, 11, 14, 7, 14, 13, 11, 21, 37, 37, 21, 50, 12, 4, 3,}, - { 8, 5, 4, 5, 4, 4, 5, 4, 1, 0, 4, 1, 0, 0, 0, 1, 1, 0, 0, 0, 2, 1, 1,}, + { 6, 6, 12, 14, 6, 4, 14, 7, 6, 4, 29, 7, 6, 6, 12, 28, 7, 13, 13, 35, }, + { 6, 13, 12, 6, 6, 12, 14, 14, 13, 12, 29, 7, 6, 13, 36, 28, 14, 13, 5, 26, }, + { 13, 5, 4, 21, 14, 4, 6, 14, 21, 11, 14, 7, 14, 5, 11, 21, 30, 22, 13, 42, }, + { 8, 5, 4, 5, 4, 4, 5, 4, 1, 0, 4, 1, 0, 0, 0, 0, 1, 0, 0, 0, }, }; static const uint8_t INIT_LAST_Y[4][23] = { - { 5, 5, 5, 13, 6, 12, 14, 6, 12, 5, 14, 7, 5, 4, 13, 13, 7, 13, 12, 41, 11, 5, 19,}, - { 5, 5, 12, 6, 6, 19, 6, 14, 5, 12, 14, 7, 13, 5, 36, 21, 7, 13, 5, 42, 11, 4, 18,}, - { 13, 5, 4, 6, 6, 11, 14, 14, 5, 11, 14, 22, 14, 12, 3, 21, 37, 52, 28, 34, 12, 4, 3,}, - { 8, 5, 8, 5, 5, 4, 5, 5, 4, 0, 5, 5, 1, 0, 0, 1, 4, 0, 0, 0, 6, 2, 2,}, + { 5, 5, 20, 13, 13, 19, 21, 6, 12, 12, 14, 14, 5, 4, 12, 13, 7, 13, 12, 41, }, + { 5, 5, 12, 6, 6, 4, 6, 14, 5, 12, 14, 7, 13, 5, 13, 21, 14, 20, 12, 34, }, + { 13, 5, 4, 6, 13, 11, 14, 6, 5, 3, 14, 22, 6, 4, 3, 6, 22, 29, 20, 34, }, + { 8, 5, 8, 5, 5, 4, 5, 5, 4, 0, 5, 4, 1, 0, 0, 1, 4, 0, 0, 0, }, }; static const uint8_t INIT_MVP_IDX[4][1] = { @@ -266,9 +266,9 @@ static const uint8_t INIT_SAO_MERGE_FLAG[4] = { 2, 60, 60, 0 }; static const uint8_t INIT_SAO_TYPE_IDX[4] = { 2, 5, 13, 4 }; static const uint8_t INIT_JOINT_CB_CR_FLAG[4][3] = { - { 50, 51, 45, }, - { 27, 44, 45, }, - { 35, 29, 43, }, + { 42, 43, 52, }, + { 27, 36, 45, }, + { 12, 21, 35, }, { 1, 1, 0, }, }; @@ -391,7 +391,6 @@ void kvz_init_contexts(encoder_state_t *state, int8_t QP, int8_t slice) kvz_ctx_init(&cabac->ctx.cu_mvd_model[i], QP, INIT_MVD[slice][i], INIT_MVD[3][i]); kvz_ctx_init(&cabac->ctx.cu_ref_pic_model[i], QP, INIT_REF_PIC[slice][i], INIT_REF_PIC[3][i]); kvz_ctx_init(&cabac->ctx.luma_planar_model[i], QP, INIT_INTRA_LUMA_PLANAR_MODE[slice][i], INIT_INTRA_LUMA_PLANAR_MODE[3][i]); - kvz_ctx_init(&cabac->ctx.bdpcm_mode[i], QP, BDPCM_MODE_INIT[slice][i], BDPCM_MODE_INIT[3][i]); kvz_ctx_init(&cabac->ctx.cu_qp_delta_abs[i], QP, INIT_CU_QP_DELTA_ABS[slice][i], INIT_CU_QP_DELTA_ABS[3][i]); } @@ -404,7 +403,7 @@ void kvz_init_contexts(encoder_state_t *state, int8_t QP, int8_t slice) for (i = 0; i < 4; i++) { kvz_ctx_init(&cabac->ctx.part_size_model[i], QP, INIT_PART_SIZE[slice][i], INIT_PART_SIZE[3][i]); - + kvz_ctx_init(&cabac->ctx.bdpcm_mode[i], QP, BDPCM_MODE_INIT[slice][i], BDPCM_MODE_INIT[3][i]); kvz_ctx_init(&cabac->ctx.qt_cbf_model_luma[i], QP, INIT_QT_CBF[slice][i], INIT_QT_CBF[3][i]); }