Opened 12 years ago Closed 12 years ago #1074 closed defect (fixed)Decoder output is wrong for IPBB sequence
Description
Decoder output is visually not good for IPBB sequence.But the encoder recon is visually good. Attachments (2)Change History (11)comment:1 Changed 12 years ago by DefaultCC Plugin
Changed 12 years ago by satishcomment:2 follow-up: ↓ 3 Changed 12 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 12 years ago by satish
Replying to ksuehring:
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. comment:4 follow-up: ↓ 5 Changed 12 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 12 years ago by satish
Replying to davidf:
yeah..that's right. comment:6 Changed 12 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.
You could step through the decoder in your favorite debugger and try to find out where things go wrong... comment:7 Changed 12 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.
In file TEncGop.cpp,
if (pcSlice->getSliceType() == B_SLICE)
In file TComDataCu.cpp,
"eColRefPicList = getSlice()->getCheckLDC() ? eRefPicList : RefPicList(getSlice()->getColFromL0Flag());" comment:8 Changed 12 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 12 years ago by ksuehring
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
|
Bit stream generated with the attached config file