Opened 9 years ago

Closed 9 years ago

#457 closed defect (invalid)

Potential Bug in HM6.0

Reported by: NaZhang Owned by: tung.nguyen
Priority: minor Milestone:
Component: HM Version: HM-6.0
Keywords: Cc: fbossen, ksuehring, davidf, jct-vc@…

Description

When we did expeiments on HM4.0, we observed that the following section of the code of the function "encodeCoeff "in the file "TEncEntropy.cpp" does not seem to behave in the correct way.

if ( !pcCU->getQtRootCbf( uiAbsPartIdx ) )

{

return;

}

It seems that the above code should be modified as follows.

if ( !pcCU->getQtRootCbf( uiAbsPartIdx ) )

{

pcCU->setCbfSubParts( 0, 0, 0, uiAbsPartIdx, uiDepth );
pcCU->setTrIdxSubParts( 0 , uiAbsPartIdx, uiDepth );
return;

}

In this way, it can also match the following section of the code of the function "decodeCoeff" in the file "TDecEntropy.cpp"

if ( !uiQtRootCbf )

{

pcCU->setCbfSubParts( 0, 0, 0, uiAbsPartIdx, uiDepth );
pcCU->setTrIdxSubParts( 0 , uiAbsPartIdx, uiDepth );
return;

}

The following section of the code of the function "encodeCoeff " in the file "TEncEntropy.cpp" of HM6.0 also has the same problem.
if ( !pcCU->getQtRootCbf( uiAbsPartIdx ) )

{

#if NSQT_LFFIX

pcCU->setNSQTIdxSubParts( uiAbsPartIdx, uiDepth );

#endif

return;

}

It seems that it should make the following changes.
if ( !pcCU->getQtRootCbf( uiAbsPartIdx ) )

{
pcCU->setCbfSubParts( 0, 0, 0, uiAbsPartIdx, uiDepth );
pcCU->setTrIdxSubParts( 0 , uiAbsPartIdx, uiDepth );

#if NSQT_LFFIX

pcCU->setNSQTIdxSubParts( uiAbsPartIdx, uiDepth );

#endif

return;

}

Change History (4)

comment:1 Changed 9 years ago by DefaultCC Plugin

  • Cc fbossen ksuehring davidf jct-vc@… added

comment:2 Changed 9 years ago by ksuehring

  • Owner set to tung.nguyen
  • Status changed from new to assigned

comment:3 Changed 9 years ago by tung.nguyen

The implementation is correct.
In decoder, a flag (cbf) signals whether a TU has coefficient or not is parsed first (1).
After that, this information is evaluated (2) and the parseCoeffNxN is called if the flag is set.

(1) TDecEntropy.cpp ~ 1062
(2) TDecEntropy.cpp ~ 801 - 865

In the encoder, the flag is not always available in the estimation process.
Thats the reason why codeCoeffNxN check for the number of non-zero coefficient in the TU.
However, for the real coding stage, the flag set in xEncSearch.cpp (of the final decision), thus the implementation is correct.

~ xEncCoeffQT
~ encodeCoeffNxN [TEncSearch.cpp: 842]

Best regards,
Tung

Last edited 9 years ago by tung.nguyen (previous) (diff)

comment:4 Changed 9 years ago by ksuehring

  • Resolution set to invalid
  • Status changed from assigned to closed
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

  • David Flynn(Subscriber)
  • Frank Bossen(Subscriber)
  • jct-vc@…(Subscriber)
  • karl.sharman@…(Always)
  • Karsten Suehring(Subscriber, Participant, Always)
  • NaZhang(Reporter)
  • Tung Nguyen(Owner, Participant)