[x265] HM: context table

Steve Borho steve at borho.org
Sat Jan 25 21:18:08 CET 2014


On Jan 24, 2014, at 10:48 PM, Satoshi Nakagawa <nakagawa424 at oki.com> wrote:

> # HG changeset patch
> # User Satoshi Nakagawa <nakagawa424 at oki.com>
> # Date 1390624003 -32400
> #      Sat Jan 25 13:26:43 2014 +0900
> # Node ID c59cbc166bede46c227ca47a9d7207d84d117544
> # Parent  237bf66674056639581ef2aa3466ea2fc5523ceb
> HM: context table

Hi Satoshi,

Can you provide more context for what this patch does?  Is this an update from the HM repo?

> 
> diff -r 237bf6667405 -r c59cbc166bed source/Lib/TLibCommon/ContextTables.h
> --- a/source/Lib/TLibCommon/ContextTables.h	Fri Jan 24 14:43:31 2014 -0600
> +++ b/source/Lib/TLibCommon/ContextTables.h	Sat Jan 25 13:26:43 2014 +0900
> @@ -56,8 +56,7 @@
> #define NUM_MERGE_FLAG_EXT_CTX        1       ///< number of context models for merge flag of merge extended
> #define NUM_MERGE_IDX_EXT_CTX         1       ///< number of context models for merge index of merge extended
> 
> -#define NUM_PART_SIZE_CTX             3       ///< number of context models for partition size
> -#define NUM_CU_AMP_CTX                1       ///< number of context models for partition size (AMP)
> +#define NUM_PART_SIZE_CTX             4       ///< number of context models for partition size
> #define NUM_PRED_MODE_CTX             1       ///< number of context models for prediction mode
> 
> #define NUM_ADI_CTX                   1       ///< number of context models for intra prediction
> @@ -87,7 +86,7 @@
> #define NUM_ABS_FLAG_CTX_LUMA          4      ///< number of context models for greater than 2 flag of luma
> #define NUM_ABS_FLAG_CTX_CHROMA        2      ///< number of context models for greater than 2 flag of chroma
> 
> -#define NUM_MVP_IDX_CTX               2       ///< number of context models for MVP index
> +#define NUM_MVP_IDX_CTX               1       ///< number of context models for MVP index
> 
> #define NUM_SAO_MERGE_FLAG_CTX        1       ///< number of context models for SAO merge flags
> #define NUM_SAO_TYPE_IDX_CTX          1       ///< number of context models for SAO type index
> @@ -119,8 +118,7 @@
> #define OFF_ONE_FLAG_CTX                    (OFF_CTX_LAST_FLAG_Y        + 2 * NUM_CTX_LAST_FLAG_XY)
> #define OFF_ABS_FLAG_CTX                    (OFF_ONE_FLAG_CTX           +     NUM_ONE_FLAG_CTX)
> #define OFF_MVP_IDX_CTX                     (OFF_ABS_FLAG_CTX           +     NUM_ABS_FLAG_CTX)
> -#define OFF_CU_AMP_CTX                      (OFF_MVP_IDX_CTX            +     NUM_MVP_IDX_CTX)
> -#define OFF_SAO_MERGE_FLAG_CTX              (OFF_CU_AMP_CTX             +     NUM_CU_AMP_CTX)
> +#define OFF_SAO_MERGE_FLAG_CTX              (OFF_MVP_IDX_CTX            +     NUM_MVP_IDX_CTX)
> #define OFF_SAO_TYPE_IDX_CTX                (OFF_SAO_MERGE_FLAG_CTX     +     NUM_SAO_MERGE_FLAG_CTX)
> #define OFF_TRANSFORMSKIP_FLAG_CTX          (OFF_SAO_TYPE_IDX_CTX       +     NUM_SAO_TYPE_IDX_CTX)
> #define OFF_CU_TRANSQUANT_BYPASS_FLAG_CTX   (OFF_TRANSFORMSKIP_FLAG_CTX + 2 * NUM_TRANSFORMSKIP_FLAG_CTX)
> @@ -203,17 +201,9 @@
> static const uint8_t
>     INIT_PART_SIZE[3][NUM_PART_SIZE_CTX] =
> {
> -    { 154,  139,  CNU, },
> -    { 154,  139,  CNU, },
> -    { 184,  CNU,  CNU, },
> -};
> -
> -static const uint8_t
> -    INIT_CU_AMP_POS[3][NUM_CU_AMP_CTX] =
> -{
> -    { 154, },
> -    { 154, },
> -    { CNU, },
> +    { 154,  139,  154, 154 },
> +    { 154,  139,  154, 154 },
> +    { 184,  CNU,  CNU, CNU },
> };
> 
> static const uint8_t
> @@ -275,9 +265,9 @@
> static const uint8_t
>     INIT_QT_CBF[3][2 * NUM_QT_CBF_CTX] =
> {
> -    { 153,  111,  CNU,  CNU,  149,   92,  167,  CNU, },
> -    { 153,  111,  CNU,  CNU,  149,  107,  167,  CNU, },
> -    { 111,  141,  CNU,  CNU,   94,  138,  182,  CNU, },
> +    { 153,  111,  CNU,  CNU,  149,   92,  167,  154, },
> +    { 153,  111,  CNU,  CNU,  149,  107,  167,  154, },
> +    { 111,  141,  CNU,  CNU,   94,  138,  182,  154, },
> };
> 
> static const uint8_t
> @@ -337,9 +327,9 @@
> static const uint8_t
>     INIT_MVP_IDX[3][NUM_MVP_IDX_CTX] =
> {
> -    { 168,  CNU, },
> -    { 168,  CNU, },
> -    { CNU,  CNU, },
> +    { 168 },
> +    { 168 },
> +    { CNU },
> };
> 
> static const uint8_t
> diff -r 237bf6667405 -r c59cbc166bed source/Lib/TLibEncoder/TEncSbac.cpp
> --- a/source/Lib/TLibEncoder/TEncSbac.cpp	Fri Jan 24 14:43:31 2014 -0600
> +++ b/source/Lib/TLibEncoder/TEncSbac.cpp	Sat Jan 25 13:26:43 2014 +0900
> @@ -234,7 +234,6 @@
>     initBuffer(&m_contextModels[OFF_ONE_FLAG_CTX], sliceType, qp, (UChar*)INIT_ONE_FLAG, NUM_ONE_FLAG_CTX);
>     initBuffer(&m_contextModels[OFF_ABS_FLAG_CTX], sliceType, qp, (UChar*)INIT_ABS_FLAG, NUM_ABS_FLAG_CTX);
>     initBuffer(&m_contextModels[OFF_MVP_IDX_CTX], sliceType, qp, (UChar*)INIT_MVP_IDX, NUM_MVP_IDX_CTX);
> -    initBuffer(&m_contextModels[OFF_CU_AMP_CTX], sliceType, qp, (UChar*)INIT_CU_AMP_POS, NUM_CU_AMP_CTX);
>     initBuffer(&m_contextModels[OFF_SAO_MERGE_FLAG_CTX], sliceType, qp, (UChar*)INIT_SAO_MERGE_FLAG, NUM_SAO_MERGE_FLAG_CTX);
>     initBuffer(&m_contextModels[OFF_SAO_TYPE_IDX_CTX], sliceType, qp, (UChar*)INIT_SAO_TYPE_IDX, NUM_SAO_TYPE_IDX_CTX);
>     initBuffer(&m_contextModels[OFF_TRANSFORMSKIP_FLAG_CTX], sliceType, qp, (UChar*)INIT_TRANSFORMSKIP_FLAG, 2 * NUM_TRANSFORMSKIP_FLAG_CTX);
> @@ -286,7 +285,6 @@
>             curCost += calcCost(&m_contextModels[OFF_ONE_FLAG_CTX], curSliceType, qp, (UChar*)INIT_ONE_FLAG, NUM_ONE_FLAG_CTX);
>             curCost += calcCost(&m_contextModels[OFF_ABS_FLAG_CTX], curSliceType, qp, (UChar*)INIT_ABS_FLAG, NUM_ABS_FLAG_CTX);
>             curCost += calcCost(&m_contextModels[OFF_MVP_IDX_CTX], curSliceType, qp, (UChar*)INIT_MVP_IDX, NUM_MVP_IDX_CTX);
> -            curCost += calcCost(&m_contextModels[OFF_CU_AMP_CTX], curSliceType, qp, (UChar*)INIT_CU_AMP_POS, NUM_CU_AMP_CTX);
>             curCost += calcCost(&m_contextModels[OFF_SAO_MERGE_FLAG_CTX], curSliceType, qp, (UChar*)INIT_SAO_MERGE_FLAG, NUM_SAO_MERGE_FLAG_CTX);
>             curCost += calcCost(&m_contextModels[OFF_SAO_TYPE_IDX_CTX], curSliceType, qp, (UChar*)INIT_SAO_TYPE_IDX, NUM_SAO_TYPE_IDX_CTX);
>             curCost += calcCost(&m_contextModels[OFF_TRANSFORMSKIP_FLAG_CTX], curSliceType, qp, (UChar*)INIT_TRANSFORMSKIP_FLAG, 2 * NUM_TRANSFORMSKIP_FLAG_CTX);
> @@ -1523,7 +1521,7 @@
>         m_binIf->encodeBin(1, m_contextModels[OFF_PART_SIZE_CTX + 1]);
>         if (cu->getSlice()->getSPS()->getAMPAcc(depth))
>         {
> -            m_binIf->encodeBin((partSize == SIZE_2NxN) ? 1 : 0, m_contextModels[OFF_CU_AMP_CTX]);
> +            m_binIf->encodeBin((partSize == SIZE_2NxN) ? 1 : 0, m_contextModels[OFF_PART_SIZE_CTX + 3]);
>             if (partSize != SIZE_2NxN)
>             {
>                 m_binIf->encodeBinEP((partSize == SIZE_2NxnU ? 0 : 1));
> @@ -1543,7 +1541,7 @@
>         }
>         if (cu->getSlice()->getSPS()->getAMPAcc(depth))
>         {
> -            m_binIf->encodeBin((partSize == SIZE_Nx2N) ? 1 : 0, m_contextModels[OFF_CU_AMP_CTX]);
> +            m_binIf->encodeBin((partSize == SIZE_Nx2N) ? 1 : 0, m_contextModels[OFF_PART_SIZE_CTX + 3]);
>             if (partSize != SIZE_Nx2N)
>             {
>                 m_binIf->encodeBinEP((partSize == SIZE_nLx2N ? 0 : 1));
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel



More information about the x265-devel mailing list