Opened 5 years ago
Last modified 5 years ago
#656 closed defect
"mtsIdx[compID]==0 (DCT2xDCT2)" is used in chroma when lossless encoding — at Initial Version
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 ¶
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