Opened 3 weeks ago

Last modified 7 days ago

#562 new defect

RPR - Calculation of refHeight

Reported by: bheng Owned by:
Priority: minor Milestone:
Component: VTM Version: VTM-6.1
Keywords: Cc: ksuehring, XiangLi, fbossen, jvet@…

Description

In xPredInterBlkRPR( ), the calculation of refHeight (the number of rows of intermediate horizontal filtered results required for vertical interpolation), is calculated as follows:

int refHeight = height * scalingRatio.second >> SCALE_RATIO_BITS;

However, during the actual interpolation process, the actual rows used are determined incrementally using (row *stepY), as follows:

int posY = (int32_t)y0Int + row * stepY;
yInt = ( posY + offY ) >> posShift;

Given that there is some rounding error in stepY, the accumulated error from (row * stepY) can cause the interpolation use rows beyond the the rows generated by using (refHeight + vFilterSize - 1 + extSize). This can cause the decoder to use uninitialized memory and/or crash.

I believe something like the following could be used to determine which rows the interpolation process will actually require.

int refHeight = ((((int32_t)y0Int + (height-1) * stepY) + offY ) >> posShift) - ((((int32_t)y0Int) + offY ) >> posShift) + 1;

Change history (1)

comment:1 Changed 7 days ago by bheng

Potential fixes for this issue are available in the following merge request:

https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/merge_requests/997

Note: See TracTickets for help on using tickets.