[x265] [PATCH] search: remove redundant loacal variables in encodeResAndCalcRdSkipCU
Steve Borho
steve at borho.org
Sat Sep 20 15:20:19 CEST 2014
On 09/18, gopu at multicorewareinc.com wrote:
> # HG changeset patch
> # User Gopu Govindaswamy <gopu at multicorewareinc.com>
> # Date 1411032660 -19800
> # Thu Sep 18 15:01:00 2014 +0530
> # Node ID 9af870aa267cf5d6ae1ed2d4b413a680d289721b
> # Parent c2d80cbd47dc7219aee70a403b8337330bc1b798
> search: remove redundant loacal variables in encodeResAndCalcRdSkipCU
Queued, see below
> diff -r c2d80cbd47dc -r 9af870aa267c source/encoder/search.cpp
> --- a/source/encoder/search.cpp Thu Sep 18 12:57:29 2014 +0530
> +++ b/source/encoder/search.cpp Thu Sep 18 15:01:00 2014 +0530
> @@ -2073,8 +2073,7 @@
> {
> X265_CHECK(!cu->isIntra(0), "intra CU not expected\n");
>
> - uint32_t log2CUSize = cu->getLog2CUSize(0);
> - uint32_t cuSize = 1 << log2CUSize;
> + uint32_t cuSize = 1 << cu->getLog2CUSize(0);
> uint32_t depth = cu->getDepth(0);
>
> int hChromaShift = CHROMA_H_SHIFT(m_csp);
> @@ -2088,12 +2087,12 @@
>
> outReconYuv->copyFromYuv(predYuv);
> // Luma
> - int part = partitionFromLog2Size(log2CUSize);
> - uint32_t distortion = primitives.sse_pp[part](fencYuv->getLumaAddr(), fencYuv->getStride(), outReconYuv->getLumaAddr(), outReconYuv->getStride());
> + int part = partitionFromLog2Size(cu->getLog2CUSize(0));
> + cu->m_totalDistortion = primitives.sse_pp[part](fencYuv->getLumaAddr(), fencYuv->getStride(), outReconYuv->getLumaAddr(), outReconYuv->getStride());
> // Chroma
> part = partitionFromSizes(cuSize >> hChromaShift, cuSize >> vChromaShift);
> - distortion += m_rdCost.scaleChromaDistCb(primitives.sse_pp[part](fencYuv->getCbAddr(), fencYuv->getCStride(), outReconYuv->getCbAddr(), outReconYuv->getCStride()));
> - distortion += m_rdCost.scaleChromaDistCr(primitives.sse_pp[part](fencYuv->getCrAddr(), fencYuv->getCStride(), outReconYuv->getCrAddr(), outReconYuv->getCStride()));
> + cu->m_totalDistortion += m_rdCost.scaleChromaDistCb(primitives.sse_pp[part](fencYuv->getCbAddr(), fencYuv->getCStride(), outReconYuv->getCbAddr(), outReconYuv->getCStride()));
> + cu->m_totalDistortion += m_rdCost.scaleChromaDistCr(primitives.sse_pp[part](fencYuv->getCrAddr(), fencYuv->getCStride(), outReconYuv->getCrAddr(), outReconYuv->getCStride()));
>
> m_entropyCoder->load(m_rdEntropyCoders[depth][CI_CURR_BEST]);
> m_entropyCoder->resetBits();
> @@ -2102,14 +2101,13 @@
> m_entropyCoder->codeSkipFlag(cu, 0);
> m_entropyCoder->codeMergeIndex(cu, 0);
>
> - uint32_t bits = m_entropyCoder->getNumberOfWrittenBits();
> - cu->m_mvBits = bits;
> + cu->m_mvBits = m_entropyCoder->getNumberOfWrittenBits();
> cu->m_coeffBits = 0;
> - cu->m_totalBits = bits;
> - cu->m_totalDistortion = distortion;
> + cu->m_totalBits = m_entropyCoder->getNumberOfWrittenBits();
> +
this could have been further optimized as:
cu->m_mvBits = cu->m_totalBits = m_entropyCoder->getNumberOfWrittenBits();
> if (m_rdCost.m_psyRd)
> {
> - int size = log2CUSize - 2;
> + int size = cu->getLog2CUSize(0) - 2;
> cu->m_psyEnergy = m_rdCost.psyCost(size, fencYuv->getLumaAddr(), fencYuv->getStride(),
> outReconYuv->getLumaAddr(), outReconYuv->getStride());
> cu->m_totalPsyCost = m_rdCost.calcPsyRdCost(cu->m_totalDistortion, cu->m_totalBits, cu->m_psyEnergy);
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
--
Steve Borho
More information about the x265-devel
mailing list