There is a mistake in the first patch, please apply the latest patch.
Regards, Bhavna Hariharan On Fri, Nov 18, 2016 at 9:49 AM, Bhavna Hariharan < bha...@multicorewareinc.com> wrote: > # HG changeset patch > # User Bhavna Hariharan <bha...@multicorewareinc.com> > # Date 1479380469 -19800 > # Thu Nov 17 16:31:09 2016 +0530 > # Node ID d4425aa677c63b8486dde5bb716f9a191da6bdaa > # Parent 07a4e4d785a69f719922129ca5997b12552bb4ab > limitTU : use neighbouring CUs' TU depth to limit 1st subTU's depth > > diff -r 07a4e4d785a6 -r d4425aa677c6 source/encoder/analysis.cpp > --- a/source/encoder/analysis.cpp Thu Nov 17 12:19:38 2016 +0530 > +++ b/source/encoder/analysis.cpp Thu Nov 17 16:31:09 2016 +0530 > @@ -377,7 +377,7 @@ > checkBestMode(md.pred[PRED_INTRA_NxN], depth); > } > > - if (limitTU == X265_TU_LIMIT_NEIGH && cuGeom.log2CUSize >= 4) > + if ((limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4) > { > CUData* ctu = md.bestMode->cu.m_encData-> > getPicCTU(parentCTU.m_cuAddr); > int8_t maxTUDepth = -1; > @@ -954,7 +954,7 @@ > bool skipRectAmp = false; > bool chooseMerge = false; > > - if (limitTU == X265_TU_LIMIT_NEIGH && cuGeom.log2CUSize >= 4) > + if ((limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4) > m_maxTUDepth = loadTUDepth(cuGeom, parentCTU); > > SplitData splitData[4]; > @@ -1463,7 +1463,7 @@ > if (m_param->rdLevel) > md.bestMode->reconYuv.copyToPicYuv(reconPic, cuAddr, > cuGeom.absPartIdx); > > - if (limitTU == X265_TU_LIMIT_NEIGH && cuGeom.log2CUSize >= 4) > + if ((limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4) > { > if (mightNotSplit) > { > @@ -1498,7 +1498,7 @@ > md.pred[PRED_2Nx2N].rdCost = 0; > } > > - if (limitTU == X265_TU_LIMIT_NEIGH && cuGeom.log2CUSize >= 4) > + if ((limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4) > m_maxTUDepth = loadTUDepth(cuGeom, parentCTU); > > SplitData splitData[4]; > @@ -1827,7 +1827,7 @@ > if (mightSplit) > addSplitFlagCost(*md.bestMode, cuGeom.depth); > } > - if (limitTU == X265_TU_LIMIT_NEIGH && cuGeom.log2CUSize >= 4) > + if ((limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4) > { > if (mightNotSplit) > { > diff -r 07a4e4d785a6 -r d4425aa677c6 source/encoder/search.cpp > --- a/source/encoder/search.cpp Thu Nov 17 12:19:38 2016 +0530 > +++ b/source/encoder/search.cpp Thu Nov 17 16:31:09 2016 +0530 > @@ -2625,7 +2625,7 @@ > > uint32_t tuDepthRange[2]; > cu.getInterTUQtDepthRange(tuDepthRange, 0); > - if (limitTU == X265_TU_LIMIT_NEIGH) > + if (limitTU & X265_TU_LIMIT_NEIGH) > { > int maxLog2CUSize = (int)g_log2Size[m_param->maxCUSize]; > m_maxTUDepth = x265_clip3(maxLog2CUSize - > (int32_t)tuDepthRange[1], maxLog2CUSize - (int32_t)tuDepthRange[0], > m_maxTUDepth); > @@ -2639,7 +2639,14 @@ > memset(&m_cacheTU, 0, sizeof(TUInfoCache)); > > Cost costs; > - estimateResidualQT(interMode, cuGeom, 0, 0, *resiYuv, costs, > tuDepthRange); > + if (limitTU == X265_TU_LIMIT_DFS_NEIGH) > + { > + int32_t tempDepth = m_maxTUDepth; > + estimateResidualQT(interMode, cuGeom, 0, 0, *resiYuv, costs, > tuDepthRange); > + m_maxTUDepth = tempDepth; > + } > + else > + estimateResidualQT(interMode, cuGeom, 0, 0, *resiYuv, costs, > tuDepthRange); > > uint32_t tqBypass = cu.m_tqBypass[0]; > if (!tqBypass) > @@ -2898,10 +2905,11 @@ > uint32_t ycbf = 0, ucbf = 0, vcbf = 0; > for (uint32_t qIdx = 0, qPartIdx = absPartIdx; qIdx < 4; ++qIdx, > qPartIdx += qNumParts) > { > - if (limitTU == X265_TU_LIMIT_DFS && tuDepth == 0 && qIdx == 1) > + if (limitTU & X265_TU_LIMIT_DFS && tuDepth == 0 && qIdx == 1) > { > + m_maxTUDepth = cu.m_tuDepth[0]; > // Fetch maximum TU depth of first sub partition to limit > recursion of others > - for (uint32_t i = 0; i < cuGeom.numPartitions / 4; i++) > + for (uint32_t i = 1; i < cuGeom.numPartitions / 4; i++) > m_maxTUDepth = X265_MAX(m_maxTUDepth, cu.m_tuDepth[i]); > } > estimateResidualQT(mode, cuGeom, qPartIdx, tuDepth + 1, resiYuv, > splitCost, depthRange, splitMore); > @@ -2968,7 +2976,7 @@ > } > } > } > - else if (limitTU == X265_TU_LIMIT_DFS || limitTU == > X265_TU_LIMIT_NEIGH) > + else if (limitTU & X265_TU_LIMIT_DFS_NEIGH) > { > if (bCheckSplit && m_maxTUDepth >= 0) > { > > > > Regards, > > Bhavna Hariharan > > On Thu, Nov 17, 2016 at 5:06 PM, <bha...@multicorewareinc.com> wrote: > >> # HG changeset patch >> # User Bhavna Hariharan <bha...@multicorewareinc.com> >> # Date 1479380469 -19800 >> # Thu Nov 17 16:31:09 2016 +0530 >> # Node ID f5d3a5aedcdf20235ec76dbf9aba516da83e8dd1 >> # Parent 07a4e4d785a69f719922129ca5997b12552bb4ab >> limitTU : use neighbouring CUs' TU depth to limit 1st subTU's depth >> >> diff -r 07a4e4d785a6 -r f5d3a5aedcdf source/encoder/analysis.cpp >> --- a/source/encoder/analysis.cpp Thu Nov 17 12:19:38 2016 +0530 >> +++ b/source/encoder/analysis.cpp Thu Nov 17 16:31:09 2016 +0530 >> @@ -377,7 +377,7 @@ >> checkBestMode(md.pred[PRED_INTRA_NxN], depth); >> } >> >> - if (limitTU == X265_TU_LIMIT_NEIGH && cuGeom.log2CUSize >= 4) >> + if ((limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4) >> { >> CUData* ctu = md.bestMode->cu.m_encData->get >> PicCTU(parentCTU.m_cuAddr); >> int8_t maxTUDepth = -1; >> @@ -954,7 +954,7 @@ >> bool skipRectAmp = false; >> bool chooseMerge = false; >> >> - if (limitTU == X265_TU_LIMIT_NEIGH && cuGeom.log2CUSize >= 4) >> + if ((limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4) >> m_maxTUDepth = loadTUDepth(cuGeom, parentCTU); >> >> SplitData splitData[4]; >> @@ -1463,7 +1463,7 @@ >> if (m_param->rdLevel) >> md.bestMode->reconYuv.copyToPicYuv(reconPic, cuAddr, >> cuGeom.absPartIdx); >> >> - if (limitTU == X265_TU_LIMIT_NEIGH && cuGeom.log2CUSize >= 4) >> + if ((limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4) >> { >> if (mightNotSplit) >> { >> @@ -1498,7 +1498,7 @@ >> md.pred[PRED_2Nx2N].rdCost = 0; >> } >> >> - if (limitTU == X265_TU_LIMIT_NEIGH && cuGeom.log2CUSize >= 4) >> + if ((limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4) >> m_maxTUDepth = loadTUDepth(cuGeom, parentCTU); >> >> SplitData splitData[4]; >> @@ -1827,7 +1827,7 @@ >> if (mightSplit) >> addSplitFlagCost(*md.bestMode, cuGeom.depth); >> } >> - if (limitTU == X265_TU_LIMIT_NEIGH && cuGeom.log2CUSize >= 4) >> + if ((limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4) >> { >> if (mightNotSplit) >> { >> diff -r 07a4e4d785a6 -r f5d3a5aedcdf source/encoder/search.cpp >> --- a/source/encoder/search.cpp Thu Nov 17 12:19:38 2016 +0530 >> +++ b/source/encoder/search.cpp Thu Nov 17 16:31:09 2016 +0530 >> @@ -2625,7 +2625,7 @@ >> >> uint32_t tuDepthRange[2]; >> cu.getInterTUQtDepthRange(tuDepthRange, 0); >> - if (limitTU == X265_TU_LIMIT_NEIGH) >> + if (limitTU & X265_TU_LIMIT_NEIGH) >> { >> int maxLog2CUSize = (int)g_log2Size[m_param->maxCUSize]; >> m_maxTUDepth = x265_clip3(maxLog2CUSize - >> (int32_t)tuDepthRange[1], maxLog2CUSize - (int32_t)tuDepthRange[0], >> m_maxTUDepth); >> @@ -2639,7 +2639,12 @@ >> memset(&m_cacheTU, 0, sizeof(TUInfoCache)); >> >> Cost costs; >> - estimateResidualQT(interMode, cuGeom, 0, 0, *resiYuv, costs, >> tuDepthRange); >> + if (limitTU == X265_TU_LIMIT_DFS_NEIGH) >> + { >> + int32_t tempDepth = m_maxTUDepth; >> + m_maxTUDepth = tempDepth; >> + } >> + estimateResidualQT(interMode, cuGeom, 0, 0, *resiYuv, costs, >> tuDepthRange); >> >> uint32_t tqBypass = cu.m_tqBypass[0]; >> if (!tqBypass) >> @@ -2898,10 +2903,11 @@ >> uint32_t ycbf = 0, ucbf = 0, vcbf = 0; >> for (uint32_t qIdx = 0, qPartIdx = absPartIdx; qIdx < 4; ++qIdx, >> qPartIdx += qNumParts) >> { >> - if (limitTU == X265_TU_LIMIT_DFS && tuDepth == 0 && qIdx == 1) >> + if (limitTU & X265_TU_LIMIT_DFS && tuDepth == 0 && qIdx == 1) >> { >> + m_maxTUDepth = cu.m_tuDepth[0]; >> // Fetch maximum TU depth of first sub partition to limit >> recursion of others >> - for (uint32_t i = 0; i < cuGeom.numPartitions / 4; i++) >> + for (uint32_t i = 1; i < cuGeom.numPartitions / 4; i++) >> m_maxTUDepth = X265_MAX(m_maxTUDepth, cu.m_tuDepth[i]); >> } >> estimateResidualQT(mode, cuGeom, qPartIdx, tuDepth + 1, resiYuv, >> splitCost, depthRange, splitMore); >> @@ -2968,7 +2974,7 @@ >> } >> } >> } >> - else if (limitTU == X265_TU_LIMIT_DFS || limitTU == >> X265_TU_LIMIT_NEIGH) >> + else if (limitTU & X265_TU_LIMIT_DFS_NEIGH) >> { >> if (bCheckSplit && m_maxTUDepth >= 0) >> { >> > >
_______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel