#851 closed defect (fixed)

Mismatch between spec and VTM on RplsIdx inference.

Reported by: audrey.turquin Owned by:
Priority: minor Milestone:
Component: VTM Version:
Keywords: Cc: ksuehring, XiangLi, fbossen, jvet@…

Description

It seems there is a mismatch between spec and VTM on the RplsIdx[1] inference in case of:

  • rpl1_idx_present_flag = 0
  • num_ref_pic_lists_in_sps[0] != 0
  • num_ref_pic_lists_in_sps[1] = 0
  • rpl_sps_flag[0] = 1

In this case, according to the spec, there are the following inferences for RPL1 :

  • rpl_sps_flag[1] = 0 (because num_ref_pic_lists_in_sps[1] = 0)
  • RplsIdx[1] = num_ref_pic_lists_in_sps[1] = 0

However, in the VTM, this inference is not done correctly (for both picture header and slice header).

In the parsing of the picture header (parsePictureHeader function), the first condition for the inference is:

if (listIdx == 1 && !pps->getRpl1IdxPresentFlag())
{
  picHeader->setRPL1idx(picHeader->getRPL0idx());
  uiCode = (picHeader->getRPL0idx() != -1);
}
// RPL in picture header or SPS
else if (sps->getNumRPL( listIdx ) == 0)
{
  ...
}

In the parsing of the slice header (parseSliceHeader function), the first condition for the inference is:

if (!pps->getRpl1IdxPresentFlag())
{
  pcSlice->setRPL1idx(pcSlice->getRPL0idx());
  if (pcSlice->getRPL1idx() != -1)
    pcSlice->setRPL1(sps->getRPLList1()->getReferencePictureList(pcSlice->getRPL0idx()));
}
else
{
  ...
}

Consequently, if rpl1_idx_present_flag = 0, RplsIdx[1] is set equal to RplsIdx[0], without taking into account the value of rpl_sps_flag[1].
So RplsIdx[1] is not set to the correct value, and cannot access to the correct RPL from SPS as it doesn't even exist (because num_of_ref_pic_lists_in_sps[1] = 0).

Moreover, in this case, in VTM the function 'parseRefPicList' is not called for L1 while it is the case in the spec (function 'ref_pic_list_struct').

Change history (3)

comment:1 Changed 20 months ago by audrey.turquin

comment:2 Changed 20 months ago by audrey.turquin

There is also an issue in the rpl_sps_flag[1] inference.
In the spec, there is a case where rpl_sps_flag[1] is inferred to be equal to rpl_sps_flag[0]. This case is not managed in the VTM.

comment:3 Changed 19 months ago by ksuehring

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

The MR was merged.

Note: See TracTickets for help on using tickets.