Opened 3 years ago
Closed 3 years ago
#1507 closed defect (invalid)
Clarification questions on VTM compression for collocated motion vectors
Reported by: | iole_moccagatta | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | VTM-14.0 |
Component: | VTM | Version: | |
Keywords: | Cc: | ksuehring, fbossen, bbross, iole.moccagatta, iole_moccagatta, XiangLi, jvet@… |
Description
Two clarification questions on VTM compression for collocated motion vectors:
A) collocated motion vector = +130,048 compresses to 0x00D decompresses to +131,072
This is outside the legal range of 18-bit. There are 3 paths in the code using the decompressed motion vectors: in two paths the clipping is done immediately by
rcMv.clipToStorageBitDepth()
and in the 3rd path the clipping is done by
scaleMv()
forcing to keep the 19-bit precision till that point. Is this the intent ?
B)
(mantissa ^ MV_MANTISSA_LIMIT)
is flipping the msb of the 6-bit mantissa. But the msb of the 6-bit mantissa is overloaded, meaning it is used to indicate sign and “units”. Is this the intent ?
Change history (1)
comment:1 Changed 3 years ago by fbossen
- Resolution set to invalid
- Status changed from new to closed
Regarding A: the case where the resulting MV is a function of a scale is applied to the value +131072 may indeed arise. There may be several ways to implement this.
Regarding B: in the code, mantissa is a 32-bit variable (essentially the sign-extended version of a 6-bit signed value). The operation XOR MV_MANTISSA_LIMIT flips a bit in a 32-bit value, not a 6-bit one.