psy-rd is enabled only in full-rdo decisions (rdLevel >= 5). Your patch calculates intra-psy rd cost for rd=4 and lower, which is where xEncodeIntrainInter is called.
On Thu, May 22, 2014 at 3:31 PM, <sumala...@multicorewareinc.com> wrote: > # HG changeset patch > # User Sumalatha Polureddy<sumala...@multicorewareinc.com> > # Date 1400752845 -19800 > # Node ID fc400f71de9dcbaeda5c0669edabd27e288cdf2c > # Parent f39484bb3eecc8cfca0448c63f16fe8dacc54d7f > psyrd: use psyrdcost for intra for rdLevels > 5 > > diff -r f39484bb3eec -r fc400f71de9d source/encoder/compress.cpp > --- a/source/encoder/compress.cpp Tue May 20 22:02:00 2014 -0500 > +++ b/source/encoder/compress.cpp Thu May 22 15:30:45 2014 +0530 > @@ -70,7 +70,18 @@ > m_rdGoOnSbacCoder->store(m_rdSbacCoders[depth][CI_TEMP_BEST]); > > cu->m_totalBits = m_entropyCoder->getNumberOfWrittenBits(); > - cu->m_totalCost = m_rdCost->calcRdCost(cu->m_totalDistortion, > cu->m_totalBits); > + if (m_rdCost->psyRdEnabled()) > + { > + int part = g_convertToBit[cu->getCUSize(0)]; > + uint32_t psyRdCost = m_rdCost->psyCost(part, > m_origYuv[depth]->getLumaAddr(), m_origYuv[depth]->getStride(), > + m_tmpRecoYuv[depth]->getLumaAddr(), > m_tmpRecoYuv[depth]->getStride()); > + cu->m_totalCost = m_rdCost->calcPsyRdCost(cu->m_totalDistortion, > cu->m_totalBits, psyRdCost); > + > + } > + else > + { > + cu->m_totalCost = m_rdCost->calcRdCost(cu->m_totalDistortion, > cu->m_totalBits); > + } > } > > void TEncCu::xComputeCostIntraInInter(TComDataCU* cu, PartSize partSize) > _______________________________________________ > x265-devel mailing list > x265-devel@videolan.org > https://mailman.videolan.org/listinfo/x265-devel >
_______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel