Opened 5 years ago
Last modified 5 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 5 years ago by tsukuba.takeshi
comment:2 Changed 5 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