Opened 13 years ago Closed 10 years ago #312 closed defect (fixed)Redundant cbf_cb and cbf_cr flags when log2MaxTrafoSize is set to two
Description
There are three redundant cbf_cb and cbf_cr flags for each 4x4 chroma TU when log2MaxTrafoSize is set to two.
When log2MaxTrafoSize is set to two, there are only 4x4 luma TUs and 4x4 chroma TUs and every four luma TUs correspond to one cb TU and one cr TU. So only one set of cbf_cb and cbf_cr flags should be coded corresponding to every four cbf_luma flags.
However, HM 5.1 software still codes one cbf_cb and cbf_cr flags corresponding to each cbf_luma when log2MaxTrafoSize is set to two, which causes three redundant cbf_cb and cbf_cr flags for each 4x4 chroma TU.
The relevant code causing this behavior is in TDecEntropy::xDecodeTransformSubdiv Bool bFirstCbfOfCU = uiLog2TrafoSize == pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize() || uiTrDepth == 0
It does not consider the case when log2MaxTrafoSize is set to two. So for each 4x4 luma TU, bFirstCbfOfCU is always true and there will always be a set of cbf_cb and cbf_cr coded. Attachments (2)Change History (5)comment:1 Changed 13 years ago by DefaultCC Plugin
Changed 13 years ago by zhyang123Changed 13 years ago by zhyang123comment:2 Changed 13 years ago by zhyang123comment:3 Changed 10 years ago by karlsharman
This was fixed in HM7.1_dev (r2512). Note: See
TracTickets for help on using
tickets. | This list contains all users that will be notified about changes made to this ticket. These roles will be notified: Reporter, Owner, Subscriber, Participant
|
Fix the bug by checking the inner block index uiInnerQuadIdx when uiLog2TrafoSize is equal to two. bFirstCbfOfCU is set to be true only when uiInnerQuadIdx is equal to three bFirstCbfOfCU in that case.