Opened 5 years ago
Closed 3 years ago
#1043 closed defect (fixed)
Decoder crashes when encoding with command options: --MMVD=0 --FastMrg=0 --MaxNumMergeCand=1 --MaxNumGeoCand=0
Reported by: | tsukuba.takeshi | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | VTM | Version: | VTM-8.0 |
Keywords: | Cc: | ksuehring, XiangLi, fbossen, jvet@… |
Description
At VTM-8.0 or the latest VTM, decoder crashes when encoding with command options: --MMVD=0 --FastMrg=0 --MaxNumMergeCand=1 --MaxNumGeoCand=0.
This bug comes from the candNum setting at void EncCu::xCheckRDCostMerge2Nx2N(...).
When using option: --MMVD=0 --FastMrg=0 --MaxNumMergeCand=1 --MaxNumGeoCand=0,
the parameter candNum is still set to MRG_MAX_NUM_CANDS.
Thus, RdModeList can contain MMVD candidate at for-loop although MMVD is disabled.
EncCu::xCheckRDCostMerge2Nx2N(...){ ... const int candNum = MRG_MAX_NUM_CANDS + (tempCS->sps->getUseMMVD() ? MMVD_ADD_NUM : 0); for (int i = 0; i < candNum; i++) { if (i < mergeCtx.numValidMergeCand) { RdModeList.push_back(ModeInfo(i, true, false, false)); } else { RdModeList.push_back(ModeInfo(std::min(MMVD_ADD_NUM, i - mergeCtx.numValidMergeCand), false, true, false)); } } ... }
candNum should be set to mergeCtx.numValidMergeCand + (tempCS->sps->getUseMMVD() ? MMVD_ADD_NUM : 0).
Change history (2)
comment:1 Changed 5 years ago by tsukuba.takeshi
comment:2 Changed 3 years ago by fbossen
- Resolution set to fixed
- Status changed from new to closed
Note: See TracTickets for help on using tickets.
Suggested fix is https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/merge_requests/1591.