﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
117	AMVP bug in rectangular (2NxN and Nx2N) partition mode	wjhan		"Messages from Minhua:

In the TMuC TComDataCU.cpp, fillMvpCand()    -----  the mvp list is reordered if the partition is 2NxN or Nx2N.
 
Line 3915-

  else if ( ( ((eCUMode == SIZE_2NxN) || (eCUMode == SIZE_2NxnU) || (eCUMode == SIZE_2NxnD)) && uiPartIdx == 0 '''&& m_pcSlice->isEqualRef(eRefPicList, m_cMvFieldB.getRefIdx(), iRefIdx)''' )
    && iAboveMvIdx > 0 )
  {
    cTempMv = pInfo->m_acMvCand[0];
    pInfo->m_acMvCand[0] = pInfo->m_acMvCand[iAboveMvIdx];
    pInfo->m_acMvCand[iAboveMvIdx] = cTempMv;
  }
  else if ( ( ((eCUMode == SIZE_Nx2N) || (eCUMode == SIZE_nLx2N) || (eCUMode == SIZE_nRx2N)) && uiPartIdx == 1 '''&& m_pcSlice->isEqualRef(eRefPicList, m_cMvFieldC.getRefIdx(), iRefIdx)''')
    && iCornerMvIdx > 0 )
  {
    cTempMv = pInfo->m_acMvCand[0];
    pInfo->m_acMvCand[0] = pInfo->m_acMvCand[iCornerMvIdx];
    pInfo->m_acMvCand[iCornerMvIdx] = cTempMv;
  }
 
 
The condition (I marked bold) seems incorrect. m_cMvFieldB and m_cMvFieldC aren't initialized in the decoding process, so these conditions are never fulfilled.

And my suggestion: 

The goal of these 'boldface' checks is to check the equality of two reference indices, but as Minhua indicated, they does not work due to the non-initialization. Furthermore, the next conditions iAboveMvIdx > 0 and iCornerMvIdx > 0 already do the same thing. 

Thus instead of initializing them correctly, simply removal of the bold parts is sufficient to get the original motivation to use the AVC-style motion predictor as the 1st place in AMVP queue for rectangular partition modes.
"	defect	closed	minor		HM		fixed		fbossen ksuehring davidf jct-vc@…
