Opened 4 years ago

Closed 4 years ago

#1262 closed defect (fixed)

Editorial: unnecessary variables in 8.5.2.6 and 8.6.2.4

Reported by: LiZhang Owned by:
Priority: minor Milestone: VVC D10
Component: spec Version: VVC D10 vE
Keywords: Cc: vzakharc, yuwenhe, jvet@…

Description

In those two sub-clauses, variables isPrunedA1 and isPrunedB1 (also isPrunedN) are initialized, updated and checked.

In 8.5.2.6, they are used to avoid comparing the second HMVP candidate with A1/B1 which has been checked to be same with the first HMVP candidate.
However, the results won't be changed by removing all these variables since HMVP candidates in the HmvpCandList are always unique.

In 8.6.2.4, only one HMVP candidate needs to be compared to A1/B1. There is no need to set and update those variables.

Attachments (1)

Suggested_Changes.docx (16.4 KB) - added by LiZhang 4 years ago.

Download all attachments as: .zip

Change history (9)

comment:1 Changed 4 years ago by LiZhang

  • Component changed from 360Lib to spec
  • Milestone set to VVC D10
  • Version set to VVC D10 vE

comment:2 follow-up: Changed 4 years ago by jlchen

I see the variables isPrunedA1 and isPrunedB1 are initialized In 8.5.2.6 and 8.6.2.4, but never used in late decoding process in vF release.

Shall just remove the sentence "The variables isPrunedA1 and isPrunedB1 are set both equal to FALSE." in both sections?

Changed 4 years ago by LiZhang

comment:3 in reply to: ↑ 2 Changed 4 years ago by LiZhang

isPrunedN is used in the two subclauses. We could remove all of them, as suggested in the attachment.

Replying to jlchen:

I see the variables isPrunedA1 and isPrunedB1 are initialized In 8.5.2.6 and 8.6.2.4, but never used in late decoding process in vF release.

Shall just remove the sentence "The variables isPrunedA1 and isPrunedB1 are set both equal to FALSE." in both sections?

comment:4 follow-up: Changed 4 years ago by fbossen

As far as I know, these variable are needed. There are basically there to make sure that some operations are not applied multiple times.

comment:5 in reply to: ↑ 4 Changed 4 years ago by LiZhang

The current text is not aligned with the reference software where these flags are not existing.

Here are the source code from VTM9.3:
bool PU::addMergeHMVPCand()
{
....

for (int mrgIdx = 1; mrgIdx <= num_avai_candInLUT; mrgIdx++)
{

miNeighbor = lut[num_avai_candInLUT - mrgIdx];

if ( mrgIdx > 2
((mrgIdx > 1 !isGt4x4) && ibcFlag) ((!isAvailableA1 (miLeft != miNeighbor)) && (!isAvailableB1 (miAbove != miNeighbor))) )

...
}
}

To me, it is better not to ask people to follow the specific way defined in the current spec.

Replying to fbossen:

As far as I know, these variable are needed. There are basically there to make sure that some operations are not applied multiple times.

comment:6 Changed 4 years ago by fbossen

Ok. I looked some more into this.

There was a software change where the isPruned variables were removed:
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/merge_requests/1108
This was claimed to not involve normative changes.

In 8.6.2.4, isPrunedN can indeed be removed because if "isPrunedN is equal to FALSE" fails then "hMvpIdx is equal to 1" fails too.

In 8.5.2.6, it should also be possible to remove isPrunedN since no two entries in the HMVP list should be identical (which appears to be the case), i.e., if "The candidate HmvpCandList[ NumHmvpCand − hMvpIdx] and the merging candidate N have the same motion vectors and the same reference indices" is true for hMvpIdx = 1, it cannot also be true for hMvpIdx = 2.

comment:7 Changed 4 years ago by jlchen

Thanks for discussion and clarifying situation. Li's changes are good to me and can be taken to make the text clearer.

comment:8 Changed 4 years ago by jlchen

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

Fixed in JVET-S2001-vG release as Li suggested.

Note: See TracTickets for help on using tickets.