Opened 11 years ago

Closed 11 years ago

#29 closed defect (fixed)

Encoder-decoder mismatch when CIP=0 and ROT=0

Reported by: wjhan Owned by: fbossen
Priority: minor Milestone:
Component: HM Version:
Keywords: Cc: fbossen, ksuehring, davidf, jct-vc@…

Description

When CIP=0 and ROT=0, encoder-decoder mismatch exists.

It seems that CIP search is performed even CIP=0 and ROT=0.

Attachments (1)

patch_Ticket29_TEncCu.patch (193 bytes) - added by wjhan 11 years ago.

Download all attachments as: .zip

Change History (8)

Changed 11 years ago by wjhan

comment:1 Changed 11 years ago by wjhan

Here is original code in TEncCu.cpp

#if HHI_ALLOW_ROT_SWITCH

if ( rpcTempCU->getSlice()->getSPS()->getUseROT() )

#else

if (1)

#endif

{

for (UChar indexROT = 1; indexROT<ROT_DICT; indexROT++)
{

rpcTempCU->setROTindex(0,indexROT);
rpcTempCU->setROTindexSubParts( indexROT, 0, rpcTempCU->getDepth(0) );
rpcTempCU->setCIPflag( 0, 0 );
rpcTempCU->setCIPflagSubParts( 0, 0, rpcTempCU->getDepth(0) );
xCheckRDCostIntra(rpcBestCU, rpcTempCU, eSize); rpcTempCU->initEstData();

}

} else {

rpcTempCU->setROTindex(0,0);
rpcTempCU->setROTindexSubParts(0, 0, rpcTempCU->getDepth(0) );
if (SIZE_NxN != eSize){

rpcTempCU->setCIPflag( 0, 1 );
rpcTempCU->setCIPflagSubParts( 1, 0, rpcTempCU->getDepth(0) );
xCheckRDCostIntra(rpcBestCU, rpcTempCU, SIZE_NxN); rpcTempCU->initEstData();

} else {

rpcTempCU->setCIPflag( 0, 1 );
rpcTempCU->setCIPflagSubParts( 1, 0, rpcTempCU->getDepth(0) );
xCheckRDCostIntra(rpcBestCU, rpcTempCU, SIZE_2Nx2N); rpcTempCU->initEstData();

}

}

As you can see, when ROT off case, CIP is evaluated once again without checking CIP on flag. It should be:

#if HHI_ALLOW_ROT_SWITCH

if ( rpcTempCU->getSlice()->getSPS()->getUseROT() )

#else

if (1)

#endif

{

for (UChar indexROT = 1; indexROT<ROT_DICT; indexROT++)
{

rpcTempCU->setROTindex(0,indexROT);
rpcTempCU->setROTindexSubParts( indexROT, 0, rpcTempCU->getDepth(0) );
rpcTempCU->setCIPflag( 0, 0 );
rpcTempCU->setCIPflagSubParts( 0, 0, rpcTempCU->getDepth(0) );
xCheckRDCostIntra(rpcBestCU, rpcTempCU, eSize); rpcTempCU->initEstData();

}

} else {

#if HHI_ALLOW_CIP_SWITCH
if ( rpcTempCU->getSlice()->getSPS()->getUseCIP() )
{
#endif

rpcTempCU->setROTindex(0,0);
rpcTempCU->setROTindexSubParts(0, 0, rpcTempCU->getDepth(0) );
if (SIZE_NxN != eSize){

rpcTempCU->setCIPflag( 0, 1 );
rpcTempCU->setCIPflagSubParts( 1, 0, rpcTempCU->getDepth(0) );
xCheckRDCostIntra(rpcBestCU, rpcTempCU, SIZE_NxN); rpcTempCU->initEstData();

} else {

rpcTempCU->setCIPflag( 0, 1 );
rpcTempCU->setCIPflagSubParts( 1, 0, rpcTempCU->getDepth(0) );
xCheckRDCostIntra(rpcBestCU, rpcTempCU, SIZE_2Nx2N); rpcTempCU->initEstData();

}

#if HHI_ALLOW_CIP_SWITCH
}
#endif

}

comment:2 Changed 11 years ago by fbossen

  • Owner set to fbossen
  • Status changed from new to accepted

comment:3 Changed 11 years ago by fbossen

Patch was applied in r133

comment:4 Changed 11 years ago by davidf

  • Resolution set to fixed
  • Status changed from accepted to closed

This CIP code path was removed in r137

comment:5 Changed 10 years ago by davidf

  • Component set to HM

Updating component after adding WD (Text) tickets

comment:6 Changed 10 years ago by davidf

  • Cc fbossen ksuehring davidf added

comment:7 Changed 10 years ago by davidf

  • Cc jct-vc@… added
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, Participant)
  • Frank Bossen(Owner, Subscriber, Participant)
  • jct-vc@…(Subscriber)
  • karl.sharman@…(Always)
  • Karsten Suehring(Subscriber, Always)
  • Woo-Jin Han(Reporter, Participant)