[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