Changeset 1600 in SHVCSoftware for branches


Ignore:
Timestamp:
30 Nov 2017, 18:22:35 (7 years ago)
Author:
seregin
Message:

fix for the ticket #92
If the current picture min CU size is larger than 16x16, 16x16 granularity as in the inter-layer motion resampling should be used for the inter-layer motion derivation.
LAYER_CTB macro is enabled as well, since different zig-zag scannings should be used.

Location:
branches/SHM-dev/source/Lib
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-dev/source/Lib/TLibCommon/TComDataCU.cpp

    r1574 r1600  
    23292329  if ( getSlice()->getEnableTMVPFlag() )
    23302330  {
     2331#if SVC_EXTENSION
     2332    TComPic* colPic = m_pcSlice->getRefPic( RefPicList( getSlice()->isInterB() ? 1 - getSlice()->getColFromL0Flag() : 0 ), getSlice()->getColRefIdx() );
     2333    Bool replaceWithILRP = colPic->isILR( m_pcPic->getLayerId() ) && ( m_pcPic->getMinCUWidth() > 16 || m_pcPic->getMinCUHeight() > 16 );
     2334#endif
    23312335    //>> MTK colocated-RightBottom
    23322336    UInt uiPartIdxRB;
     
    23482352        ( uiAbsPartIdxTmp / numPartInCtuWidth < numPartInCtuHeight - 1 ) )              // is not at the last row    of CTU
    23492353      {
     2354#if SVC_EXTENSION
     2355        if( replaceWithILRP )
     2356        {
     2357          UInt brILRPIdx = xDeriveRightBottomIdxForILRP( uiPUIdx, colPic );
     2358          uiAbsPartAddr = colPic->getRasterToZscanILRP()[brILRPIdx + colPic->getNumPartInCtuWidth() + 1];
     2359        }
     2360        else
     2361#endif
    23502362        uiAbsPartAddr = g_auiRasterToZscan[ uiAbsPartIdxTmp + numPartInCtuWidth + 1 ];
    23512363        ctuRsAddr = getCtuRsAddr();
     
    23572369      else if ( uiAbsPartIdxTmp / numPartInCtuWidth < numPartInCtuHeight - 1 )          // is not at the last row of CTU But is last column of CTU
    23582370      {
     2371#if SVC_EXTENSION
     2372        if( replaceWithILRP )
     2373        {
     2374          UInt brILRPIdx = xDeriveRightBottomIdxForILRP( uiPUIdx, colPic );
     2375          uiAbsPartAddr = colPic->getRasterToZscanILRP()[brILRPIdx + 1];
     2376        }
     2377        else
     2378#endif
    23592379        uiAbsPartAddr = g_auiRasterToZscan[ uiAbsPartIdxTmp + 1 ];
    23602380        ctuRsAddr = getCtuRsAddr() + 1;
     
    23722392    Int dir = 0;
    23732393    UInt uiArrayAddr = iCount;
     2394#if SVC_EXTENSION
     2395    if( replaceWithILRP )
     2396    {
     2397      uiPartIdxCenter = xDeriveCenterIdxForILRP( uiPUIdx, colPic );
     2398    }
     2399    else
     2400#endif
    23742401    xDeriveCenterIdx( uiPUIdx, uiPartIdxCenter );
    23752402    bExistMV = ctuRsAddr >= 0 && xGetColMVP( REF_PIC_LIST_0, ctuRsAddr, uiAbsPartAddr, cColMv, iRefIdx );
     
    26672694    UInt absPartIdx;
    26682695
     2696#if SVC_EXTENSION
     2697    TComPic* colPic = m_pcSlice->getRefPic( RefPicList( getSlice()->isInterB() ? 1 - getSlice()->getColFromL0Flag() : 0 ), getSlice()->getColRefIdx());
     2698    Bool replaceWithILRP = colPic->isILR( m_pcPic->getLayerId() ) && ( m_pcPic->getMinCUWidth() > 16 || m_pcPic->getMinCUHeight() > 16 );
     2699#endif
     2700
    26692701    deriveRightBottomIdx( partIdx, partIdxRB );
    26702702    UInt absPartAddr = m_absZIdxInCtu + partAddr;
     
    26792711           ( absPartIdx / numPartInCtuWidth < numPartInCtuHeight - 1 ) )  // is not at the last row    of CTU
    26802712      {
     2713#if SVC_EXTENSION
     2714        if( replaceWithILRP )
     2715        {
     2716          UInt brILRPIdx = xDeriveRightBottomIdxForILRP( partIdx, colPic );
     2717          absPartAddr = colPic->getRasterToZscanILRP()[brILRPIdx + colPic->getNumPartInCtuWidth() + 1];
     2718        }
     2719        else
     2720#endif
    26812721        absPartAddr = g_auiRasterToZscan[ absPartIdx + numPartInCtuWidth + 1 ];
    26822722        ctuRsAddr = getCtuRsAddr();
     
    26882728      else if ( absPartIdx / numPartInCtuWidth < numPartInCtuHeight - 1 ) // is not at the last row of CTU But is last column of CTU
    26892729      {
     2730#if SVC_EXTENSION
     2731        if( replaceWithILRP )
     2732        {
     2733          UInt brILRPIdx = xDeriveRightBottomIdxForILRP( partIdx, colPic );
     2734          absPartAddr = colPic->getRasterToZscanILRP()[brILRPIdx + 1];
     2735        }
     2736        else
     2737#endif
    26902738        absPartAddr = g_auiRasterToZscan[ absPartIdx + 1 ];
    26912739        ctuRsAddr = getCtuRsAddr() + 1;
     
    27032751    {
    27042752      UInt uiPartIdxCenter;
     2753#if SVC_EXTENSION
     2754      if( replaceWithILRP )
     2755      {
     2756        uiPartIdxCenter = xDeriveCenterIdxForILRP( partIdx, colPic );
     2757      }
     2758      else
     2759#endif
    27052760      xDeriveCenterIdx( partIdx, uiPartIdxCenter );
    27062761      if (xGetColMVP( eRefPicList, getCtuRsAddr(), uiPartIdxCenter,  cColMv, refIdx_Col ))
     
    34073462#endif
    34083463
     3464// Inter-layer reference picture has a motion field for each 16x16 block, however if the current picture has a min CU size greater than 16x16 then the motion field has to be calculated based on 16x16 accuracy
     3465UInt TComDataCU::xDeriveRightBottomIdxForILRP( UInt partIdx, TComPic* refILP ) const
     3466{
     3467  // convert m_absZIdxInCtu to the ILRP z-index
     3468  UInt pelX = m_uiCUPelX + g_auiRasterToPelX[g_auiZscanToRaster[m_absZIdxInCtu]];
     3469  UInt pelY = m_uiCUPelY + g_auiRasterToPelY[g_auiZscanToRaster[m_absZIdxInCtu]];
     3470
     3471  UInt maxCUHeight = refILP->getSlice( 0 )->getSPS()->getMaxCUHeight();
     3472  UInt maxCUWidth = refILP->getSlice( 0 )->getSPS()->getMaxCUWidth();
     3473  UInt minUnitSize = refILP->getMinCUWidth();
     3474
     3475  UInt absZIdxInCtu = ( pelY - ( pelY / maxCUHeight )*maxCUHeight ) / minUnitSize * refILP->getNumPartInCtuWidth() + ( pelX - ( pelX / maxCUWidth )*maxCUWidth ) / minUnitSize;
     3476  absZIdxInCtu = refILP->getRasterToZscanILRP()[absZIdxInCtu];
     3477
     3478  UInt partIdxBR = refILP->getRasterToZscanILRP()[refILP->getZscanToRasterILRP()[absZIdxInCtu] + ( ( ( m_puhHeight[0] / refILP->getMinCUHeight() ) >> 1 ) - 1 )*refILP->getNumPartInCtuWidth() + m_puhWidth[0] / refILP->getMinCUWidth() - 1];
     3479
     3480  Int numPartitionsInCtu = refILP->getNumPartitionsInCtu();
     3481
     3482  switch( m_pePartSize[0] )
     3483  {
     3484  case SIZE_2Nx2N:
     3485    partIdxBR += numPartitionsInCtu >> 1;
     3486    break;
     3487  case SIZE_2NxN:
     3488    partIdxBR += ( partIdx == 0 ) ? 0 : numPartitionsInCtu >> 1;
     3489    break;
     3490  case SIZE_Nx2N:
     3491    partIdxBR += ( partIdx == 0 ) ? numPartitionsInCtu >> 2 : ( numPartitionsInCtu >> 1 );
     3492    break;
     3493  case SIZE_NxN:
     3494    partIdxBR += ( numPartitionsInCtu >> 2 ) * ( partIdx - 1 );
     3495    break;
     3496  case SIZE_2NxnU:
     3497    partIdxBR += ( partIdx == 0 ) ? -( Int(numPartitionsInCtu) >> 3 ) : numPartitionsInCtu >> 1;
     3498    break;
     3499  case SIZE_2NxnD:
     3500    partIdxBR += ( partIdx == 0 ) ? ( numPartitionsInCtu >> 2 ) + ( numPartitionsInCtu >> 3 ) : numPartitionsInCtu >> 1;
     3501    break;
     3502  case SIZE_nLx2N:
     3503    partIdxBR += ( partIdx == 0 ) ? ( numPartitionsInCtu >> 3 ) + ( numPartitionsInCtu >> 4 ) : numPartitionsInCtu >> 1;
     3504    break;
     3505  case SIZE_nRx2N:
     3506    partIdxBR += ( partIdx == 0 ) ? ( numPartitionsInCtu >> 2 ) + ( numPartitionsInCtu >> 3 ) + ( numPartitionsInCtu >> 4 ) : numPartitionsInCtu >> 1;
     3507    break;
     3508  default:
     3509    assert( 0 );
     3510    break;
     3511  }
     3512
     3513  partIdxBR = refILP->getZscanToRasterILRP()[absZIdxInCtu + partIdxBR];
     3514
     3515  return partIdxBR;
     3516}
     3517
     3518// Inter-layer reference picture has a motion field for each 16x16 block, however if the current picture has a min CU size greater than 16x16 then the motion field has to be calculated based on 16x16 accuracy
     3519UInt TComDataCU::xDeriveCenterIdxForILRP( UInt partIdx, TComPic* refILP ) const
     3520{
     3521  UInt partAddr;
     3522  Int  partWidth;
     3523  Int  partHeight;
     3524
     3525  UInt numPartitionsInCtu = refILP->getNumPartitionsInCtu();
     3526
     3527  switch( m_pePartSize[0] )
     3528  {
     3529  case SIZE_2NxN:
     3530    partWidth = m_puhWidth[0];      partHeight = m_puhHeight[0] >> 1; partAddr = ( partIdx == 0 ) ? 0 : numPartitionsInCtu >> 1;
     3531    break;
     3532  case SIZE_Nx2N:
     3533    partWidth = m_puhWidth[0] >> 1; partHeight = m_puhHeight[0];      partAddr = ( partIdx == 0 ) ? 0 : numPartitionsInCtu >> 2;
     3534    break;
     3535  case SIZE_NxN:
     3536    partWidth = m_puhWidth[0] >> 1; partHeight = m_puhHeight[0] >> 1; partAddr = ( numPartitionsInCtu >> 2 ) * partIdx;
     3537    break;
     3538  case SIZE_2NxnU:
     3539    partWidth = m_puhWidth[0];
     3540    partHeight = ( partIdx == 0 ) ? m_puhHeight[0] >> 2 : ( m_puhHeight[0] >> 2 ) + ( m_puhHeight[0] >> 1 );
     3541    partAddr = ( partIdx == 0 ) ? 0 : numPartitionsInCtu >> 3;
     3542    break;
     3543  case SIZE_2NxnD:
     3544    partWidth = m_puhWidth[0];
     3545    partHeight = ( partIdx == 0 ) ? ( m_puhHeight[0] >> 2 ) + ( m_puhHeight[0] >> 1 ) : m_puhHeight[0] >> 2;
     3546    partAddr = ( partIdx == 0 ) ? 0 : ( numPartitionsInCtu >> 1 ) + ( numPartitionsInCtu >> 3 );
     3547    break;
     3548  case SIZE_nLx2N:
     3549    partWidth = ( partIdx == 0 ) ? m_puhWidth[0] >> 2 : ( m_puhWidth[0] >> 2 ) + ( m_puhWidth[0] >> 1 );
     3550    partHeight = m_puhHeight[0];
     3551    partAddr = ( partIdx == 0 ) ? 0 : numPartitionsInCtu >> 4;
     3552    break;
     3553  case SIZE_nRx2N:
     3554    partWidth = ( partIdx == 0 ) ? ( m_puhWidth[0] >> 2 ) + ( m_puhWidth[0] >> 1 ) : m_puhWidth[0] >> 2;
     3555    partHeight = m_puhHeight[0];
     3556    partAddr = ( partIdx == 0 ) ? 0 : ( numPartitionsInCtu >> 2 ) + ( numPartitionsInCtu >> 4 );
     3557    break;
     3558  default:
     3559    assert( m_pePartSize[0] == SIZE_2Nx2N );
     3560    partWidth = m_puhWidth[0];      partHeight = m_puhHeight[0];      partAddr = 0;
     3561    break;
     3562  }
     3563
     3564  // convert m_absZIdxInCtu to the ILRP z-index
     3565  UInt pelX = m_uiCUPelX + g_auiRasterToPelX[g_auiZscanToRaster[m_absZIdxInCtu]];
     3566  UInt pelY = m_uiCUPelY + g_auiRasterToPelY[g_auiZscanToRaster[m_absZIdxInCtu]];
     3567
     3568  UInt maxCUHeight = refILP->getSlice( 0 )->getSPS()->getMaxCUHeight();
     3569  UInt maxCUWidth  = refILP->getSlice( 0 )->getSPS()->getMaxCUWidth();
     3570  UInt minUnitSize = refILP->getMinCUWidth();
     3571
     3572  UInt absZIdxInCtu = ( pelY - ( pelY / maxCUHeight )*maxCUHeight ) / minUnitSize * refILP->getNumPartInCtuWidth() + ( pelX - ( pelX / maxCUWidth )*maxCUWidth ) / minUnitSize;
     3573  absZIdxInCtu = refILP->getRasterToZscanILRP()[absZIdxInCtu];
     3574
     3575  UInt partIdxCenter = absZIdxInCtu + partAddr; // partition origin.
     3576
     3577  partIdxCenter = refILP->getRasterToZscanILRP()[refILP->getZscanToRasterILRP()[partIdxCenter]
     3578    + ( partHeight / refILP->getMinCUHeight() ) / 2 * refILP->getNumPartInCtuWidth()
     3579    + ( partWidth / refILP->getMinCUWidth() ) / 2];
     3580
     3581  return partIdxCenter;
     3582}
     3583
    34093584#endif //SVC_EXTENSION
    34103585//! \}
  • branches/SHM-dev/source/Lib/TLibCommon/TComDataCU.h

    r1573 r1600  
    171171  Void          xDeriveCenterIdx              ( UInt uiPartIdx, UInt& ruiPartIdxCenter ) const;
    172172
     173#if SVC_EXTENSION
     174  UInt          xDeriveRightBottomIdxForILRP  ( UInt partIdx, TComPic* refILP ) const;
     175  UInt          xDeriveCenterIdxForILRP       ( UInt partIdx, TComPic* refILP ) const;
     176#endif
     177
    173178public:
    174179                TComDataCU();
  • branches/SHM-dev/source/Lib/TLibCommon/TComPic.cpp

    r1578 r1600  
    7979#if SVC_EXTENSION
    8080#if REDUCED_ENCODER_MEMORY
    81 Void TComPic::create( const TComSPS &sps, const TComPPS &pps, const Bool bCreateEncoderSourcePicYuv, const Bool bCreateForImmediateReconstruction, const UInt layerId )
    82 #else
    83 Void TComPic::create( const TComSPS &sps, const TComPPS &pps, const Bool bIsVirtual, const UInt layerId )
     81Void TComPic::create( const TComSPS &sps, const TComPPS &pps, const Bool bCreateEncoderSourcePicYuv, const Bool bCreateForImmediateReconstruction, const UInt layerId, const Bool isILRP )
     82#else
     83Void TComPic::create( const TComSPS &sps, const TComPPS &pps, const Bool bIsVirtual, const UInt layerId, const Bool isILRP )
    8484#endif
    8585{
     
    9191  const UInt         uiMaxCuWidth    = sps.getMaxCUWidth();
    9292  const UInt         uiMaxCuHeight   = sps.getMaxCUHeight();
     93#if SVC_EXTENSION
     94  UInt maxDepth = 0;
     95  if( isILRP )
     96  {
     97    while( ( uiMaxCuWidth >> maxDepth ) > 16 )
     98    {
     99      maxDepth++;
     100    }
     101  }
     102
     103  const UInt         uiMaxDepth      = ( ( uiMaxCuWidth >> sps.getMaxTotalCUDepth() ) > 16 && isILRP ) ? maxDepth : sps.getMaxTotalCUDepth();
     104
     105  if( isILRP )
     106  {
     107    m_maxILRPdepth = uiMaxDepth;
     108
     109    UInt* piTmp = &m_auiZscanToRaster[0];
     110    initZscanToRaster( m_maxILRPdepth + 1, 1, 0, piTmp );
     111    initRasterToZscan( uiMaxCuWidth, uiMaxCuHeight, m_maxILRPdepth + 1, m_auiZscanToRaster, m_auiRasterToZscan );
     112    initRasterToPelXY( uiMaxCuWidth, uiMaxCuHeight, m_maxILRPdepth + 1, m_auiRasterToPelX, m_auiRasterToPelY );
     113  }
     114#else
    93115  const UInt         uiMaxDepth      = sps.getMaxTotalCUDepth();
     116#endif
    94117  const Window& conformanceWindow    = sps.getConformanceWindow();
    95118
     
    485508{
    486509  const TComSPS *sps       = getSlice(0)->getSPS();
    487   const UInt uiMaxDepth    = sps->getMaxTotalCUDepth();
     510  const UInt uiMaxDepth    = m_maxILRPdepth;
    488511  const UInt numPartitions = 1<<(uiMaxDepth<<1);
    489512  const UInt widthMinPU    = sps->getMaxCUWidth()  / (1<<uiMaxDepth);
     
    502525    {
    503526      //pixel position of each unit in up-sampled layer
    504       UInt pelX = pcCUDes->getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[absPartIdx] ];
    505       UInt pelY = pcCUDes->getCUPelY() + g_auiRasterToPelY[ g_auiZscanToRaster[absPartIdx] ];
     527      UInt pelX = pcCUDes->getCUPelX() + m_auiRasterToPelX[ m_auiZscanToRaster[absPartIdx] ];
     528      UInt pelY = pcCUDes->getCUPelY() + m_auiRasterToPelY[ m_auiZscanToRaster[absPartIdx] ];
    506529      UInt baseCUAddr, baseAbsPartIdx;
    507530
     
    558581Void TComPic::initUpsampledMvField()
    559582{
    560   const TComSPS *sps         = getSlice(0)->getSPS();
    561   const UInt uiMaxDepth      = sps->getMaxTotalCUDepth();
     583  const UInt uiMaxDepth      = m_maxILRPdepth;
    562584  const UInt numPartitions = 1<<(uiMaxDepth<<1);
    563585
  • branches/SHM-dev/source/Lib/TLibCommon/TComPic.h

    r1574 r1600  
    8787#if SVC_EXTENSION
    8888  UInt                  m_layerId;                         //  Layer ID
     89  UInt                  m_maxILRPdepth;                    // max depth for ILRP
     90  UInt                  m_auiZscanToRaster[MAX_NUM_PART_IDXS_IN_CTU_WIDTH*MAX_NUM_PART_IDXS_IN_CTU_WIDTH]; // for ILRP
     91  UInt                  m_auiRasterToZscan[MAX_NUM_PART_IDXS_IN_CTU_WIDTH*MAX_NUM_PART_IDXS_IN_CTU_WIDTH]; // for ILRP
     92  UInt                  m_auiRasterToPelX[MAX_NUM_PART_IDXS_IN_CTU_WIDTH*MAX_NUM_PART_IDXS_IN_CTU_WIDTH]; // for ILRP
     93  UInt                  m_auiRasterToPelY[MAX_NUM_PART_IDXS_IN_CTU_WIDTH*MAX_NUM_PART_IDXS_IN_CTU_WIDTH]; // for ILRP
    8994  Bool                  m_requireResampling[MAX_LAYERS];   // whether current layer requires resampling
    9095  TComPicYuv*           m_pcFullPelBaseRec[MAX_LAYERS];    // upsampled base layer recontruction for difference domain inter prediction
     
    103108#if REDUCED_ENCODER_MEMORY
    104109#if SVC_EXTENSION
    105   Void          create( const TComSPS &sps, const TComPPS &pps, const Bool bCreateEncoderSourcePicYuv, const Bool bCreateForImmediateReconstruction, const UInt layerId );
     110  Void          create( const TComSPS &sps, const TComPPS &pps, const Bool bCreateEncoderSourcePicYuv, const Bool bCreateForImmediateReconstruction, const UInt layerId, const Bool isILRP = false );
    106111#else
    107112  Void          create( const TComSPS &sps, const TComPPS &pps, const Bool bCreateEncoderSourcePicYuv, const Bool bCreateForImmediateReconstruction );
     
    114119#else
    115120#if SVC_EXTENSION
    116   Void          create( const TComSPS &sps, const TComPPS &pps, const Bool bIsVirtual /*= false*/, const UInt layerId );
     121  Void          create( const TComSPS &sps, const TComPPS &pps, const Bool bIsVirtual /*= false*/, const UInt layerId, const Bool isILRP = false );
    117122#else
    118123  Void          create( const TComSPS &sps, const TComPPS &pps, const Bool bIsVirtual /*= false*/ );
     
    231236  Bool          isCurrAu() const                                            { return m_currAuFlag; }
    232237  Void          setCurrAuFlag(Bool x)                                       { m_currAuFlag = x;    }
     238
     239  UInt*         getZscanToRasterILRP()                                      { return m_auiZscanToRaster; }
     240  UInt*         getRasterToZscanILRP()                                      { return m_auiRasterToZscan; }
    233241#endif //SVC_EXTENSION
    234242};// END CLASS DEFINITION TComPic
  • branches/SHM-dev/source/Lib/TLibCommon/TComRom.cpp

    r1550 r1600  
    378378  }
    379379
     380  uiTempY[0] = 0;
    380381  for ( i = 1; i < uiNumPartInWidth*uiNumPartInHeight; i++ )
    381382  {
     
    732733#endif
    733734
     735#if SVC_EXTENSION
     736Void initRasterToZscan( UInt uiMaxCUWidth, UInt uiMaxCUHeight, UInt uiMaxDepth, UInt* inZscanToRaster, UInt* outRasterToZscan )
     737{
     738  UInt  uiMinCUWidth = uiMaxCUWidth >> ( uiMaxDepth - 1 );
     739  UInt  uiMinCUHeight = uiMaxCUHeight >> ( uiMaxDepth - 1 );
     740
     741  UInt  uiNumPartInWidth = (UInt)uiMaxCUWidth / uiMinCUWidth;
     742  UInt  uiNumPartInHeight = (UInt)uiMaxCUHeight / uiMinCUHeight;
     743
     744  for( UInt i = 0; i < uiNumPartInWidth*uiNumPartInHeight; i++ )
     745  {
     746    outRasterToZscan[inZscanToRaster[i]] = i;
     747  }
     748}
     749
     750Void initRasterToPelXY( UInt uiMaxCUWidth, UInt uiMaxCUHeight, UInt uiMaxDepth, UInt* outRasterToPelX, UInt* outRasterToPelY )
     751{
     752  UInt    i;
     753
     754  UInt* uiTempX = outRasterToPelX;
     755  UInt* uiTempY = outRasterToPelY;
     756
     757  UInt  uiMinCUWidth = uiMaxCUWidth >> ( uiMaxDepth - 1 );
     758  UInt  uiMinCUHeight = uiMaxCUHeight >> ( uiMaxDepth - 1 );
     759
     760  UInt  uiNumPartInWidth = uiMaxCUWidth / uiMinCUWidth;
     761  UInt  uiNumPartInHeight = uiMaxCUHeight / uiMinCUHeight;
     762
     763  uiTempX[0] = 0; uiTempX++;
     764  for( i = 1; i < uiNumPartInWidth; i++ )
     765  {
     766    uiTempX[0] = uiTempX[-1] + uiMinCUWidth; uiTempX++;
     767  }
     768  for( i = 1; i < uiNumPartInHeight; i++ )
     769  {
     770    memcpy( uiTempX, uiTempX - uiNumPartInWidth, sizeof( *uiTempX )*uiNumPartInWidth );
     771    uiTempX += uiNumPartInWidth;
     772  }
     773 
     774  uiTempY[0] = 0;
     775  for( i = 1; i < uiNumPartInWidth*uiNumPartInHeight; i++ )
     776  {
     777    uiTempY[i] = ( i / uiNumPartInWidth ) * uiMinCUWidth;
     778  }
     779}
     780#endif
     781
    734782//! \}
  • branches/SHM-dev/source/Lib/TLibCommon/TComRom.h

    r1550 r1600  
    178178#endif
    179179
     180#if SVC_EXTENSION
     181Void         initRasterToZscan( UInt uiMaxCUWidth, UInt uiMaxCUHeight, UInt uiMaxDepth, UInt* inZscanToRaster, UInt* outRasterToZscan );
     182Void         initRasterToPelXY( UInt uiMaxCUWidth, UInt uiMaxCUHeight, UInt uiMaxDepth, UInt* outRasterToPelX, UInt* outRasterToPelY );
     183#endif
     184
    180185//! \}
    181186
  • branches/SHM-dev/source/Lib/TLibCommon/TypeDef.h

    r1585 r1600  
    9999#define ENCODER_FAST_MODE                1      ///< JCTVC-L0174: enable encoder fast mode. TestMethod 1 is enabled by setting to 1 and TestMethod 2 is enable by setting to 2. By default it is set to 1.
    100100#define HIGHER_LAYER_IRAP_SKIP_FLAG      1      ///< JCTVC-O0199: Indication that higher layer IRAP picture uses skip blocks only
    101 #define LAYER_CTB                        0      ///< enable layer-specific CTB structure
     101#define LAYER_CTB                        1      ///< enable layer-specific CTB structure
    102102
    103103/// SEI messages -------------------------
  • branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r1578 r1600  
    22982298
    22992299#if REDUCED_ENCODER_MEMORY
    2300         m_cIlpPic[j]->create(*sps, *pps, false, true, m_layerId);
    2301 #else
    2302         m_cIlpPic[j]->create(*sps, *pps, true, m_layerId);
     2300        m_cIlpPic[j]->create(*sps, *pps, false, true, m_layerId, true);
     2301#else
     2302        m_cIlpPic[j]->create(*sps, *pps, true, m_layerId, true);
    23032303#endif
    23042304
  • branches/SHM-dev/source/Lib/TLibEncoder/TEncTop.cpp

    r1578 r1600  
    17581758        m_cIlpPic[j] = new TComPic;
    17591759#if REDUCED_ENCODER_MEMORY
    1760         m_cIlpPic[j]->create(m_cSPS, m_cPPS, false, true, m_layerId);
     1760        m_cIlpPic[j]->create(m_cSPS, m_cPPS, false, true, m_layerId, true);
    17611761#else
    1762         m_cIlpPic[j]->create(m_cSPS, m_cPPS, true, m_layerId);
     1762        m_cIlpPic[j]->create(m_cSPS, m_cPPS, true, m_layerId, true);
    17631763#endif
    17641764        for (Int i=0; i<m_cIlpPic[j]->getPicSym()->getNumberOfCtusInFrame(); i++)
Note: See TracChangeset for help on using the changeset viewer.