- changed title to Add too many times deltaQPBits in RDO Process
- changed component to analysis
- changed version to 1.9
Add too many times deltaQPBits in RDO Process
Issue #457
new
in CheckIntra() Function, we will run
m_entropyCoder.codeCoeff(cu, 0, bCodeDQP, tuDepthRange)
in codeCoeff(), we will call encodeTransform() if not I400, then in encodeTransform(), we will run
if (cu.m_slice->m_pps->bUseDQP && bCodeDQP)
{
uint32_t log2CUSize = cu.m_log2CUSize[absPartIdx];
uint32_t absPartIdxLT = absPartIdx & (0xFF << (log2CUSize - LOG2_UNIT_SIZE) * 2);
codeDeltaQP(cu, absPartIdxLT);
bCodeDQP = false;
}
Now, here we add deltaQPBits once, then return to checkIntra(), we will run checkDQP() at last, then we will run:
if (cu.getQtRootCbf(0))
{
if (m_param->rdLevel >= 3)
{
mode.contexts.resetBits();
mode.contexts.codeDeltaQP(cu, 0);
uint32_t bits = mode.contexts.getNumberOfWrittenBits();
mode.totalBits += bits;
updateModeCost(mode);
}
...
here, if cbf=1, we will add deltaQPBits twice, it's not very good, why we add deltaQPBits more than once for the same cu and mode.
Comments (2)
-
reporter -
reporter In InterMode, the same thing happens
- Log in to comment