Custom Query (1440 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (16 - 18 of 1440)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Ticket Resolution Summary Owner Reporter
#1474 fixed HM Encoder allows Intra Block Copy MVs cross tile boundaries deryzhov
Description

According to 8.5.3.2 "Derivation process for motion vector components and reference indices" Intra Block Copy MVs can't cross tile boundaries (constrains (8-106)) but HM encoder in function TEncSearch::isBlockVectorValid() doesn't check this condition. Patch in attachment (to HM-16.15+SCM-8.4) can help to fix this problem.

#1473 duplicate HM Encoder allows Intra Block Copy MVs cross tile boundaries deryzhov
Description

According to 8.5.3.2 "Derivation process for motion vector components and reference indices" Intra Block Copy MVs can't cross tile boundaries (constrains (8-106)) but HM encoder in function TEncSearch::isBlockVectorValid() doesn't check this condition. Patch in attachment can help to fix this problem

#1470 fixed Difference between spec and HM in Equation (8-9) Haruhiko
Description

Equation(8-9) in spec:

for(rIdx = 0; rIdx <= num_ref_idx_l0_active_minus1; rIdx++)
    RefPicList0[rIdx] = ref_pic_list_modification_flag_l0 ? RefPicListTemp0[list_entry_l0[rIdx]] : RefPicListTemp0[rIdx]
if(pps_curr_pic_ref_enabled_flag && !ref_pic_list_modification_flag_l0 && NumRpsCurrTempList0 > (num_ref_idx_l0_active_minus1 + 1))
    RefPicList0[num_ref_idx_l0_active_minus1] = currPic

But function TComSlice::setRefPOCListSliceHeader() in HM16.15_SCM8.4:

  for (Int rIdx = 0; rIdx < m_aiNumRefIdx[REF_PIC_LIST_0]; rIdx ++)
  {
    cIdx = m_RefPicListModification.getRefPicListModificationFlagL0() ? m_RefPicListModification.getRefPicSetIdxL0(rIdx) : rIdx % numPicTotalCurr;
    assert(cIdx >= 0 && cIdx < numPicTotalCurr);
    m_aiRefPOCList[REF_PIC_LIST_0][rIdx] = rpsPOCCurrList0[cIdx];
  }

  if ( m_eSliceType != B_SLICE )
  {
    m_aiNumRefIdx[REF_PIC_LIST_1] = 0;
  }
  else
  {
    // Equation (8-11)
    for (Int rIdx = 0; rIdx < m_aiNumRefIdx[REF_PIC_LIST_1]; rIdx ++)
    {
      cIdx = m_RefPicListModification.getRefPicListModificationFlagL1() ? m_RefPicListModification.getRefPicSetIdxL1(rIdx) : rIdx % numPicTotalCurr;
      assert(cIdx >= 0 && cIdx < numPicTotalCurr);
      m_aiRefPOCList[REF_PIC_LIST_1][rIdx] = rpsPOCCurrList1[cIdx];
    }
  }

It is necessary to insert if clause. For example:

  if (getPPS()->getPpsScreenExtension().getUseIntraBlockCopy() &&
    !m_RefPicListModification.getRefPicListModificationFlagL0() && numPicTotalCurr > m_aiNumRefIdx[REF_PIC_LIST_0])
  {
    m_aiRefPOCList[REF_PIC_LIST_0][m_aiNumRefIdx[REF_PIC_LIST_0]-1] = getPOC();
  }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Note: See TracQuery for help on using queries.