Skip to content
Snippets Groups Projects

Fix: avoid redundant coding of RPL in both SPS and SH in multilayer

Merged Fabrice URBAN requested to merge (removed):multilayer_RPL into master
1 unresolved thread

avoid redundant coding of RPL in both SPS and SH in multilayer New parameter "RPLofDepLayerInSH" specify if coding in SPS or SH (default SH)

Currently, RPL are initialized in the SPS from the config file. then in multilayer, for dependent layer, the list is updated with available pictures and inter-layer references and coded in the slice header. Then, when the SPS is coded, RPL still exist with unused values. This solution selects where to code the RPL with an encoder parameter. If it is in SH, the RPL are initialized in the encLib rather than in the SPS directly. This will save roughly 2Kb per GOP 32 sps of dependent layer

Edited by Fabrice URBAN

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Frank Bossen
  • Frank Bossen
  • Frank Bossen
  • Frank Bossen
  • Frank Bossen
  • Frank Bossen
  • Frank Bossen mentioned in merge request !2334 (merged)

    mentioned in merge request !2334 (merged)

  • Fabrice URBAN added 9 commits

    added 9 commits

    Compare with previous version

  • Fabrice URBAN added 4 commits

    added 4 commits

    • e83f5b5e...0123cdb7 - 2 commits from branch jvet:master
    • d8335285 - Merge remote-tracking branch 'jvet_VVCSoftware_VTM_upstream/master'
    • f6116845 - Merge branch 'master' into multilayer_RPL

    Compare with previous version

  • Frank Bossen resolved all threads

    resolved all threads

  • merged

  • Frank Bossen mentioned in commit eb421533

    mentioned in commit eb421533

  • 2018
    2019 int numRefActive = 0;
    2020 if (isIntraLayerPredAllowed)
    2021 {
    2022 for (int k = 0; k < ge.m_numRefPicsActive; k++)
    2023 {
    2024 rpl->setRefPicIdentifier(k, -ge.m_deltaRefPics[k], 0, false, 0);
    2025 }
    2026 numRefActive = ge.m_numRefPicsActive;
    2027 }
    2028 int validNumILRef = 0;
    2029 if (isInterLayerPredAllowed)
    2030 {
    2031 for (int refLayerIdx : refLayersIdx)
    2032 {
    2033 rpl->setRefPicIdentifier(numRefActive + validNumILRef, 0, true, true, m_vps->getInterLayerRefIdc(m_layerId, refLayerIdx));
    • m_layerId can't be used as an argument here, the function declaration is getInterLayerRefIdc( uint32_t layerIdx, uint32_t refLayerIdx ) and m_layerId is not necessarily equal to layerIdx. This code crashes VTM encoder when m_layerId is not equal to layerIdx.

      m_layerId argument should be replaced with m_vps->getGeneralLayerIdx( m_layerId ), which produces the correct layerIdx for a given m_layerId

    • Author Contributor

      Thank for pointing that out. I fixed this in MR !2496 (merged)

    • Please register or sign in to reply
  • Fabrice URBAN mentioned in merge request !2496 (merged)

    mentioned in merge request !2496 (merged)

  • Please register or sign in to reply
    Loading