id summary reporter owner description type status priority milestone component version resolution keywords cc 116 Unnecessary testing of MVs fbossen "As reported by Woo-Jin: After looking at the code, we found that the code was designed to check other motion vector candidates inside the ME function using m_cMvFieldA, m_cMvFieldB and m_cMvFieldC to enlarge the possibility to find the best MV, which came from the JSVM code. However, in the current HM code, m_cMvFieldA, m_cMvFieldB and m_cMvFieldC were not initialized at all, which results in setting all variables to be equal to zero motion vector. Here is the related code segment you indicated: In TEncSearch::xTZSearch: // test whether one of PRED_A, PRED_B, PRED_C MV is better start point than Median predictor if ( bTestOtherPredictedMV ) { for ( UInt index = 0; index < 3; index++ ) { TComMv cMv = m_acMvPredictors[index]; pcCU->clipMv( cMv ); cMv >>= 2; xTZSearchHelp( pcPatternKey, cStruct, cMv.getHor(), cMv.getVer(), 0, 0 ); } } In the above code, m_acMvPredictors were initialized by m_cMvFieldA, m_cMvFieldB and m_cMvFieldC, however, those variables were not initialized thus they are equal to the zero vector. Since the zero-vector testing is done again just after the above code segment, I think that the above code is not needed. (Or it can be initialized correctly to use the actual motion vector candidates used in the AMVP, but the difference seems negligible from quick testing) I prefer simply to delete the above code or set bTestOtherPredictedMV to be zero as: From ""const Bool bTestOtherPredictedMV = 1"" to ""const Bool bTestOtherPredictedMV = 0"" The above change should reduce the encoding time as you indicated. " enhancement closed minor HM fixed fbossen ksuehring davidf jct-vc@…