[x265] cleanup useless getMvPred*(): always zero mv
Satoshi Nakagawa
nakagawa424 at oki.com
Sun Feb 23 06:08:59 CET 2014
always zero mv, but numCandidates change affects search range of UMH
case. workaround here.
# HG changeset patch
# User Satoshi Nakagawa <nakagawa424 at oki.com>
# 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);
More information about the x265-devel
mailing list