Opened 8 years ago

Closed 8 years ago

#1074 closed defect (fixed)

Decoder output is wrong for IPBB sequence

Reported by: satish Owned by:
Priority: major Milestone: HM-10.1
Component: HM Version: HM-10.0
Keywords: Cc: fbossen, ksuehring, davidf, jct-vc@…

Description

Decoder output is visually not good for IPBB sequence.But the encoder recon is visually good.

Attachments (2)

encoder_lowdelay_main.cfg (8.3 KB) - added by satish 8 years ago.
Bit stream generated with the attached config file
1074-df-enc-dec.log (7.5 KB) - added by davidf 8 years ago.
Encode/Decode log showing mismatch on P picture

Download all attachments as: .zip

Change History (11)

comment:1 Changed 8 years ago by DefaultCC Plugin

  • Cc fbossen ksuehring davidf jct-vc@… added

Changed 8 years ago by satish

Bit stream generated with the attached config file

comment:2 follow-up: Changed 8 years ago by ksuehring

Can you please clarify: This is an encoder/decoder mismatch? Did you use picture digest SEI messages?

comment:3 in reply to: ↑ 2 Changed 8 years ago by satish

Replying to ksuehring:

Can you please clarify: This is an encoder/decoder mismatch? Did you use picture digest SEI messages?

I have generated .bin file with the attached config file(with HM10.0 verion encoder).The generated bin file given to the HM 10.0 version decoder. The output of the decoder is visually not good (It is corrupted).But the Encoder recon file is visually Good.

Changed 8 years ago by davidf

Encode/Decode log showing mismatch on P picture

comment:4 follow-up: Changed 8 years ago by davidf

Can confirm that a mismatch occurs (attached log file).

The issue is due to the following change in the config file

 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2  temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs 
-Frame1:  B    1   3        0.4624   0            0               0           4                4         -1 -5 -9 -13       0
+Frame1:  P    1   3        0.4624   0            0               0           4                4         -1 -5 -9 -13       0
 Frame2:  B    2   2        0.4624   0            0               0           4                4         -1 -2 -6 -10       1      -1       5         1 1 1 0 1
 Frame3:  B    3   3        0.4624   0            0               0           4                4         -1 -3 -7 -11       1      -1       5         0 1 1 1 1            
 Frame4:  B    4   1        0.578    0            0               0           4                4         -1 -4 -8 -12       1      -1       5         0 1 1 1 1

comment:5 in reply to: ↑ 4 Changed 8 years ago by satish

Replying to davidf:

Can confirm that a mismatch occurs (attached log file).

The issue is due to the following change in the config file

 #        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2  temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs 
-Frame1:  B    1   3        0.4624   0            0               0           4                4         -1 -5 -9 -13       0
+Frame1:  P    1   3        0.4624   0            0               0           4                4         -1 -5 -9 -13       0
 Frame2:  B    2   2        0.4624   0            0               0           4                4         -1 -2 -6 -10       1      -1       5         1 1 1 0 1
 Frame3:  B    3   3        0.4624   0            0               0           4                4         -1 -3 -7 -11       1      -1       5         0 1 1 1 1            
 Frame4:  B    4   1        0.578    0            0               0           4                4         -1 -4 -8 -12       1      -1       5         0 1 1 1 1

yeah..that's right.
That means for IPBBB sequence Decoder is not working.
what ever change i made in the config file,is it wrong ?
If i want to run IPBBB sequence what should i do ?

comment:6 Changed 8 years ago by ksuehring

It does not automatically mean that the decoder is wrong. There could also be an error in the bitstream writing.

Our common test conditions don't mix P and B frames.

It sounds like a wrong predictor, e.g. from a list 1 collocation in a P picture reference.

If i want to run IPBBB sequence what should i do ?

You could step through the decoder in your favorite debugger and try to find out where things go wrong...

comment:7 Changed 8 years ago by satish

Debugged the encoder code and i found that Reference picture list 1 is selecting for P slice in merge candidate list which is wrong as per spec.
For P slice LDC flag("pcSlice->setCheckLDC(bLowDelay)") is not updating which is used to get col reference picture list in xGetColMVP function.

In file TEncGop.cpp,
In function compressGOP,

if (pcSlice->getSliceType() == B_SLICE)

{

pcSlice->setColFromL0Flag(1-uiColDir);
Bool bLowDelay = true;
Int iCurrPOC = pcSlice->getPOC();
Int iRefIdx = 0;

for (iRefIdx = 0; iRefIdx < pcSlice->getNumRefIdx(REF_PIC_LIST_0) && bLowDelay; iRefIdx++)
{

if ( pcSlice->getRefPic(REF_PIC_LIST_0, iRefIdx)->getPOC() > iCurrPOC )
{

bLowDelay = false;

}

}
for (iRefIdx = 0; iRefIdx < pcSlice->getNumRefIdx(REF_PIC_LIST_1) && bLowDelay; iRefIdx++)
{

if ( pcSlice->getRefPic(REF_PIC_LIST_1, iRefIdx)->getPOC() > iCurrPOC )
{

bLowDelay = false;

}

}

pcSlice->setCheckLDC(bLowDelay);

}

In file TComDataCu.cpp,
In function xGetColMVP,

"eColRefPicList = getSlice()->getCheckLDC() ? eRefPicList : RefPicList(getSlice()->getColFromL0Flag());"

comment:8 Changed 8 years ago by ksuehring

Thanks for further checking this issue.

It seems adding the following else condition would fix the mismatch

    if (pcSlice->getSliceType() == B_SLICE)
    {
      ...
    }
    else
    {
      pcSlice->setCheckLDC(true);  
    }

I guess this needs some more checking if there is no other effect on P-slices.

Also, the LDC condition seems to be redundant with collocated_from_l0_flag. So I guess that can be further cleaned up.

comment:9 Changed 8 years ago by ksuehring

  • Priority changed from minor to major
  • Resolution set to fixed
  • Status changed from new to closed

The fix was applied in r3412

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(Subscriber)
  • jct-vc@…(Subscriber)
  • karl.sharman@…(Always)
  • Karsten Suehring(Subscriber, Participant, Always)
  • satish(Reporter, Participant)