always zero mv, but numCandidates change affects search range of UMH case. workaround here.
# HG changeset patch # User Satoshi Nakagawa <[email protected]> # Date 1393131692 -32400 # Sun Feb 23 14:01:32 2014 +0900 # Node ID bfa9c0fcc2e3952e1bdd101386485206a8b62c26 # Parent 734f106295df911edb41b5c54e795decdcdb4f04 cleanup useless getMvPred*(): always zero mv diff -r 734f106295df -r bfa9c0fcc2e3 source/Lib/TLibCommon/TComDataCU.h --- a/source/Lib/TLibCommon/TComDataCU.h Sat Feb 22 15:59:39 2014 -0600 +++ b/source/Lib/TLibCommon/TComDataCU.h Sun Feb 23 14:01:32 2014 +0900 @@ -135,9 +135,6 @@ TComDataCU* m_cuAbove; ///< pointer of above CU TComDataCU* m_cuLeft; ///< pointer of left CU TComDataCU* m_cuColocated[2]; ///< pointer of temporally colocated CU's for both directions - TComMvField m_mvFieldA; ///< motion vector of position A - TComMvField m_mvFieldB; ///< motion vector of position B - TComMvField m_mvFieldC; ///< motion vector of position C // ------------------------------------------------------------------------------------------------------------------- // coding tool information @@ -388,12 +385,6 @@ void clipMv(MV& outMV); - void getMvPredLeft(MV& mvPred) { mvPred = m_mvFieldA.mv; } - - void getMvPredAbove(MV& mvPred) { mvPred = m_mvFieldB.mv; } - - void getMvPredAboveRight(MV& mvPred) { mvPred = m_mvFieldC.mv; } - // ------------------------------------------------------------------------------------------------------------------- // utility functions for neighboring information // ------------------------------------------------------------------------------------------------------------------- diff -r 734f106295df -r bfa9c0fcc2e3 source/Lib/TLibEncoder/TEncSearch.cpp --- a/source/Lib/TLibEncoder/TEncSearch.cpp Sat Feb 22 15:59:39 2014 -0600 +++ b/source/Lib/TLibEncoder/TEncSearch.cpp Sun Feb 23 14:01:32 2014 +0900 @@ -2598,10 +2598,6 @@ Pel* pu = fenc->getLumaAddr(cu->getAddr(), cu->getZorderIdxInCU() + partAddr); m_me.setSourcePU(pu - fenc->getLumaAddr(), roiWidth, roiHeight); - cu->getMvPredLeft(m_mvPredictors[0]); - cu->getMvPredAbove(m_mvPredictors[1]); - cu->getMvPredAboveRight(m_mvPredictors[2]); - bool bTestNormalMC = true; if (bUseMRG && cu->getWidth(0) > 8 && numPart == 2) @@ -2632,8 +2628,9 @@ MV mvmin, mvmax; xSetSearchRange(cu, mvp, merange, mvmin, mvmax); + int numCandidates = m_cfg->param.searchMethod == X265_UMH_SEARCH ? 3 : 0; // TODO: all zero mv int satdCost = m_me.motionEstimate(m_mref[list][idx], - mvmin, mvmax, mvp, 3, m_mvPredictors, merange, outmv); + mvmin, mvmax, mvp, numCandidates, m_mvPredictors, merange, outmv); /* Get total cost of partition, but only include MV bit cost once */ bitsTemp += m_me.bitcost(outmv); _______________________________________________ x265-devel mailing list [email protected] https://mailman.videolan.org/listinfo/x265-devel
