Ignore:
Timestamp:
11 Jun 2013, 20:35:00 (12 years ago)
Author:
zhang
Message:

Implementation of ARP from QC

Location:
branches/HTM-DEV-0.3-dev2a/source/Lib/TLibEncoder
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-0.3-dev2a/source/Lib/TLibEncoder/TEncCavlc.cpp

    r446 r464  
    741741    }
    742742  }
     743
     744#if H_3D_ARP
     745  for( Int layer = 0; layer <= pcVPS->getMaxLayers() - 1; layer++ )
     746  {
     747    if( ( layer!=0 ) && ( pcVPS->getDepthId(layer)!=1 ) )
     748    {
     749      WRITE_FLAG( pcVPS->getUseAdvRP ( layer ) ? 1 : 0,      "advanced_residual_pred_flag"  );
     750    }
     751    else
     752    {
     753      assert( pcVPS->getUseAdvRP ( layer ) == 0 );
     754    }
     755  }
     756#endif
     757
    743758  WRITE_FLAG( 0,                                             "vps_extension2_flag" );
    744759#else
     
    13491364}
    13501365
     1366#if H_3D_ARP
     1367Void TEncCavlc::codeARPW( TComDataCU* pcCU, UInt uiAbsPartIdx )
     1368{
     1369  assert(0);
     1370}
     1371#endif
     1372
    13511373Void TEncCavlc::codeInterModeFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiEncMode )
    13521374{
  • branches/HTM-DEV-0.3-dev2a/source/Lib/TLibEncoder/TEncCavlc.h

    r446 r464  
    114114  Void codeMergeIndex    ( TComDataCU* pcCU, UInt uiAbsPartIdx );
    115115 
     116#if H_3D_ARP
     117  Void codeARPW          ( TComDataCU* pcCU, UInt uiAbsPartIdx );
     118#endif
     119
    116120  Void codeInterModeFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiEncMode );
    117121  Void codeSplitFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
  • branches/HTM-DEV-0.3-dev2a/source/Lib/TLibEncoder/TEncCfg.h

    r446 r464  
    394394  Bool      m_bUseEstimatedVSD;
    395395  Double    m_dDispCoeff;
     396
     397#if H_3D_ARP
     398  UInt      m_uiUseAdvResPred;
     399  UInt      m_uiARPStepNum;
     400#endif
    396401#endif
    397402
     
    467472  Bool      getMaxTempLayer                 ()                              { return m_maxTempLayer;              }
    468473  Void      setMaxTempLayer                 ( Int maxTempLayer )            { m_maxTempLayer = maxTempLayer;      }
     474
     475#if H_3D_ARP
     476  UInt       getUseAdvRP                    ( )              { return m_uiUseAdvResPred; }
     477  Void       setUseAdvRP                    ( UInt  u )      { m_uiUseAdvResPred = u;    }
     478
     479  UInt       getARPStepNum                  ()               { return m_uiARPStepNum;    }
     480  Void       setARPStepNum                  ( UInt  u )      { m_uiARPStepNum = u;       }
     481#endif
     482
    469483  //======== Transform =============
    470484  Void      setQuadtreeTULog2MaxSize        ( UInt  u )      { m_uiQuadtreeTULog2MaxSize = u; }
  • branches/HTM-DEV-0.3-dev2a/source/Lib/TLibEncoder/TEncCu.cpp

    r455 r464  
    6565  m_ppcTempCU      = new TComDataCU*[m_uhTotalDepth-1];
    6666   
     67#if H_3D_ARP
     68  m_ppcWeightedTempCU = new TComDataCU*[m_uhTotalDepth-1];
     69#endif
     70
    6771  m_ppcPredYuvBest = new TComYuv*[m_uhTotalDepth-1];
    6872  m_ppcResiYuvBest = new TComYuv*[m_uhTotalDepth-1];
     
    8387    m_ppcTempCU[i] = new TComDataCU; m_ppcTempCU[i]->create( uiNumPartitions, uiWidth, uiHeight, false, uiMaxWidth >> (m_uhTotalDepth - 1) );
    8488   
     89#if H_3D_ARP
     90    m_ppcWeightedTempCU[i] = new TComDataCU; m_ppcWeightedTempCU[i]->create( uiNumPartitions, uiWidth, uiHeight, false, uiMaxWidth >> (m_uhTotalDepth - 1) );
     91#endif 
     92
    8593    m_ppcPredYuvBest[i] = new TComYuv; m_ppcPredYuvBest[i]->create(uiWidth, uiHeight);
    8694    m_ppcResiYuvBest[i] = new TComYuv; m_ppcResiYuvBest[i]->create(uiWidth, uiHeight);
     
    124132      m_ppcTempCU[i]->destroy();      delete m_ppcTempCU[i];      m_ppcTempCU[i] = NULL;
    125133    }
     134#if H_3D_ARP
     135    if(m_ppcWeightedTempCU[i])
     136    {
     137      m_ppcWeightedTempCU[i]->destroy(); delete m_ppcWeightedTempCU[i]; m_ppcWeightedTempCU[i] = NULL;
     138    }
     139#endif
    126140    if(m_ppcPredYuvBest[i])
    127141    {
     
    468482      if( rpcTempCU->getSlice()->getSliceType() != I_SLICE )
    469483      {
     484#if H_3D_ARP
     485        if( rpcTempCU->getSlice()->getVPS()->getUseAdvRP(rpcTempCU->getSlice()->getLayerId()) )
     486#else
    470487        if(rpcTempCU->getSlice()->getViewIndex() && !rpcTempCU->getSlice()->getIsDepth()) //Notes from QC: this condition shall be changed once the configuration is completed, e.g. in pcSlice->getSPS()->getMultiviewMvPredMode() || ARP in prev. HTM. Remove this comment once it is done. Remove this comment once it is done.
     488#endif
    471489        {
    472490          PartSize ePartTemp = rpcTempCU->getPartitionSize(0);
     
    12201238  {
    12211239    m_pcEntropyCoder->encodeMergeIndex( pcCU, uiAbsPartIdx );
     1240#if H_3D_ARP
     1241    m_pcEntropyCoder->encodeARPW( pcCU , uiAbsPartIdx );
     1242#endif
    12221243    finishCU(pcCU,uiAbsPartIdx,uiDepth);
    12231244    return;
     
    12411262  // prediction Info ( Intra : direction mode, Inter : Mv, reference idx )
    12421263  m_pcEntropyCoder->encodePredInfo( pcCU, uiAbsPartIdx );
    1243  
     1264#if H_3D_ARP
     1265  m_pcEntropyCoder->encodeARPW( pcCU , uiAbsPartIdx );
     1266#endif
     1267
    12441268  // Encode Coefficients
    12451269  Bool bCodeDQP = getdQPFlag();
     
    13021326  }
    13031327
     1328#if H_3D_ARP
     1329  Int nARPWMax = rpcTempCU->getSlice()->getARPStepNum() - 1;
     1330  if( nARPWMax < 0 || !rpcTempCU->getDvInfo(0).bDV )
     1331  {
     1332    nARPWMax = 0;
     1333  }
     1334  for( Int nARPW=nARPWMax; nARPW >= 0 ; nARPW-- )
     1335  {
     1336    memset( mergeCandBuffer, 0, MRG_MAX_NUM_CANDS*sizeof(Int) );
     1337#endif
    13041338  for( UInt uiNoResidual = 0; uiNoResidual < iteration; ++uiNoResidual )
    13051339  {
     
    13161350          rpcTempCU->setCUTransquantBypassSubParts( m_pcEncCfg->getCUTransquantBypassFlagValue(),     0, uhDepth );
    13171351          rpcTempCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uhDepth ); // interprets depth relative to LCU level
     1352#if H_3D_ARP
     1353          rpcTempCU->setARPWSubParts( (UChar)nARPW , 0 , uhDepth );
     1354#endif
    13181355          rpcTempCU->setMergeFlagSubParts( true, 0, 0, uhDepth ); // interprets depth relative to LCU level
    13191356          rpcTempCU->setMergeIndexSubParts( uiMergeCand, 0, 0, uhDepth ); // interprets depth relative to LCU level
     
    13221359          rpcTempCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( cMvFieldNeighbours[1 + 2*uiMergeCand], SIZE_2Nx2N, 0, 0 ); // interprets depth relative to rpcTempCU level
    13231360
     1361#if H_3D_ARP
     1362          if( nARPW )
     1363          {
     1364            Bool bSignalflag[2] = { true, true };
     1365            for( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx ++ )
     1366            {
     1367              Int iRefIdx = cMvFieldNeighbours[uiRefListIdx + 2*uiMergeCand].getRefIdx();
     1368              RefPicList eRefList = uiRefListIdx ? REF_PIC_LIST_1 : REF_PIC_LIST_0;
     1369              if( iRefIdx < 0 || rpcTempCU->getSlice()->getPOC() == rpcTempCU->getSlice()->getRefPOC(eRefList, iRefIdx) )
     1370              {
     1371                bSignalflag[uiRefListIdx] = false;
     1372              }
     1373            }
     1374            if( !bSignalflag[0] && !bSignalflag[1] )
     1375            {
     1376              rpcTempCU->setARPWSubParts( 0 , 0 , uhDepth );
     1377            }
     1378          }
     1379#endif
    13241380       // do MC
    13251381       m_pcPredSearch->motionCompensation ( rpcTempCU, m_ppcPredYuvTemp[uhDepth] );
     
    14011457  }
    14021458 }
     1459#if H_3D_ARP
     1460 }
     1461#endif
    14031462}
    14041463
     
    14111470{
    14121471  UChar uhDepth = rpcTempCU->getDepth( 0 );
     1472#if H_3D_ARP
     1473  Int iLayerId    = rpcTempCU->getSlice()->getLayerId();
     1474  Bool bFirstTime = true;
     1475  Int nARPWMax    = rpcTempCU->getSlice()->getARPStepNum() - 1;
     1476
     1477  if( nARPWMax < 0 || ePartSize != SIZE_2Nx2N || !rpcTempCU->getDvInfo(0).bDV  )
     1478  {
     1479    nARPWMax = 0;
     1480  }
     1481
     1482  for( Int nARPW = 0; nARPW <= nARPWMax; nARPW++ )
     1483  {
     1484    if( bFirstTime == false && rpcTempCU->getSlice()->getVPS()->getUseAdvRP( iLayerId ) )
     1485    {
     1486      rpcTempCU->initEstData( rpcTempCU->getDepth(0), rpcTempCU->getQP(0) );
     1487    }
     1488#endif
    14131489#if H_3D_VSO // M3
    14141490  if( m_pcRdCost->getUseRenModel() )
     
    14301506  rpcTempCU->setCUTransquantBypassSubParts  ( m_pcEncCfg->getCUTransquantBypassFlagValue(),      0, uhDepth );
    14311507 
     1508#if H_3D_ARP
     1509  rpcTempCU->setARPWSubParts( (UChar)nARPW , 0 , uhDepth );
     1510#endif
     1511
     1512#if H_3D_ARP
     1513  if( bFirstTime == false && nARPWMax )
     1514  {
     1515    rpcTempCU->copyPartFrom( m_ppcWeightedTempCU[uhDepth] , 0 , uhDepth );
     1516    rpcTempCU->setARPWSubParts( (UChar)nARPW , 0 , uhDepth );
     1517
     1518    m_pcPredSearch->motionCompensation( rpcTempCU , m_ppcPredYuvTemp[uhDepth] );
     1519
     1520    if(rpcTempCU->getPartitionSize(0)==SIZE_2Nx2N)
     1521    {
     1522      Bool bSignalflag[2] = { true, true };
     1523      for(UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx ++ )
     1524      {
     1525        RefPicList eRefList = uiRefListIdx ? REF_PIC_LIST_1 : REF_PIC_LIST_0;
     1526        Int iRefIdx = rpcTempCU->getCUMvField(eRefList)->getRefIdx(0);
     1527        if( iRefIdx < 0 || rpcTempCU->getSlice()->getPOC() == rpcTempCU->getSlice()->getRefPOC(eRefList, iRefIdx) )
     1528        {
     1529          bSignalflag[uiRefListIdx] = false;
     1530        }
     1531      }
     1532      if( !bSignalflag[0] && !bSignalflag[1] )
     1533      {
     1534        rpcTempCU->setARPWSubParts( 0 , 0 , uhDepth );
     1535      }
     1536    }
     1537  }
     1538  else
     1539  {
     1540    bFirstTime = false;
     1541#endif
    14321542#if AMP_MRG
    14331543  rpcTempCU->setMergeAMP (true);
     
    14361546  m_pcPredSearch->predInterSearch ( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcRecoYuvTemp[uhDepth] );
    14371547#endif
     1548#if H_3D_ARP
     1549   if( nARPWMax )
     1550   {
     1551     m_ppcWeightedTempCU[uhDepth]->copyPartFrom( rpcTempCU , 0 , uhDepth );
     1552
     1553     Bool bSignalflag[2] = { true, true };
     1554     for(UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx ++ )
     1555     {
     1556       RefPicList eRefList = uiRefListIdx ? REF_PIC_LIST_1 : REF_PIC_LIST_0;
     1557       Int iRefIdx = rpcTempCU->getCUMvField(eRefList)->getRefIdx(0);
     1558       if( iRefIdx < 0 || rpcTempCU->getSlice()->getPOC() == rpcTempCU->getSlice()->getRefPOC(eRefList, iRefIdx) )
     1559       {
     1560         bSignalflag[uiRefListIdx] = false;
     1561       }
     1562     }
     1563     if( !bSignalflag[0] && !bSignalflag[1])
     1564     {
     1565       rpcTempCU->setARPWSubParts( 0 , 0 , uhDepth );
     1566     }
     1567   }
     1568  }
     1569#endif
    14381570
    14391571#if AMP_MRG
    14401572  if ( !rpcTempCU->getMergeAMP() )
    14411573  {
     1574#if H_3D_ARP
     1575    if( nARPWMax )
     1576    {
     1577      continue;
     1578    }
     1579    else
     1580#endif
    14421581    return;
    14431582  }
     
    14661605  xCheckDQP( rpcTempCU );
    14671606  xCheckBestMode(rpcBestCU, rpcTempCU, uhDepth);
     1607#if H_3D_ARP
     1608  }
     1609#endif
    14681610}
    14691611
  • branches/HTM-DEV-0.3-dev2a/source/Lib/TLibEncoder/TEncCu.h

    r324 r464  
    6969  TComDataCU**            m_ppcBestCU;      ///< Best CUs in each depth
    7070  TComDataCU**            m_ppcTempCU;      ///< Temporary CUs in each depth
     71#if H_3D_ARP
     72  TComDataCU**            m_ppcWeightedTempCU;
     73#endif
    7174  UChar                   m_uhTotalDepth;
    7275 
  • branches/HTM-DEV-0.3-dev2a/source/Lib/TLibEncoder/TEncEntropy.cpp

    r446 r464  
    157157}
    158158
     159#if H_3D_ARP
     160Void TEncEntropy::encodeARPW( TComDataCU* pcCU, UInt uiAbsPartIdx )
     161{
     162  if( !pcCU->getSlice()->getARPStepNum() || pcCU->isIntra( uiAbsPartIdx ) )
     163  {
     164    return;
     165  }
     166
     167  if ( pcCU->getPartitionSize(uiAbsPartIdx)!=SIZE_2Nx2N )
     168  {
     169    assert(pcCU->getARPW (uiAbsPartIdx) == 0);
     170  }
     171  else
     172  {
     173    m_pcEntropyCoderIf->codeARPW( pcCU, uiAbsPartIdx );
     174  }
     175}
     176#endif
     177
    159178/** encode prediction mode
    160179 * \param pcCU
  • branches/HTM-DEV-0.3-dev2a/source/Lib/TLibEncoder/TEncEntropy.h

    r446 r464  
    8888  virtual Void codeMergeFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
    8989  virtual Void codeMergeIndex    ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
     90#if H_3D_ARP
     91  virtual Void codeARPW          ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0;
     92#endif
    9093  virtual Void codeSplitFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0;
    9194 
     
    169172  Void encodeMergeFlag    ( TComDataCU* pcCU, UInt uiAbsPartIdx );
    170173  Void encodeMergeIndex   ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
     174#if H_3D_ARP
     175  Void encodeARPW         ( TComDataCU* pcCU, UInt uiAbspartIdx );
     176#endif
    171177  Void encodePredMode          ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false );
    172178  Void encodePartSize          ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, Bool bRD = false );
  • branches/HTM-DEV-0.3-dev2a/source/Lib/TLibEncoder/TEncGOP.cpp

    r455 r464  
    4747#include "TLibCommon/NAL.h"
    4848#include "NALwrite.h"
     49#if H_3D_ARP
     50#include "../../App/TAppEncoder/TAppEncTop.h"
     51#endif
    4952#include <time.h>
    5053#include <math.h>
     
    670673#if H_MV   
    671674    pcSlice->setRefPicList( rcListPic, m_refPicSetInterLayer );
     675#if H_3D_ARP
     676    pcSlice->setARPStepNum();
     677    if(pcSlice->getARPStepNum() > 1)
     678    {
     679      for(Int iLayerId = 0; iLayerId < getLayerId(); iLayerId ++ )
     680      {
     681        Int  iViewIdx =   pcSlice->getVPS()->getViewIndex(iLayerId);
     682        Bool bIsDepth = ( pcSlice->getVPS()->getDepthId  ( iLayerId ) == 1 );
     683        if( iViewIdx<getViewIndex() && !bIsDepth )
     684        {
     685          pcSlice->setBaseViewRefPicList( m_pcEncTop->getTAppEncTop()->getTEncTop( iLayerId )->getListPic(), iViewIdx );
     686        }
     687      }
     688    }
     689#endif
    672690#else
    673691    pcSlice->setRefPicList ( rcListPic );
  • branches/HTM-DEV-0.3-dev2a/source/Lib/TLibEncoder/TEncSbac.cpp

    r446 r464  
    6060, m_cCUMergeFlagExtSCModel    ( 1,             1,               NUM_MERGE_FLAG_EXT_CTX        , m_contextModels + m_numContextModels, m_numContextModels)
    6161, m_cCUMergeIdxExtSCModel     ( 1,             1,               NUM_MERGE_IDX_EXT_CTX         , m_contextModels + m_numContextModels, m_numContextModels)
     62#if H_3D_ARP
     63, m_cCUPUARPW                 ( 1,             1,               NUM_ARPW_CTX                  , m_contextModels + m_numContextModels, m_numContextModels)
     64#endif
    6265, m_cCUPartSizeSCModel        ( 1,             1,               NUM_PART_SIZE_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
    6366, m_cCUPredModeSCModel        ( 1,             1,               NUM_PRED_MODE_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
     
    111114  m_cCUMergeFlagExtSCModel.initBuffer    ( eSliceType, iQp, (UChar*)INIT_MERGE_FLAG_EXT);
    112115  m_cCUMergeIdxExtSCModel.initBuffer     ( eSliceType, iQp, (UChar*)INIT_MERGE_IDX_EXT);
     116#if H_3D_ARP
     117  m_cCUPUARPW.initBuffer                 ( eSliceType, iQp, (UChar*)INIT_ARPW );
     118#endif
    113119  m_cCUPartSizeSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_PART_SIZE );
    114120  m_cCUAMPSCModel.initBuffer             ( eSliceType, iQp, (UChar*)INIT_CU_AMP_POS );
     
    214220  m_cCUMergeFlagExtSCModel.initBuffer    ( eSliceType, iQp, (UChar*)INIT_MERGE_FLAG_EXT);
    215221  m_cCUMergeIdxExtSCModel.initBuffer     ( eSliceType, iQp, (UChar*)INIT_MERGE_IDX_EXT);
     222#if H_3D_ARP
     223  m_cCUPUARPW.initBuffer                 ( eSliceType, iQp, (UChar*)INIT_ARPW );
     224#endif
    216225  m_cCUPartSizeSCModel.initBuffer        ( eSliceType, iQp, (UChar*)INIT_PART_SIZE );
    217226  m_cCUAMPSCModel.initBuffer             ( eSliceType, iQp, (UChar*)INIT_CU_AMP_POS );
     
    589598  DTRACE_CABAC_T( "\n" );
    590599}
     600
     601#if H_3D_ARP
     602Void TEncSbac::codeARPW( TComDataCU* pcCU, UInt uiAbsPartIdx )
     603{
     604  Int  iW = (Int)pcCU->getARPW( uiAbsPartIdx );
     605  Int  iMaxW = pcCU->getSlice()->getARPStepNum() - 1;
     606  assert( iMaxW > 0);
     607
     608  Int nOffset = pcCU->getCTXARPWFlag(uiAbsPartIdx);
     609  Int nBinNum = iW + ( iW != iMaxW );
     610  m_pcBinIf->encodeBin( iW ? 1 : 0 , m_cCUPUARPW.get( 0, 0, 0 + nOffset ) );
     611  if( nBinNum > 1 )
     612  {
     613     m_pcBinIf->encodeBin( ( iW == iMaxW ) ? 1 : 0, m_cCUPUARPW.get( 0, 0, 3 ) );
     614  }
     615}
     616#endif
    591617
    592618Void TEncSbac::codeSplitFlag   ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
  • branches/HTM-DEV-0.3-dev2a/source/Lib/TLibEncoder/TEncSbac.h

    r446 r464  
    134134  Void codeMergeFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx );
    135135  Void codeMergeIndex    ( TComDataCU* pcCU, UInt uiAbsPartIdx );
     136#if H_3D_ARP
     137  Void codeARPW          ( TComDataCU* pcCU, UInt uiAbsPartIdx );
     138#endif
    136139  Void codeSplitFlag     ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
    137140  Void codeMVPIdx        ( TComDataCU* pcCU, UInt uiAbsPartIdx, RefPicList eRefList );
     
    181184  ContextModel3DBuffer m_cCUMergeFlagExtSCModel;
    182185  ContextModel3DBuffer m_cCUMergeIdxExtSCModel;
     186#if H_3D_ARP
     187  ContextModel3DBuffer m_cCUPUARPW;
     188#endif
    183189  ContextModel3DBuffer m_cCUPartSizeSCModel;
    184190  ContextModel3DBuffer m_cCUPredModeSCModel;
  • branches/HTM-DEV-0.3-dev2a/source/Lib/TLibEncoder/TEncSearch.cpp

    r456 r464  
    47414741    m_pcEntropyCoder->encodeSkipFlag(pcCU, 0, true);
    47424742    m_pcEntropyCoder->encodeMergeIndex( pcCU, 0, true );
    4743    
     4743#if H_3D_ARP
     4744    m_pcEntropyCoder->encodeARPW( pcCU, 0 );
     4745#endif
    47444746    uiBits = m_pcEntropyCoder->getNumberOfWrittenBits();
    47454747    pcCU->getTotalBits()       = uiBits;
     
    61506152    m_pcEntropyCoder->encodeSkipFlag(pcCU, 0, true);
    61516153    m_pcEntropyCoder->encodeMergeIndex(pcCU, 0, true);
     6154#if H_3D_ARP
     6155    m_pcEntropyCoder->encodeARPW( pcCU, 0 );
     6156#endif
    61526157    ruiBits += m_pcEntropyCoder->getNumberOfWrittenBits();
    61536158  }
     
    61636168    m_pcEntropyCoder->encodePartSize( pcCU, 0, pcCU->getDepth(0), true );
    61646169    m_pcEntropyCoder->encodePredInfo( pcCU, 0, true );
     6170#if H_3D_ARP
     6171    m_pcEntropyCoder->encodeARPW( pcCU , 0 );
     6172#endif
    61656173    Bool bDummy = false;
    61666174    m_pcEntropyCoder->encodeCoeff   ( pcCU, 0, pcCU->getDepth(0), pcCU->getWidth(0), pcCU->getHeight(0), bDummy );
  • branches/HTM-DEV-0.3-dev2a/source/Lib/TLibEncoder/TEncTop.h

    r446 r464  
    6363// Class definition
    6464// ====================================================================================================================
     65
     66#if H_3D_ARP
     67class TAppEncTop;
     68#endif
    6569
    6670/// encoder class
     
    124128  TComScalingList         m_scalingList;                 ///< quantization matrix information
    125129  TEncRateCtrl            m_cRateCtrl;                    ///< Rate control class
    126  
     130
     131#if H_3D_ARP
     132  TAppEncTop*             m_pcTAppEncTop;
     133#endif
     134
    127135#if H_MV
    128136  TEncAnalyze             m_cAnalyzeAll;
     
    205213  Void                    setIvPicLists         ( TComPicLists* picLists) { m_ivPicLists = picLists; }
    206214#endif
     215#if H_3D_ARP
     216  Void            setTAppEncTop( TAppEncTop* pcTAppEncTop ) { m_pcTAppEncTop = pcTAppEncTop; }
     217  TAppEncTop*     getTAppEncTop()                           { return  m_pcTAppEncTop; }
     218#endif
    207219  // -------------------------------------------------------------------------------------------------------------------
    208220  // encoder function
Note: See TracChangeset for help on using the changeset viewer.