Opened 4 years ago

Closed 4 years ago

#656 closed defect (fixed)

"mtsIdx[compID]==0 (DCT2xDCT2)" is used in chroma when lossless encoding

Reported by: tsukuba.takeshi Owned by:
Priority: minor Milestone: VTM-7.0
Component: VTM Version: VTM-7.0rc1
Keywords: Cc: ksuehring, XiangLi, fbossen, jvet@…

Description (last modified by ksuehring)

When lossless encoding, DCT2xDCT2 is not restricted in chroma component.

In IntraSearch.cpp::xIntraCodingTUBlock, to restrict DCT2xDCT2 for luma component, following logic is applied:

...
#if JVET_AHG14_LOSSLESS
    if( !( m_pcEncCfg->getCostMode() == COST_LOSSLESS_CODING && tu.mtsIdx[compID] == 0 ) || tu.cu->bdpcmMode != 0 )
    {
      m_pcTrQuant->transformNxN(tu, compID, cQP, uiAbsSum, m_CABACEstimator->getCtx(), loadTr);
    }
...
#endif

#if JVET_AHG14_LOSSLESS
  if( ( m_pcEncCfg->getCostMode() == COST_LOSSLESS_CODING && tu.mtsIdx[compID] == 0 ) && 0 == tu.cu->bdpcmMode )
  {
    uiAbsSum = 0;
    tu.getCoeffs( compID ).fill( 0 );
    TU::setCbfAtDepth( tu, compID, tu.depth, 0 );
  }
#endif

For chroma, the same logic should be applied to following part:

#if JVET_P0058_CHROMA_TS
    // encoder bugfix: Set loadTr to aovid redundant transform process
    m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, uiAbsSum, m_CABACEstimator->getCtx(), loadTr);
#else
    m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, uiAbsSum, m_CABACEstimator->getCtx());
#endif

Change history (3)

comment:2 Changed 4 years ago by ksuehring

  • Description modified (diff)

comment:3 Changed 4 years ago by ksuehring

  • Resolution set to fixed
  • Status changed from new to closed

The MR was merged.

Note: See TracTickets for help on using tickets.