[x265] [PATCH] analysis: share the depth, best modes and partitions based on cuAddr - bug fix

Steve Borho steve at borho.org
Mon Oct 20 22:25:07 CEST 2014


On 10/20, gopu at multicorewareinc.com wrote:
> # HG changeset patch
> # User Gopu Govindaswamy <gopu at multicorewareinc.com>
> # Date 1413791603 -19800
> #      Mon Oct 20 13:23:23 2014 +0530
> # Node ID d04a014dffcc84caa22fbd3d6062b4b94790dcaa
> # Parent  c15bb6a0d01fd16c663b64787b6432d7d465d4cb
> analysis: share the depth, best modes and partitions based on cuAddr - bug fix
> 
> diff -r c15bb6a0d01f -r d04a014dffcc source/encoder/analysis.cpp
> --- a/source/encoder/analysis.cpp	Mon Oct 20 00:20:13 2014 -0500
> +++ b/source/encoder/analysis.cpp	Mon Oct 20 13:23:23 2014 +0530
> @@ -188,20 +188,24 @@
>  
>      if (shared)
>      {
> -        if (mightNotSplit && depth == shared->depth[zOrder] && zOrder == cuData.encodeIdx)
> +        uint8_t* sharedDepth = &shared->depth[parentCTU.m_cuAddr * parentCTU.m_numPartitions];
> +        char* sharedPartSizes = &shared->partSizes[parentCTU.m_cuAddr * parentCTU.m_numPartitions];
> +        uint8_t* sharedModes = &shared->modes[parentCTU.m_cuAddr * parentCTU.m_numPartitions];
> +
> +        if (mightNotSplit && depth == sharedDepth[zOrder] && zOrder == cuData.encodeIdx)
>          {
>              m_quant.setQPforQuant(parentCTU);
>  
> -            PartSize size = (PartSize)shared->partSizes[zOrder];
> +            PartSize size = (PartSize)sharedPartSizes[zOrder];
>              Mode& mode = size == SIZE_2Nx2N ? md.pred[PRED_INTRA] : md.pred[PRED_INTRA_NxN];
>              mode.cu.initSubCU(parentCTU, cuData);
> -            checkIntra(mode, cuData, size, shared->modes);
> +            checkIntra(mode, cuData, size, sharedModes);
>  
>              if (mightSplit)
>                  addSplitFlagCost(*md.bestMode, cuData.depth);
>  
>              // increment zOrder offset to point to next best depth in sharedDepth buffer
> -            zOrder += g_depthInc[g_maxCUDepth - 1][depth];
> +            zOrder += g_depthInc[g_maxCUDepth - 1][sharedDepth[zOrder]];

Does the similar zOrder increment in the split loop (for non-present
CUs) also need this fix?

-- 
Steve Borho


More information about the x265-devel mailing list