Fix: avoid redundant coding of RPL in both SPS and SH in multilayer
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
Merge request reports
Activity
added 10 commits
-
a808e1a1...d49dd574 - 2 commits from branch
jvet:master
- 4d266579 - avoid redundant coding of RPL in both SPS and SH in multilayer. New parameter...
- ccc21f7c - updated manual with new option "RPLofDepLayerInSH"
- e071c12f - Revert "updated manual with new option "RPLofDepLayerInSH""
- 8d29caaa - Revert "avoid redundant coding of RPL in both SPS and SH in multilayer. New...
- 724724b7 - Merge remote-tracking branch 'jvet_VVCSoftware_VTM_upstream/master'
- d6973b6a - fill RPL L1 based in L1 values
- f854c4af - fix number of active pictures setting for L1
- 5165c7bb - Merge branch 'fix_RPL' into multilayer_RPL
Toggle commit list-
a808e1a1...d49dd574 - 2 commits from branch
added 1 commit
- 54d85d69 - changed default value of RPLofDepLayerInSH to "false" (default: code RPL in SPS)
- Resolved by Frank Bossen
- Resolved by Frank Bossen
- Resolved by Frank Bossen
- Resolved by Frank Bossen
- Resolved by Frank Bossen
- Resolved by Frank Bossen
- Resolved by Frank Bossen
mentioned in merge request !2334 (merged)
added 9 commits
-
54d85d69...15226b1c - 2 commits from branch
jvet:master
- de41f628 - fix use correct list
- 0d0e7243 - using static vector
- 756885e2 - fix default in manual
- fdd57776 - changed naming
- e9de145b - Force init of rpl to 0 when not used
- a3720c44 - Merge remote-tracking branch 'jvet_VVCSoftware_VTM_upstream/master'
- e83f5b5e - Merge branch 'master' into multilayer_RPL
Toggle commit list-
54d85d69...15226b1c - 2 commits from branch
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
-
e83f5b5e...0123cdb7 - 2 commits from branch
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
Thank for pointing that out. I fixed this in MR !2496 (merged)
mentioned in merge request !2496 (merged)