Opened 6 years ago
Last modified 6 years ago
#656 closed defect
"mtsIdx[compID]==0 (DCT2xDCT2)" is used in chroma when lossless encoding — at Version 2
| 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 (2)
comment:1 Changed 6 years ago by tsukuba.takeshi
comment:2 Changed 6 years ago by ksuehring
- Description modified (diff)
Note: See TracTickets for help on using tickets.
    
Suggtesed code fixe is:
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/merge_requests/1111