ok will do it
On Thu, Jun 12, 2014 at 11:02 AM, Steve Borho <[email protected]> wrote: > On Wed, Jun 11, 2014 at 6:13 AM, <[email protected]> wrote: > > # HG changeset patch > > # User Sumalatha Polureddy<[email protected]> > > # Date 1402483864 -19800 > > # Node ID a407bf9959c957d8a3c355594a060abab8a182fc > > # Parent dbe573edb3459f57ab058318e4227f6b19045c2d > > psyrd: bug fix in use of psyrdcost for PU/TU decision in inter > > please fold these two patches together and re-submit > > > diff -r dbe573edb345 -r a407bf9959c9 > source/Lib/TLibEncoder/TEncSearch.cpp > > --- a/source/Lib/TLibEncoder/TEncSearch.cpp Tue Jun 10 17:47:15 2014 > +0530 > > +++ b/source/Lib/TLibEncoder/TEncSearch.cpp Wed Jun 11 16:21:04 2014 > +0530 > > @@ -2777,7 +2777,18 @@ > > m_entropyCoder->resetBits(); > > m_entropyCoder->encodeQtRootCbfZero(cu); > > uint32_t zeroResiBits = > m_entropyCoder->getNumberOfWrittenBits(); > > - uint64_t zeroCost = m_rdCost->calcRdCost(zeroDistortion, > zeroResiBits); > > + uint64_t zeroCost = 0; > > + uint32_t zeroPsyEnergyY = 0; > > + if (m_rdCost->psyRdEnabled()) > > + { > > + int size = g_convertToBit[cuSize]; > > + zeroPsyEnergyY = m_rdCost->psyCost(size, > fencYuv->getLumaAddr(), fencYuv->getStride(), > > + (pixel*)RDCost::zeroPel, MAX_CU_SIZE); // need to check > whether zero distortion is similar to psyenergy of fenc > > + zeroCost = m_rdCost->calcPsyRdCost(zeroDistortion, > zeroResiBits, zeroPsyEnergyY); > > + } > > + else > > + zeroCost = m_rdCost->calcRdCost(zeroDistortion, > zeroResiBits); > > + > > if (cu->isLosslessCoded(0)) > > { > > zeroCost = cost + 1; > > @@ -2785,6 +2796,7 @@ > > if (zeroCost < cost) > > { > > distortion = zeroDistortion; > > + cu->m_psyEnergy = zeroPsyEnergyY; > > > > const uint32_t qpartnum = cu->getPic()->getNumPartInCU() >> > (depth << 1); > > ::memset(cu->getTransformIdx(), 0, qpartnum * > sizeof(uint8_t)); > > @@ -2807,7 +2819,10 @@ > > > > bits = xSymbolBitsInter(cu); > > > > - cost = m_rdCost->calcRdCost(distortion, bits); > > + if (m_rdCost->psyRdEnabled()) > > + cost = m_rdCost->calcPsyRdCost(distortion, bits, > cu->m_psyEnergy); > > + else > > + cost = m_rdCost->calcRdCost(distortion, bits); > > > > if (cost < bestCost) > > { > > @@ -3258,6 +3273,7 @@ > > > m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, > curResiY, strideResiY, coeffCurY, trSize, scalingListType, false, > lastPos[TEXT_LUMA][0]); //this is for inter mode only > > > > const uint32_t nonZeroDistY = > primitives.sse_ss[partSize](resiYuv->getLumaAddr(absPartIdx), > resiYuv->m_width, curResiY, strideResiY); > > + uint32_t nonZeroPsyEnergyY = 0; > > if (m_rdCost->psyRdEnabled()) > > { > > pixel* pred = predYuv->getLumaAddr(absPartIdx); > > @@ -3267,22 +3283,20 @@ > > uint32_t stride = fencYuv->getStride(); > > //===== reconstruction ===== > > primitives.luma_add_ps[partSize](reconIPred, > reconIPredStride, pred, curResiY, stride, strideResiY); > > + int size = g_convertToBit[trSize]; > > + nonZeroPsyEnergyY = m_rdCost->psyCost(size, > fencYuv->getLumaAddr(absPartIdx), fencYuv->getStride(), > > + > cu->getPic()->getPicYuvRec()->getLumaAddr(cu->getAddr(), zorder), > cu->getPic()->getPicYuvRec()->getStride()); > > } > > if (cu->isLosslessCoded(0)) > > { > > distY = nonZeroDistY; > > + psyEnergyY = nonZeroPsyEnergyY; > > } > > else > > { > > uint64_t singleCostY = 0; > > if (m_rdCost->psyRdEnabled()) > > - { > > - int size = g_convertToBit[trSize]; > > - uint32_t zorder = cu->getZorderIdxInCU() + > absPartIdx; > > - psyEnergyY = m_rdCost->psyCost(size, > fencYuv->getLumaAddr(absPartIdx), fencYuv->getStride(), > > - > cu->getPic()->getPicYuvRec()->getLumaAddr(cu->getAddr(), zorder), > cu->getPic()->getPicYuvRec()->getStride()); > > - singleCostY = m_rdCost->calcPsyRdCost(nonZeroDistY, > singleBitsComp[TEXT_LUMA][0], psyEnergyY); > > - } > > + singleCostY = m_rdCost->calcPsyRdCost(nonZeroDistY, > singleBitsComp[TEXT_LUMA][0], nonZeroPsyEnergyY); > > else > > singleCostY = m_rdCost->calcRdCost(nonZeroDistY, > singleBitsComp[TEXT_LUMA][0]); > > m_entropyCoder->resetBits(); > > @@ -3307,6 +3321,7 @@ > > else > > { > > distY = nonZeroDistY; > > + psyEnergyY = nonZeroPsyEnergyY; > > if (checkTransformSkipY) > > { > > minCost[TEXT_LUMA][0] = singleCostY; > > @@ -3370,6 +3385,7 @@ > > uint32_t dist = > primitives.sse_ss[partSizeC](resiYuv->getCbAddr(absPartIdxC), > resiYuv->m_cwidth, > > > curResiU, strideResiC); > > const uint32_t nonZeroDistU = > m_rdCost->scaleChromaDistCb(dist); > > + uint32_t nonZeroPsyEnergyU = 0; > > if (m_rdCost->psyRdEnabled()) > > { > > pixel* pred = predYuv->getCbAddr(absPartIdxC); > > @@ -3379,21 +3395,21 @@ > > uint32_t stride = fencYuv->getCStride(); > > //===== reconstruction ===== > > primitives.luma_add_ps[partSizeC](reconIPred, > reconIPredStride, pred, curResiU, stride, strideResiC); > > + int size = g_convertToBit[trSizeC]; > > + nonZeroPsyEnergyU = m_rdCost->psyCost(size, > fencYuv->getCbAddr(absPartIdxC), fencYuv->getCStride(), > > + > cu->getPic()->getPicYuvRec()->getCbAddr(cu->getAddr(), zorder), > cu->getPic()->getPicYuvRec()->getCStride()); > > } > > if (cu->isLosslessCoded(0)) > > { > > distU = nonZeroDistU; > > + psyEnergyU = nonZeroPsyEnergyU; > > } > > else > > { > > uint64_t singleCostU = 0; > > if (m_rdCost->psyRdEnabled()) > > { > > - int size = g_convertToBit[trSizeC]; > > - uint32_t zorder = cu->getZorderIdxInCU() + > absPartIdxC; > > - psyEnergyU = m_rdCost->psyCost(size, > fencYuv->getCbAddr(absPartIdxC), fencYuv->getCStride(), > > - > cu->getPic()->getPicYuvRec()->getCbAddr(cu->getAddr(), zorder), > cu->getPic()->getPicYuvRec()->getCStride()); > > - singleCostU = > m_rdCost->calcPsyRdCost(nonZeroDistU, singleBitsComp[TEXT_CHROMA_U][0], > psyEnergyU); > > + singleCostU = > m_rdCost->calcPsyRdCost(nonZeroDistU, singleBitsComp[TEXT_CHROMA_U][0], > nonZeroPsyEnergyU); > > } > > else > > singleCostU = > m_rdCost->calcRdCost(nonZeroDistU, singleBitsComp[TEXT_CHROMA_U][0]); > > @@ -3419,6 +3435,7 @@ > > else > > { > > distU = nonZeroDistU; > > + psyEnergyU = nonZeroPsyEnergyU; > > if (checkTransformSkipUV) > > { > > > minCost[TEXT_CHROMA_U][tuIterator.m_section] = singleCostU; > > @@ -3462,6 +3479,7 @@ > > uint32_t dist = > primitives.sse_ss[partSizeC](resiYuv->getCrAddr(absPartIdxC), > resiYuv->m_cwidth, > > > curResiV, strideResiC); > > const uint32_t nonZeroDistV = > m_rdCost->scaleChromaDistCr(dist); > > + uint32_t nonZeroPsyEnergyV = 0; > > > > if (m_rdCost->psyRdEnabled()) > > { > > @@ -3472,21 +3490,21 @@ > > uint32_t stride = fencYuv->getCStride(); > > //===== reconstruction ===== > > primitives.luma_add_ps[partSizeC](reconIPred, > reconIPredStride, pred, curResiV, stride, strideResiC); > > + int size = g_convertToBit[trSizeC]; > > + nonZeroPsyEnergyV = m_rdCost->psyCost(size, > fencYuv->getCrAddr(absPartIdxC), fencYuv->getCStride(), > > + > cu->getPic()->getPicYuvRec()->getCrAddr(cu->getAddr(), zorder), > cu->getPic()->getPicYuvRec()->getCStride()); > > } > > if (cu->isLosslessCoded(0)) > > { > > distV = nonZeroDistV; > > + psyEnergyV = nonZeroPsyEnergyV; > > } > > else > > { > > uint64_t singleCostV = 0; > > if (m_rdCost->psyRdEnabled()) > > { > > - int size = g_convertToBit[trSizeC]; > > - uint32_t zorder = cu->getZorderIdxInCU() + > absPartIdxC; > > - psyEnergyV = m_rdCost->psyCost(size, > fencYuv->getCrAddr(absPartIdxC), fencYuv->getCStride(), > > - > cu->getPic()->getPicYuvRec()->getCrAddr(cu->getAddr(), zorder), > cu->getPic()->getPicYuvRec()->getCStride()); > > - singleCostV = > m_rdCost->calcPsyRdCost(nonZeroDistV, > singleBitsComp[TEXT_CHROMA_V][tuIterator.m_section], psyEnergyV); > > + singleCostV = > m_rdCost->calcPsyRdCost(nonZeroDistV, > singleBitsComp[TEXT_CHROMA_V][tuIterator.m_section], nonZeroPsyEnergyV); > > } > > else > > singleCostV = > m_rdCost->calcRdCost(nonZeroDistV, > singleBitsComp[TEXT_CHROMA_V][tuIterator.m_section]); > > @@ -3512,6 +3530,7 @@ > > else > > { > > distV = nonZeroDistV; > > + psyEnergyV = nonZeroPsyEnergyV; > > if (checkTransformSkipUV) > > { > > > minCost[TEXT_CHROMA_V][tuIterator.m_section] = singleCostV; > > @@ -3548,6 +3567,7 @@ > > if (checkTransformSkipY) > > { > > uint32_t nonZeroDistY = 0, absSumTransformSkipY; > > + uint32_t nonZeroPsyEnergyY = 0; > > uint64_t singleCostY = MAX_INT64; > > > > coeff_t bestCoeffY[MAX_TS_SIZE * MAX_TS_SIZE]; > > @@ -3599,9 +3619,9 @@ > > //===== reconstruction ===== > > primitives.luma_add_ps[partSize](reconIPred, > reconIPredStride, pred, curResiY, stride, strideResiY); > > int size = g_convertToBit[trSize]; > > - psyEnergyY = m_rdCost->psyCost(size, > fencYuv->getLumaAddr(absPartIdx), fencYuv->getStride(), > > + nonZeroPsyEnergyY = m_rdCost->psyCost(size, > fencYuv->getLumaAddr(absPartIdx), fencYuv->getStride(), > > > cu->getPic()->getPicYuvRec()->getLumaAddr(cu->getAddr(), zorder), > cu->getPic()->getPicYuvRec()->getStride()); > > - singleCostY = m_rdCost->calcPsyRdCost(nonZeroDistY, > skipSingleBitsY, psyEnergyY); > > + singleCostY = m_rdCost->calcPsyRdCost(nonZeroDistY, > skipSingleBitsY, nonZeroPsyEnergyY); > > } > > else > > singleCostY = m_rdCost->calcRdCost(nonZeroDistY, > skipSingleBitsY); > > @@ -3616,7 +3636,7 @@ > > else > > { > > singleDistComp[TEXT_LUMA][0] = nonZeroDistY; > > - singlePsyEnergyComp[TEXT_LUMA][0] = psyEnergyY; > > + singlePsyEnergyComp[TEXT_LUMA][0] = nonZeroPsyEnergyY; > > absSum[TEXT_LUMA][0] = absSumTransformSkipY; > > bestTransformMode[TEXT_LUMA][0] = 1; > > } > > @@ -3627,6 +3647,7 @@ > > if (bCodeChroma && checkTransformSkipUV) > > { > > uint32_t nonZeroDistU = 0, nonZeroDistV = 0, > absSumTransformSkipU, absSumTransformSkipV; > > + uint32_t nonZeroPsyEnergyU = 0, nonZeroPsyEnergyV = 0; > > uint64_t singleCostU = MAX_INT64; > > uint64_t singleCostV = MAX_INT64; > > > > @@ -3704,9 +3725,9 @@ > > //===== reconstruction ===== > > primitives.luma_add_ps[partSizeC](reconIPred, > reconIPredStride, pred, curResiU, stride, strideResiC); > > int size = g_convertToBit[trSizeC]; > > - psyEnergyU = m_rdCost->psyCost(size, > fencYuv->getCbAddr(absPartIdxC), fencYuv->getCStride(), > > + nonZeroPsyEnergyU = m_rdCost->psyCost(size, > fencYuv->getCbAddr(absPartIdxC), fencYuv->getCStride(), > > > cu->getPic()->getPicYuvRec()->getCbAddr(cu->getAddr(), zorder), > cu->getPic()->getPicYuvRec()->getCStride()); > > - singleCostU = > m_rdCost->calcPsyRdCost(nonZeroDistU, > singleBitsComp[TEXT_CHROMA_U][tuIterator.m_section], psyEnergyU); > > + singleCostU = > m_rdCost->calcPsyRdCost(nonZeroDistU, > singleBitsComp[TEXT_CHROMA_U][tuIterator.m_section], nonZeroPsyEnergyU); > > } > > else > > singleCostU = > m_rdCost->calcRdCost(nonZeroDistU, > singleBitsComp[TEXT_CHROMA_U][tuIterator.m_section]); > > @@ -3722,7 +3743,7 @@ > > else > > { > > singleDistComp[TEXT_CHROMA_U][tuIterator.m_section] > = nonZeroDistU; > > - > singlePsyEnergyComp[TEXT_CHROMA_U][tuIterator.m_section] = psyEnergyU; > > + > singlePsyEnergyComp[TEXT_CHROMA_U][tuIterator.m_section] = > nonZeroPsyEnergyU; > > absSum[TEXT_CHROMA_U][tuIterator.m_section] = > absSumTransformSkipU; > > > bestTransformMode[TEXT_CHROMA_U][tuIterator.m_section] = 1; > > } > > @@ -3743,7 +3764,6 @@ > > uint32_t dist = > primitives.sse_ss[partSizeC](resiYuv->getCrAddr(absPartIdxC), > resiYuv->m_cwidth, > > > curResiV, strideResiC); > > nonZeroDistV = m_rdCost->scaleChromaDistCr(dist); > > - singleCostV = m_rdCost->calcRdCost(nonZeroDistV, > singleBitsComp[TEXT_CHROMA_V][tuIterator.m_section]); > > if (m_rdCost->psyRdEnabled()) > > { > > pixel* pred = predYuv->getCrAddr(absPartIdxC); > > @@ -3754,9 +3774,9 @@ > > //===== reconstruction ===== > > primitives.luma_add_ps[partSizeC](reconIPred, > reconIPredStride, pred, curResiV, stride, strideResiC); > > int size = g_convertToBit[trSizeC]; > > - psyEnergyV = m_rdCost->psyCost(size, > fencYuv->getCrAddr(absPartIdxC), fencYuv->getCStride(), > > + nonZeroPsyEnergyV = m_rdCost->psyCost(size, > fencYuv->getCrAddr(absPartIdxC), fencYuv->getCStride(), > > > cu->getPic()->getPicYuvRec()->getCrAddr(cu->getAddr(), zorder), > cu->getPic()->getPicYuvRec()->getCStride()); > > - singleCostV = > m_rdCost->calcPsyRdCost(nonZeroDistV, > singleBitsComp[TEXT_CHROMA_V][tuIterator.m_section], psyEnergyV); > > + singleCostV = > m_rdCost->calcPsyRdCost(nonZeroDistV, > singleBitsComp[TEXT_CHROMA_V][tuIterator.m_section], nonZeroPsyEnergyV); > > } > > else > > singleCostV = > m_rdCost->calcRdCost(nonZeroDistV, > singleBitsComp[TEXT_CHROMA_V][tuIterator.m_section]); > > @@ -3771,7 +3791,7 @@ > > else > > { > > singleDistComp[TEXT_CHROMA_V][tuIterator.m_section] > = nonZeroDistV; > > - > singlePsyEnergyComp[TEXT_CHROMA_V][tuIterator.m_section] = psyEnergyV; > > + > singlePsyEnergyComp[TEXT_CHROMA_V][tuIterator.m_section] = > nonZeroPsyEnergyV; > > absSum[TEXT_CHROMA_V][tuIterator.m_section] = > absSumTransformSkipV; > > > bestTransformMode[TEXT_CHROMA_V][tuIterator.m_section] = 1; > > } > > _______________________________________________ > > x265-devel mailing list > > [email protected] > > https://mailman.videolan.org/listinfo/x265-devel > > > > -- > Steve Borho > _______________________________________________ > x265-devel mailing list > [email protected] > https://mailman.videolan.org/listinfo/x265-devel >
_______________________________________________ x265-devel mailing list [email protected] https://mailman.videolan.org/listinfo/x265-devel
