On Tue, Oct 29, 2013 at 1:10 AM, <[email protected]> wrote:
> # HG changeset patch > # User Deepthi Devaki <[email protected]> > # Date 1383026581 -19800 > # Node ID 8c38f0da2ae93bf19e780bf96be95bf201ed8f94 > # Parent 8846f5cf6d8d1b06496055a1bc756ed4dd3fa1c5 > no-rdo: add no-residue candidate in merge2Nx2N > Queued, but I have some comments Our commit messages need to include a lot more detail about why this change is a good idea. Why does it help? > diff -r 8846f5cf6d8d -r 8c38f0da2ae9 source/encoder/compress.cpp > --- a/source/encoder/compress.cpp Tue Oct 29 01:05:47 2013 -0500 > +++ b/source/encoder/compress.cpp Tue Oct 29 11:33:01 2013 +0530 > @@ -245,6 +245,7 @@ > > > outTempCU->setCUTransquantBypassSubParts(m_cfg->getCUTransquantBypassFlagValue(), > 0, depth); > outTempCU->getInterMergeCandidates(0, 0, mvFieldNeighbours, > interDirNeighbours, numValidMergeCand); > > + int bestMergeCand = 0; > for (int mergeCand = 0; mergeCand < numValidMergeCand; ++mergeCand) > { > // set MC parameters, interprets depth relative to LCU level > @@ -268,6 +269,7 @@ > > if (outTempCU->m_totalCost < outBestCU->m_totalCost) > { > + bestMergeCand = mergeCand; > TComDataCU* tmp = outTempCU; > outTempCU = outBestCU; > outBestCU = tmp; > @@ -286,7 +288,44 @@ > { > m_search->motionCompensation(outBestCU, bestPredYuv, > REF_PIC_LIST_X, partIdx, false, true); > } > - m_search->encodeResAndCalcRdInterCU(outBestCU, m_origYuv[depth], > bestPredYuv, m_tmpResiYuv[depth], m_bestResiYuv[depth], yuvReconBest, > false); > + > + TComDataCU* tmp; > + TComYuv *yuv; > + > + outTempCU->setPredModeSubParts(MODE_INTER, 0, depth); > + > > outTempCU->setCUTransquantBypassSubParts(m_cfg->getCUTransquantBypassFlagValue(), > 0, depth); > + outTempCU->setPartSizeSubParts(SIZE_2Nx2N, 0, depth); > + outTempCU->setMergeFlagSubParts(true, 0, 0, depth); > + outTempCU->setMergeIndexSubParts(bestMergeCand, 0, 0, depth); > + outTempCU->setInterDirSubParts(interDirNeighbours[bestMergeCand], 0, > 0, depth); > + > outTempCU->getCUMvField(REF_PIC_LIST_0)->setAllMvField(mvFieldNeighbours[0 > + 2 * bestMergeCand], SIZE_2Nx2N, 0, 0); > + > outTempCU->getCUMvField(REF_PIC_LIST_1)->setAllMvField(mvFieldNeighbours[1 > + 2 * bestMergeCand], SIZE_2Nx2N, 0, 0); > + > + //No-residue mode > + m_search->encodeResAndCalcRdInterCU(outTempCU, m_origYuv[depth], > bestPredYuv, m_tmpResiYuv[depth], m_bestResiYuv[depth], > m_tmpRecoYuv[depth], true); > + > + tmp = outTempCU; > + outTempCU = outBestCU; > + outBestCU = tmp; > This file desperately needs a swap macro/template function. > + > + yuv = yuvReconBest; > + yuvReconBest = m_tmpRecoYuv[depth]; > + m_tmpRecoYuv[depth] = yuv; > + > + //Encode with residue > nit: space after forward slashes > + m_search->encodeResAndCalcRdInterCU(outTempCU, m_origYuv[depth], > bestPredYuv, m_tmpResiYuv[depth], m_bestResiYuv[depth], > m_tmpRecoYuv[depth], false); > + > + if (outTempCU->m_totalCost < outBestCU->m_totalCost) //Choose best > from no-residue mode and residue mode > + { > + tmp = outTempCU; > + outTempCU = outBestCU; > + outBestCU = tmp; > + > + yuv = yuvReconBest; > + yuvReconBest = m_tmpRecoYuv[depth]; > + m_tmpRecoYuv[depth] = yuv; > + } > + > if (m_cfg->param.bEnableEarlySkip) > { > if (outBestCU->getQtRootCbf(0) == 0) > _______________________________________________ > 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
