Custom query (1557 matches)

Filters
 
or
 
  
 
Columns

Show under each result:


Results (25 - 27 of 1557)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Ticket Resolution Summary Owner Reporter
#100 fixed A SW bug in VTM for MPM generation when multiline is used for intra CU prediction ezhizng
Description

It looks as if there is a potential bug in intra prediction from multi reference line, please double check. The code below is used for multi reference line intra prediction MPM generation. To avoid insert duplicated modes in MPM, the red marked code:

if (aboveIntraDir > DC_IDX)

should be changed to:

if (aboveIntraDir > DC_IDX && aboveIntraDir != leftIntraDir)

Code snip below: UtilTools.cpp Line 333

int PU::getIntraMPMs()
{
#if JVET_L0283_MULTI_REF_LINE
    if (extendRefLine)
    {
      int modeIdx = 0;
      int angularMode[2] = { 0, 0 };
 
      if (leftIntraDir > DC_IDX)
      {
        angularMode[modeIdx++] = leftIntraDir;
      }
      if (aboveIntraDir > DC_IDX)
      {
        angularMode[modeIdx++] = aboveIntraDir;
      }
}
#976 fixed A bug about IBC virtual buffer jzxu
Description

The bug has been identified during generation of conformance bitstreams regarding IbcBuf. In the current text, the buffer size is 256x128 and the text mentions:

When x0 % VSize is equal to 0 and y0 % VSize is equal to 0, the following assignments are made for x = x0..x0 + VSize − 1 and y = y0..y0 + VSize − 1:

IbcVirBuf[ 0 ][ ( x + ( IbcBufWidthY >> 1 ) ) % IbcBufWidthY ][ y % CtbSizeY ] = −1 (179)

For 128x128 CTU, the VSize is equal to 64 and IbcBufWidthY is 256. Before decoding a 128x128/128x64/64x128 CU, only the top-left VPDU in the CU is reset as invalid and the other part may still be valid in the buffer. The bug may make the decoder need to maintain more than 3 additional VPDUs in order to support IBC. A simple fix is to change the text as follows (the change relative to the current text is marked in bold).

When x0 % VSize is equal to 0 and y0 % VSize is equal to 0, the following assignments are made for x = x0..x0 + Max( cbWidth, VSize ) − 1 and y = y0..y0 + Max( cbHeight, VSize ) − 1:

IbcVirBuf[ 0 ][ ( x + ( IbcBufWidthY >> 1 ) ) % IbcBufWidthY ][ y % CtbSizeY ] = −1 (179)

In the previous design of IBC virtual buffer with the size being 128x128, there is no such an issue. The purpose to reset all samples in a VPDU to −1 is to keep IBC from referring the collocated (relative to the IBC buffer) VPDU. After decoding a CU larger than 64x64 (that cannot be of IBC mode), its reconstruction will replace −1 and fill up the VPDU memory. Thus, resetting only the top-left VPDU is fine in such a case. It was decided that resetting all VPDUs at the beginning of decoding a VPDU was not necessary, to keep conciseness of the text.

#778 fixed A bug for combination of CIIP and WP chujoh
Description

There is a bug for combination of CIIP and WP. When chroma coefficients or offsets of weighted prediction are existed, results between encoder and decoder are not identical. The following changes should be introduced.

In /source/Lib/CommonLib/InterPrediction.cpp,
void InterPrediction::xPredInterBi(PredictionUnit &pu, PelUnitBuf &pcYuvPred, const bool luma, const bool chroma, PelUnitBuf *yuvPredTmp /*= NULL*/)

   if (dmvrApplied)
    {
      if (yuvPredTmp)
      {
        yuvPredTmp->addAvg(srcPred0, srcPred1, slice.clpRngs(), false);
      }
      xProcessDMVR(pu, pcYuvPred, slice.clpRngs(), bioApplied);
    }

->

   if (dmvrApplied)
    {
      if (yuvPredTmp)
      {
        if( pps.getWPBiPred() && slice.getSliceType() == B_SLICE &&
            wp0[COMPONENT_Cb].bPresentFlag || wp1[COMPONENT_Cb].bPresentFlag ||
            wp0[COMPONENT_Cr].bPresentFlag || wp1[COMPONENT_Cr].bPresentFlag) )
        {
          yuvPredTmp->addAvg(srcPred0, srcPred1, slice.clpRngs(), false, true);
          xWeightedPredictionBi( pu, srcPred0, srcPred1, pcYuvPred, m_maxCompIDToPred, false, true );
          yuvPredTmp->copyFrom(pcYuvPred, false, true);
        }
        else
        {
          yuvPredTmp->addAvg(srcPred0, srcPred1, slice.clpRngs(), false);
        }
      }
      xProcessDMVR(pu, pcYuvPred, slice.clpRngs(), bioApplied);
    }

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Note: See TracQuery for help on using queries.