Ignore:
Timestamp:
12 Aug 2013, 11:21:53 (11 years ago)
Author:
mediatek-htm
Message:

Integration of JCT3V-E0182. The MACRO is "MTK_TEXTURE_MRGCAND_BUGFIX_E0182".

By Yi-Wen Chen (yiwen.chen@…)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-2.0-dev1-Mediatek/source/Lib/TLibCommon/TComDataCU.cpp

    r566 r567  
    31593159    if ( pcTextureCU && !pcTextureCU->isIntra( uiPartIdxCenter ) )
    31603160    {
     3161#if MTK_TEXTURE_MRGCAND_BUGFIX_E0182
     3162      pcTextureCU->getMvField( pcTextureCU, uiPartIdxCenter, REF_PIC_LIST_0, pcMvFieldNeighbours[iCount<<1] );
     3163      Int iValidDepRef = getPic()->isTextRefValid( REF_PIC_LIST_0, pcMvFieldNeighbours[iCount<<1].getRefIdx() );
     3164      if( (pcMvFieldNeighbours[iCount<<1].getRefIdx()>=0) && ( iValidDepRef >= 0 ) )
     3165      {
     3166        TComMv cMvPred = pcMvFieldNeighbours[iCount<<1].getMv();
     3167        const TComMv cAdd( 1 << ( 2 - 1 ), 1 << ( 2 - 1 ) );
     3168        cMvPred+=cAdd;
     3169        cMvPred>>=2;
     3170        clipMv(cMvPred);
     3171        pcMvFieldNeighbours[iCount<<1].setMvField(cMvPred,iValidDepRef);
     3172      }
     3173
     3174      if ( getSlice()->isInterB() )
     3175      {
     3176        pcTextureCU->getMvField( pcTextureCU, uiPartIdxCenter, REF_PIC_LIST_1, pcMvFieldNeighbours[(iCount<<1)+1] );
     3177        iValidDepRef = getPic()->isTextRefValid( REF_PIC_LIST_1, pcMvFieldNeighbours[(iCount<<1)+1].getRefIdx() );
     3178        if( (pcMvFieldNeighbours[(iCount<<1)+1].getRefIdx()>=0) && ( iValidDepRef >= 0) )
     3179        {
     3180          TComMv cMvPred = pcMvFieldNeighbours[(iCount<<1)+1].getMv();
     3181          const TComMv cAdd( 1 << ( 2 - 1 ), 1 << ( 2 - 1 ) );
     3182          cMvPred+=cAdd;
     3183          cMvPred>>=2;
     3184          clipMv(cMvPred);
     3185          pcMvFieldNeighbours[(iCount<<1)+1].setMvField(cMvPred,iValidDepRef);
     3186        }
     3187      }
     3188
     3189      puhInterDirNeighbours[iCount] = (pcMvFieldNeighbours[iCount<<1].getRefIdx()>=0)?1:0;
     3190      puhInterDirNeighbours[iCount] += (pcMvFieldNeighbours[(iCount<<1)+1].getRefIdx()>=0)?2:0;
     3191
     3192      if( puhInterDirNeighbours[iCount] != 0 )
     3193      {
     3194        abCandIsInter[iCount] = true;
     3195        if ( mrgCandIdx == iCount )
     3196        {
     3197          return;
     3198        }
     3199        iCount ++;
     3200      }
     3201#else
    31613202      abCandIsInter[iCount] = true;     
    31623203      puhInterDirNeighbours[iCount] = pcTextureCU->getInterDir( uiPartIdxCenter );
     
    32023243      }
    32033244      iCount ++;
     3245#endif//Bug fix
    32043246    }
    32053247  }
Note: See TracChangeset for help on using the changeset viewer.