Changeset 210 in 3DVCSoftware for trunk/source/Lib/TLibCommon


Ignore:
Timestamp:
11 Dec 2012, 18:52:43 (12 years ago)
Author:
tech
Message:

Reintegrated /branches/HTM-5.0-dev0 rev. 207.

Location:
trunk/source/Lib/TLibCommon
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibCommon/CommonDef.h

    r208 r210  
    5858
    5959#define HM_VERSION        "6.1"
    60 #define NV_VERSION        "5.0.1"                  ///< Current software version
     60#define NV_VERSION        "5.0"                  ///< Current software version
    6161
    6262// ====================================================================================================================
     
    185185// VPS constants
    186186// ====================================================================================================================
     187#if QC_MVHEVC_B0046
     188#define MAX_LAYER_NUM                     MAX_VIEW_NUM
     189#endif
    187190#if VIDYO_VPS_INTEGRATION
    188191#define MAX_LAYER_NUM                     MAX_VIEW_NUM
     
    480483  NAL_UNIT_CODED_SLICE,
    481484#if H0566_TLA
     485#if QC_REM_IDV_B0046
     486  NAL_UNIT_RESERVED,
     487#else
    482488  NAL_UNIT_CODED_SLICE_IDV,
     489#endif
    483490  NAL_UNIT_CODED_SLICE_TLA,
    484491  NAL_UNIT_CODED_SLICE_CRA,
     
    508515  NAL_UNIT_RESERVED_23,
    509516  NAL_UNIT_UNSPECIFIED_24,
    510 #if VIDYO_VPS_INTEGRATION
     517#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    511518  NAL_UNIT_VPS,
    512519#else
  • trunk/source/Lib/TLibCommon/NAL.h

    r100 r210  
    5151  NalRefIdc   m_nalRefIDC;   ///< nal_ref_idc
    5252#endif
    53 #if VIDYO_VPS_INTEGRATION
     53#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    5454  unsigned    m_layerId;
    5555  unsigned    m_temporalId;  ///< temporal_id
     
    6969    NalUnitType nalUnitType,
    7070    Bool        nalRefFlag,
    71 #if !VIDYO_VPS_INTEGRATION    
     71#if !VIDYO_VPS_INTEGRATION & !QC_MVHEVC_B0046    
    7272    Int         viewId,
    7373    Bool        isDepth,
     
    7878    :m_nalUnitType (nalUnitType)
    7979    ,m_nalRefFlag  (nalRefFlag)
    80 #if !VIDYO_VPS_INTEGRATION
     80#if !VIDYO_VPS_INTEGRATION & !QC_MVHEVC_B0046
    8181    ,m_viewId      (viewId)
    8282    ,m_isDepth     (isDepth)
     
    139139    return m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR
    140140#if H0566_TLA
     141#if !QC_REM_IDV_B0046   
    141142        || m_nalUnitType == NAL_UNIT_CODED_SLICE_IDV
     143#endif
    142144        || m_nalUnitType == NAL_UNIT_CODED_SLICE_CRA
    143145        || m_nalUnitType == NAL_UNIT_CODED_SLICE_TLA
  • trunk/source/Lib/TLibCommon/TComDataCU.cpp

    r205 r210  
    43314331  {
    43324332    // col [2]
     4333#if !QC_TMVP_IDX_MOD_B0046
    43334334    Int iRefIdxSkip[2] = {-1, -1};
    43344335    for (Int i=0; i<2; i++)
     
    43504351      iRefIdxSkip[i] = (iRefIdxTmp != -1) ? iRefIdxTmp : 0;
    43514352    }
     4353#endif
    43524354    //>> MTK colocated-RightBottom
    43534355    UInt uiPartIdxRB;
     
    43614363
    43624364    TComMv cColMv;
     4365#if QC_TMVP_IDX_MOD_B0046
     4366    Int iRefIdx = 0;
     4367#else
    43634368    Int iRefIdx;
    4364 
     4369#endif
    43654370    if      ( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelX() + g_auiRasterToPelX[uiAbsPartIdxTmp] + m_pcPic->getMinCUWidth() ) >= m_pcSlice->getSPS()->getPicWidthInLumaSamples() )  // image boundary check
    43664371    {
     
    43954400      }
    43964401    }
     4402#if !QC_TMVP_IDX_MOD_B0046
    43974403    iRefIdx = iRefIdxSkip[0];
    4398 
     4404#else
     4405    iRefIdx = 0;
     4406#endif
    43994407    Bool bExistMV = false;
    44004408    UInt uiPartIdxCenter;
     
    44144422      if ( getSlice()->isInterB() )
    44154423      {       
     4424#if !QC_TMVP_IDX_MOD_B0046
    44164425        iRefIdx = iRefIdxSkip[1];
     4426#else
     4427        iRefIdx = 0;
     4428#endif
    44174429        bExistMV = uiLCUIdx >= 0 && xGetColMVP( REF_PIC_LIST_1, uiLCUIdx, uiAbsPartAddr, cColMv, iRefIdx);
    44184430        if( bExistMV == false )
     
    64276439  if( pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) >= 0 )
    64286440  {
     6441#if QC_IV_AS_LT_B0046
     6442    Bool bIsCurrRefLongTerm = m_pcSlice->getRefPic( eRefPicList, iRefIdx)->getIsLongTerm();
     6443    Bool bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx))->getIsLongTerm();
     6444    iNeibRefPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) );
     6445    if ( (bIsCurrRefLongTerm == bIsNeibRefLongTerm) && (iNeibRefPOC == iCurrRefPOC) )
     6446#else
    64296447    if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) )
    64306448    {
     
    64336451    iNeibRefPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) );
    64346452    if( iNeibRefPOC == iCurrRefPOC ) // Same Reference Frame But Diff List//
     6453#endif
    64356454    {
    64366455      TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList2nd)->getMv(uiIdx);
     
    65696588  Int iNeibRefPOC;
    65706589
     6590#if QC_IV_AS_LT_B0046
     6591  Bool bIsCurrRefLongTerm = m_pcSlice->getRefPic( eRefPicList, iRefIdx)->getIsLongTerm();
     6592  Bool bIsNeibRefLongTerm = false;
     6593#endif
    65716594  if( pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) >= 0 )
    65726595  {
    65736596    iNeibRefPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) );
     6597#if QC_IV_AS_LT_B0046
     6598    bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx))->getIsLongTerm() ;
     6599    if ( (bIsCurrRefLongTerm == bIsNeibRefLongTerm) && (iNeibRefPOC == iCurrRefPOC) )
     6600#else
    65746601    if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) )
    65756602      return false;
    65766603    if( iNeibRefPOC == iCurrRefPOC ) // Same Reference Frame But Diff List//
     6604#endif
    65776605    {
    65786606      TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList2nd)->getMv(uiIdx);
     
    65926620    TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
    65936621    TComMv rcMv;
    6594 
     6622#if QC_IV_AS_LT_B0046
     6623    bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx))->getIsLongTerm();
     6624    if ( bIsCurrRefLongTerm == bIsNeibRefLongTerm )
     6625    {
     6626#else
    65956627    if( pcTmpCU->getSlice()->getRefViewId( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) )
    65966628    {
    65976629      return false;
    65986630    }
    6599 
     6631#endif
    66006632    Int iScale = xGetDistScaleFactor( iCurrPOC, iCurrRefPOC, iNeibPOC, iNeibRefPOC );
    66016633    if ( iScale == 4096 )
     
    66126644    pInfo->m_acMvCand[ pInfo->iN++] = rcMv;
    66136645    return true;
     6646#if QC_IV_AS_LT_B0046
     6647    }
     6648#endif
    66146649  }
    66156650  //---------------------- V2(END) --------------------//
     
    66196654    TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList2nd)->getMv(uiIdx);
    66206655    TComMv rcMv;
    6621 
     6656#if QC_IV_AS_LT_B0046
     6657    bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx))->getIsLongTerm(); ;
     6658    if ( bIsCurrRefLongTerm == bIsNeibRefLongTerm )
     6659    {
     6660#else
    66226661    if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) )
    66236662    {
    66246663      return false;
    66256664    }
    6626 
     6665#endif
    66276666    Int iScale = xGetDistScaleFactor( iCurrPOC, iCurrRefPOC, iNeibPOC, iNeibRefPOC );
    66286667    if ( iScale == 4096 )
     
    66396678    pInfo->m_acMvCand[ pInfo->iN++] = rcMv;
    66406679    return true;
     6680#if QC_IV_AS_LT_B0046
     6681  }
     6682#endif
    66416683  }
    66426684  //---------------------- V3(END) --------------------//
     
    67496791  Int iColPOC, iColRefPOC, iCurrPOC, iCurrRefPOC, iScale;
    67506792#if SONY_COLPIC_AVAILABILITY
     6793#if QC_IV_AS_LT_B0046
     6794  Int iColViewOrderIdx, iCurrViewOrderIdx, iCurrRefViewOrderIdx;
     6795#else
    67516796  Int iColViewOrderIdx, iColRefViewOrderIdx, iCurrViewOrderIdx, iCurrRefViewOrderIdx;
     6797#endif
    67526798#endif
    67536799  TComMv cColMv;
     
    67806826  }
    67816827
    6782 #if !SONY_COLPIC_AVAILABILITY
     6828#if !SONY_COLPIC_AVAILABILITY&!QC_IV_AS_LT_B0046
    67836829  if( m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getViewId() != m_pcSlice->getViewId() )
    67846830    return false;
     
    68086854  iColRefPOC = pColCU->getSlice()->getRefPOC(eColRefPicList, iColRefIdx);
    68096855
     6856#if !QC_IV_AS_LT_B0046
    68106857#if SONY_COLPIC_AVAILABILITY
    68116858  iColRefViewOrderIdx = pColCU->getSlice()->getRefPic( eColRefPicList, pColCU->getCUMvField(eColRefPicList)->getRefIdx(uiAbsPartAddr))->getViewOrderIdx();
     
    68166863  }
    68176864#endif
    6818 
     6865#else
     6866  Bool bIsCurrRefLongTerm = m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getIsLongTerm();
     6867  Bool bIsColRefLongTerm = pColCU->getSlice()->getWasLongTerm(eColRefPicList, iColRefIdx);
     6868  if(bIsCurrRefLongTerm != bIsColRefLongTerm)
     6869  {
     6870    assert( ((iColPOC == iColRefPOC)&&(iCurrPOC != iCurrRefPOC))||((iColPOC != iColRefPOC)&&(iCurrPOC == iCurrRefPOC)));
     6871    return false;
     6872  }
     6873#endif
    68196874  cColMv = pColCU->getCUMvField(eColRefPicList)->getMv(uiAbsPartAddr);
    68206875
    68216876  iCurrRefPOC = m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getPOC();
     6877#if QC_IV_AS_LT_B0046
     6878  {
     6879    assert( ((iColPOC != iColRefPOC)&&(iCurrPOC != iCurrRefPOC))||((iColPOC == iColRefPOC)&&(iCurrPOC == iCurrRefPOC)));
     6880    if(!bIsCurrRefLongTerm)  //short-term
     6881    {
     6882      iScale = xGetDistScaleFactor(iCurrPOC, iCurrRefPOC, iColPOC, iColRefPOC);
     6883      if ( iScale == 4096 )
     6884      {
     6885        rcMv = cColMv;
     6886      }
     6887      else
     6888      {
     6889        rcMv = cColMv.scaleMv( iScale );
     6890      }
     6891    }else
     6892#if QC_MVHEVC_B0046
     6893      rcMv = cColMv; //inter-view
     6894#else
     6895    {
     6896#if SONY_COLPIC_AVAILABILITY
     6897      Int iColRefViewOrderIdx = pColCU->getSlice()->getRefPic( eColRefPicList, pColCU->getCUMvField(eColRefPicList)->getRefIdx(uiAbsPartAddr))->getViewOrderIdx();
     6898      iScale = xGetDistScaleFactor(iCurrViewOrderIdx, iCurrRefViewOrderIdx, iColViewOrderIdx, iColRefViewOrderIdx);
     6899      if ( iScale == 4096 )
     6900      {
     6901        rcMv = cColMv;
     6902      }
     6903      else
     6904      {
     6905        rcMv = cColMv.scaleMv( iScale );
     6906      }
     6907#else
     6908      return false;
     6909#endif
     6910    }
     6911#endif
     6912  }
     6913#else
    68226914#if SONY_COLPIC_AVAILABILITY
    68236915  iScale = 0;
     
    68416933    rcMv = cColMv.scaleMv( iScale );
    68426934  }
    6843 
     6935#endif
    68446936  return true;
    68456937}
  • trunk/source/Lib/TLibCommon/TComDepthMapGenerator.h

    r189 r210  
    239239  Bool              m_bDecoder;
    240240  TComPrediction*   m_pcPrediction;
    241 #if VIDYO_VPS_INTEGRATION
     241#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    242242  TComVPSAccess*    m_pcVPSAccess;
    243243#endif
  • trunk/source/Lib/TLibCommon/TComPic.cpp

    r189 r210  
    519519      UInt uiTempLayer = currSlice->getRefPic(eRefPicList, lpRef)->getCurrSlice()->getTLayer();
    520520      Int iTempDiff = (iTempPoc > iPOCCurr) ? (iTempPoc - iPOCCurr): (iPOCCurr - iTempPoc);
     521#if QC_REM_IDV_B0046
     522      TComSlice* refSlice = currSlice->getRefPic(eRefPicList, lpRef)->getCurrSlice();
     523      bRAP = (refSlice->getSPS()->getViewId() && (refSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || refSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA))? 1: 0;     
     524#else
    521525      bRAP = (currSlice->getRefPic(eRefPicList, lpRef)->getCurrSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDV? 1:0);
     526#endif
    522527      if( bRAP)
    523528      {
  • trunk/source/Lib/TLibCommon/TComPic.h

    r189 r210  
    140140  TComSlice*    getSlice(Int i)       { return  m_apcPicSym->getSlice(i);  }
    141141  TComSlice*    getCurrSlice()        { return  m_apcPicSym->getSlice(m_uiCurrSliceIdx);  }
    142 #if VIDYO_VPS_INTEGRATION
     142#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    143143  TComVPS*      getVPS()              { return  m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getVPS();  }
    144144#endif
  • trunk/source/Lib/TLibCommon/TComPrediction.cpp

    r189 r210  
    924924}
    925925#endif
     926#if !QC_MVHEVC_B0046
    926927  Int     ixFrac      = iHor & 0x3;
    927928  Int     iyFrac      = iVer & 0x3;
     929#endif
    928930  Int     iRefOffset  = ( iHor >> 2 ) + ( iVer >> 2 ) * iRefStride;
    929931#endif
  • trunk/source/Lib/TLibCommon/TComPrediction.h

    r189 r210  
    105105#else
    106106  Void xPredInterLumaBlk  ( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi );
     107  Void xPredInterChromaBlk( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi );
    107108#endif
    108   Void xPredInterChromaBlk( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi );
    109109  Void xWeightedAverage         ( TComDataCU* pcCU, TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, Int iRefIdx0, Int iRefIdx1, UInt uiPartAddr, Int iWidth, Int iHeight, TComYuv*& rpcYuvDst );
    110110 
  • trunk/source/Lib/TLibCommon/TComSlice.cpp

    r189 r210  
    4444
    4545TComSlice::TComSlice()
     46#if QC_MVHEVC_B0046
     47: m_iPPSId                        ( 0  )
     48#else
    4649: m_iPPSId                        ( -1 )
     50#endif
    4751, m_iPOC                          ( 0 )
    4852, m_iLastIDR                      ( 0 )
     
    142146  resetWpScalingLC(m_weightPredTableLC);
    143147  initWpAcDcParam();
     148#if QC_IV_AS_LT_B0046
     149  for(Int iNumCount = 0; iNumCount < MAX_NUM_REF+1; iNumCount++)
     150  {
     151     m_bWasLongTerm[0][iNumCount] = false;
     152     m_bWasLongTerm[1][iNumCount] = false;
     153  }
     154#endif
    144155}
    145156
     
    472483  {
    473484    pcRefPic = xGetInterViewRefPic( rapcInterViewRefPics, getViewId() + m_pcSPS->getUsableInterViewRef(i) );
     485#if QC_IV_AS_LT_B0046
     486    pcRefPic->setIsLongTerm( 1 );
     487#else
    474488    pcRefPic->setIsLongTerm( 0 );
     489#endif
    475490    pcRefPic->getPicYuvRec()->extendPicBorder();
    476491    RefPicSetIvCurr[NumPocIvCurr] = pcRefPic;
     
    513528  {
    514529    m_apcRefPicList[0][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL0() ? refPicListTemp0[ m_RefPicListModification.getRefPicSetIdxL0(cIdx) ] : refPicListTemp0[cIdx];
     530#if QC_IV_AS_LT_B0046
     531    setWasLongTerm(m_apcRefPicList[0][cIdx]->getIsLongTerm(), REF_PIC_LIST_0, cIdx);
     532#endif
    515533  }
    516534  if( m_eSliceType == P_SLICE )
     
    524542    {
    525543      m_apcRefPicList[1][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL1() ? refPicListTemp1[ m_RefPicListModification.getRefPicSetIdxL1(cIdx) ] : refPicListTemp1[cIdx];
     544#if QC_IV_AS_LT_B0046
     545      setWasLongTerm(m_apcRefPicList[1][cIdx]->getIsLongTerm(), REF_PIC_LIST_1, cIdx);
     546#endif
    526547    }
    527548  }
     
    876897    for(i=0;i<pReferencePictureSet->getNumberOfPositivePictures()+pReferencePictureSet->getNumberOfNegativePictures();i++)
    877898    {
     899#if QC_IV_AS_LT_B0046
     900       if( rpcPic->getPicSym()->getSlice(0)->getPOC() == this->getPOC() + pReferencePictureSet->getDeltaPOC(i))
     901#else
    878902      if(!rpcPic->getIsLongTerm() && rpcPic->getPicSym()->getSlice(0)->getPOC() == this->getPOC() + pReferencePictureSet->getDeltaPOC(i))
     903#endif
    879904      {
    880905        isReference = 1;
     
    886911    for(;i<pReferencePictureSet->getNumberOfPictures();i++)
    887912    {
     913#if QC_IV_AS_LT_B0046
     914     if( (rpcPic->getPicSym()->getSlice(0)->getPOC()%(1<<rpcPic->getPicSym()->getSlice(0)->getSPS()->getBitsForPOC())) == pReferencePictureSet->getPOC(i)%(1<<rpcPic->getPicSym()->getSlice(0)->getSPS()->getBitsForPOC()))
     915#else
    888916      if(rpcPic->getIsLongTerm() && (rpcPic->getPicSym()->getSlice(0)->getPOC()%(1<<rpcPic->getPicSym()->getSlice(0)->getSPS()->getBitsForPOC())) == pReferencePictureSet->getPOC(i)%(1<<rpcPic->getPicSym()->getSlice(0)->getSPS()->getBitsForPOC()))
     917#endif
    889918      {
    890919        isReference = 1;
     
    13901419// Video parameter set (VPS)
    13911420// ------------------------------------------------------------------------------------------------
     1421#if QC_MVHEVC_B0046
     1422TComVPS::TComVPS()
     1423: m_VPSId                     (  0)
     1424, m_uiMaxTLayers              (  1)
     1425, m_uiMaxLayers               (  1)
     1426, m_bTemporalIdNestingFlag    (false)
     1427, m_uiNumHRDParameter         (  0)
     1428, m_numAddiLayerOperationPoints (2)
     1429, m_numAddiProLevelSets       (  1)
     1430{
     1431  for( Int i = 0; i < MAX_LAYER_NUM; i++)
     1432  {
     1433  m_numOpLayerIdMinus1[i] = 0;
     1434  if(i)
     1435      m_numDirectRefLayer[i] = 1;
     1436  else
     1437    m_numDirectRefLayer[i] = 0;
     1438  for( Int j = 0; j < MAX_LAYER_NUM; j++)
     1439  {
     1440    m_numDirectRefID[i][j] = 0;
     1441    m_numOpLayerId[i][j]   = 0;
     1442  }
     1443    m_uiViewId[i] = 0;
     1444    m_iViewOrderIdx[i] = 0;
     1445  }
     1446 
     1447  for( Int i = 0; i < MAX_TLAYER; i++)
     1448  {
     1449    m_numReorderPics[i] = 0;
     1450    m_uiMaxDecPicBuffering[i] = 0;
     1451    m_uiMaxLatencyIncrease[i] = 0;
     1452  }
     1453}
     1454
     1455TComVPS::~TComVPS()
     1456{
     1457}
     1458#else
    13921459#if VIDYO_VPS_INTEGRATION
    13931460TComVPS::TComVPS()
     
    14221489
    14231490#endif
    1424 
     1491#endif
    14251492
    14261493// ------------------------------------------------------------------------------------------------
     
    14291496
    14301497TComSPS::TComSPS()
    1431 #if VIDYO_VPS_INTEGRATION
     1498#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    14321499: m_VPSId                     (  0)
    14331500, m_SPSId                     (  0)
     
    14811548, m_bLCMod                    (false)
    14821549#if H0412_REF_PIC_LIST_RESTRICTION
     1550#if QC_MVHEVC_B0046
     1551, m_restrictedRefPicListsFlag   (  0)
     1552#else
    14831553, m_restrictedRefPicListsFlag   (  1)
     1554#endif
    14841555, m_listsModificationPresentFlag(  0)
    14851556#endif
     
    15221593#if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX
    15231594, m_bUseDMM                   (false)
     1595#endif
     1596#if FLEX_CODING_ORDER_M23723 && HHI_DMM_PRED_TEX
     1597, m_bUseDMM34                   (false)
    15241598#endif
    15251599#if OL_QTLIMIT_PREDCODING_B0068
     
    17341808TComSPS::initMultiviewSPS( UInt uiViewId, Int iViewOrderIdx, UInt uiCamParPrecision, Bool bCamParSlice, Int** aaiScale, Int** aaiOffset )
    17351809{
     1810#if !QC_MVHEVC_B0046
    17361811  AOT( uiViewId == 0 && iViewOrderIdx != 0 );
    17371812  AOT( uiViewId != 0 && iViewOrderIdx == 0 );
    17381813  AOT( uiViewId != 0 && !bCamParSlice && ( aaiScale == 0 || aaiOffset == 0 ) );
    1739 
     1814#endif
    17401815  m_uiViewId              = uiViewId;
    17411816  m_iViewOrderIdx         = iViewOrderIdx;
     
    17451820  ::memset( m_aaiCodedScale,  0x00, sizeof( m_aaiCodedScale  ) );
    17461821  ::memset( m_aaiCodedOffset, 0x00, sizeof( m_aaiCodedOffset ) );
     1822#if !QC_MVHEVC_B0046
    17471823  if( !m_bCamParInSliceHeader )
    17481824  {
     
    17551831    }
    17561832  }
     1833#endif
    17571834}
    17581835
     
    23742451, m_ppsMap(MAX_NUM_PPS)
    23752452, m_apsMap(MAX_NUM_APS)
    2376 #if VIDYO_VPS_INTEGRATION
     2453#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    23772454, m_vpsMap(MAX_NUM_VPS)
    23782455#endif
  • trunk/source/Lib/TLibCommon/TComSlice.h

    r189 r210  
    144144#endif
    145145
    146 #if VIDYO_VPS_INTEGRATION
     146#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    147147/// VPS class
    148148
     
    156156
    157157  UInt        m_uiExtensionType;
    158  
     158#if !QC_MVHEVC_B0046 
    159159  Bool        m_bDependentFlag[MAX_LAYER_NUM];
     160#else
     161  UInt        m_uiNumHRDParameter;
     162  UInt        m_numAddiLayerOperationPoints;
     163  UInt        m_numAddiProLevelSets;
     164  UInt        m_numDirectRefLayer[MAX_LAYER_NUM];
     165  UInt        m_numDirectRefID[MAX_LAYER_NUM][MAX_LAYER_NUM];
     166  UInt        m_numOpLayerIdMinus1[MAX_LAYER_NUM];
     167  UInt        m_numOpLayerId[MAX_LAYER_NUM][MAX_LAYER_NUM];
     168#endif
    160169  UInt        m_uiViewId[MAX_LAYER_NUM];
     170#if !QC_MVHEVC_B0046 
    161171  Bool        m_bDepthFlag[MAX_LAYER_NUM];
     172#endif
    162173  Int         m_iViewOrderIdx[MAX_LAYER_NUM];
     174#if !QC_MVHEVC_B0046 
    163175  UInt        m_uiDependentLayer[MAX_LAYER_NUM];
     176#endif
    164177
    165178  UInt        m_numReorderPics[MAX_TLAYER];
     
    182195  Bool    getTemporalNestingFlag   ()         { return m_uiMaxLayers;   }
    183196  Void    setTemporalNestingFlag   (UInt t)   { m_bTemporalIdNestingFlag = t; }
    184  
     197#if !QC_MVHEVC_B0046
    185198  Void    setExtensionType(UInt v)                     { m_uiExtensionType = v;    }
    186199  UInt    getExtensionType()                             { return m_uiExtensionType; }
     
    188201  Void    setDependentFlag(Bool d, UInt layer)              { m_bDependentFlag[layer] = d;    }
    189202  Bool    getDependentFlag(UInt layer)                      { return m_bDependentFlag[layer]; }
    190 
     203#endif
    191204  Void    setViewId(UInt v, UInt layer)                     { m_uiViewId[layer] = v;    }
    192205  UInt    getViewId(UInt layer)                             { return m_uiViewId[layer]; }
    193  
     206#if !QC_MVHEVC_B0046
    194207  Void    setDepthFlag(Bool d, UInt layer)                  { m_bDepthFlag[layer] = d;    }
    195208  Bool    getDepthFlag(UInt layer)                          { return m_bDepthFlag[layer]; }
    196 
     209#endif
    197210  Void    setViewOrderIdx(Int v, UInt layer)                { m_iViewOrderIdx[layer] = v;    }
    198211  Int     getViewOrderIdx(UInt layer)                       { return m_iViewOrderIdx[layer]; }
    199  
     212#if !QC_MVHEVC_B0046  
    200213  Void    setDependentLayer(UInt v, UInt layer)                     { m_uiDependentLayer[layer] = v;    }
    201214  UInt    getDependentLayer(UInt layer)                             { return m_uiDependentLayer[layer]; }
    202  
     215#endif
    203216  Void    setNumReorderPics(UInt v, UInt tLayer)                { m_numReorderPics[tLayer] = v;    }
    204217  UInt    getNumReorderPics(UInt tLayer)                        { return m_numReorderPics[tLayer]; }
     
    209222  Void    setMaxLatencyIncrease(UInt v, UInt tLayer)                { m_uiMaxLatencyIncrease[tLayer] = v;    }
    210223  UInt    getMaxLatencyIncrease(UInt tLayer)                        { return m_uiMaxLatencyIncrease[tLayer]; }
    211  
     224#if QC_MVHEVC_B0046
     225  Void    setNumHRDParameters(UInt n)                                { m_uiNumHRDParameter = n;    }
     226  UInt    getNumHRDParameters()                                      { return m_uiNumHRDParameter; }
     227  Void    setNumDirectRefLayer(UInt n, UInt layer)                   { m_numDirectRefLayer[layer] = n;        };
     228  UInt    getNumDirectRefLayer(UInt layer)                           { return m_numDirectRefLayer[layer];     };
     229  Void    setDirectRefLayerId (UInt n, UInt layer, UInt refId)       { m_numDirectRefID[layer][refId] = n;   assert(refId < MAX_NUM_REF ); };
     230  UInt    getDirectRefLayerId (        UInt layer, UInt refId)       { return m_numDirectRefID[layer][refId]; };
     231  UInt    getNumAddiLayerOperationPoints(      )               { return m_numAddiLayerOperationPoints;  };
     232  Void    setNumAddiLayerOperationPoints(UInt n)                {  m_numAddiLayerOperationPoints = n;  };
     233  Void    setNumAddiProLevelSets        (UInt n)                     {  m_numAddiProLevelSets = n;}
     234  UInt    getNumAddiProLevelSets        (      )                     { return m_numAddiProLevelSets;}
     235
     236  Void    setNumOpLayerIdMinus1         (UInt n, UInt layer)                     {  m_numOpLayerIdMinus1[layer] = n;}
     237  UInt    getNumOpLayerIdMinus1         (UInt layer      )                       { return m_numOpLayerIdMinus1[layer];}
     238
     239  Void    setNumOpLayerId               (UInt n, UInt layer, UInt OpId)                     {  m_numOpLayerId[layer][OpId] = n;}
     240  UInt    getNumOpLayerId               (UInt layer, UInt OpId        )                     { return m_numOpLayerId[layer][OpId];}
     241 
     242#endif
    212243};
    213244
     
    218249{
    219250private:
    220 #if VIDYO_VPS_INTEGRATION
     251#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    221252  Int          m_VPSId;
    222253#endif
     
    363394#endif
    364395
     396#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723
     397  Bool  m_bUseDMM34;
     398#endif
     399
    365400#if OL_QTLIMIT_PREDCODING_B0068
    366401  Bool m_bUseQTLPC;
     
    391426  TComSPS();
    392427  virtual ~TComSPS();
    393 #if VIDYO_VPS_INTEGRATION
     428#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    394429  Int  getVPSId       ()         { return m_VPSId;          }
    395430  Void setVPSId       (Int i)    { m_VPSId = i;             }
     
    643678#endif
    644679
     680#if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723
     681  Bool getUseDMM34()         { return m_bUseDMM34; }
     682  Void setUseDMM34( Bool b ) { m_bUseDMM34 = b;    }
     683#endif
     684
    645685#if OL_QTLIMIT_PREDCODING_B0068
    646686  Void setUseQTLPC( Bool b ) { m_bUseQTLPC = b;    }
     
    12211261 
    12221262  // access channel
    1223 #if VIDYO_VPS_INTEGRATION
     1263#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    12241264  TComVPS*    m_pcVPS;
     1265#endif
     1266#if QC_IV_AS_LT_B0046
     1267  Bool                  m_bWasLongTerm[2][MAX_NUM_REF+1]; //was long-term picture
    12251268#endif
    12261269  TComSPS*    m_pcSPS;
     
    12971340  Int        m_aaiCodedOffset[2][MAX_VIEW_NUM];
    12981341
    1299 #if SONY_COLPIC_AVAILABILITY
     1342#if SONY_COLPIC_AVAILABILITY|QC_MVHEVC_B0046
    13001343  Int         m_iViewOrderIdx;
    13011344#endif
     
    13111354  Void      initTiles();
    13121355
    1313 #if VIDYO_VPS_INTEGRATION
     1356#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    13141357  Void      setVPS          ( TComVPS* pcVPS ) { m_pcVPS = pcVPS; }
    13151358  TComVPS*  getVPS          () { return m_pcVPS; }
    13161359#endif
     1360#if QC_IV_AS_LT_B0046
     1361  Void          setWasLongTerm( Bool lt,  RefPicList e, Int iRefIdx ) { m_bWasLongTerm[e][iRefIdx] = lt; }
     1362  Bool          getWasLongTerm( RefPicList e, Int iRefIdx           ) { return m_bWasLongTerm[e][iRefIdx] ; }
     1363#endif
     1364
    13171365  Void      setSPS          ( TComSPS* pcSPS ) { m_pcSPS = pcSPS; }
    13181366  TComSPS*  getSPS          () { return m_pcSPS; }
     
    15871635  Void setViewId( Int viewId )       { m_viewId = viewId;   }
    15881636  Int  getViewId()                   { return m_viewId;     }
     1637#if QC_MVHEVC_B0046
     1638  Void    setViewOrderIdx(Int v, UInt layer)                { m_iViewOrderIdx = v;    }
     1639  Int     getViewOrderIdx()                                 { return m_iViewOrderIdx; }
     1640#endif
    15891641  Void setIsDepth( Bool isDepth )    { m_isDepth = isDepth; }
    15901642  Bool getIsDepth()                  { return m_isDepth;    }
     
    16551707  }
    16561708
     1709#if QC_MVHEVC_B0046
     1710  Void clearPSList()
     1711  {
     1712    m_paramsetMap.clear();
     1713  }
     1714#endif
    16571715private:
    16581716  std::map<Int,T *> m_paramsetMap;
     
    16651723  ParameterSetManager();
    16661724  virtual ~ParameterSetManager();
    1667 #if VIDYO_VPS_INTEGRATION
     1725#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    16681726  //! store video parameter set and take ownership of it
    16691727  Void storeVPS(TComVPS *vps) { m_vpsMap.storePS( vps->getVPSId(), vps); };
     
    16711729  TComVPS* getVPS(Int vpsId)  { return m_vpsMap.getPS(vpsId); };
    16721730  TComVPS* getFirstVPS()      { return m_vpsMap.getFirstPS(); };
     1731#if QC_MVHEVC_B0046
     1732  Void     clearVPS()         { m_vpsMap.clearPSList(); };
     1733  Void     clearSPS()         { m_spsMap.clearPSList(); };
     1734  Void     clearPPS()         { m_ppsMap.clearPSList(); };
     1735#endif
    16731736#endif
    16741737  //! store sequence parameter set and take ownership of it
     
    16931756  ParameterSetMap<TComPPS> m_ppsMap;
    16941757  ParameterSetMap<TComAPS> m_apsMap;
    1695 #if VIDYO_VPS_INTEGRATION
     1758#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    16961759  ParameterSetMap<TComVPS> m_vpsMap;
    16971760#endif
  • trunk/source/Lib/TLibCommon/TypeDef.h

    r205 r210  
    4141//! \ingroup TLibCommon
    4242//! \{
    43 
     43#define QC_MVHEVC_B0046                   0   //JCT3V-B0046: disable 3DHEVC tools
     44#define QC_IV_AS_LT_B0046                 1   //JCT3V-B0046: inter-view reference pictures are treated as long-term pictures, scaling of motion vectors for DCP based on ViewId/ViewOrderIdx is disabled 
     45#define QC_TMVP_IDX_MOD_B0046             1   //JCT3V-B0046: the reference index for temporal merging candidate is set to 0, as defined in HEVC
     46#define QC_REM_IDV_B0046                  1   //JCT3V-B0046: removal of IDV NAL unit type
     47#define FIX_DEL_NULLPTR                   1
     48#define FIX_MISUSE_REFINDEX               1
     49#define FIX_FCO_COMP_WARNING              1
     50#define DV_V_RESTRICTION_B0037            1   // JCT3V-B0037 disparity vector vertical range restriction
     51
     52#if !QC_MVHEVC_B0046
    4453///// ***** FIXES *********
    4554// A
     
    5261#define FIX_DMM_NEG_DIST                  1
    5362#define FIX_LGE_DVMCP_B0133               1
    54 #define FIX_MISUSE_REFINDEX               1
    55 
     63
     64
     65// FCO
     66#define FLEX_CODING_ORDER_M23723          1
     67#if FLEX_CODING_ORDER_M23723
     68  #define DISABLE_FCO_FOR_VSO             0 // Optional compile settings to disable VSO with FCO.
     69#endif
    5670
    5771///// ***** PATCHES *********
     
    178192
    179193#define HHI_MPI_MERGE_POS                 0
    180 
     194#endif
    181195///// ***** HM 6.1 *********
    182196#define SKIPFRAME_BUGFIX                  1 ///< bug fix to enable skipFrame at decoder
     
    478492// VPS INTEGRATION
    479493// ====================================================================================================================
    480 
     494#if !QC_MVHEVC_B0046
    481495#if VIDYO_VPS_INTEGRATION
    482496#define MAX_NUM_VPS 10
    483497#endif
     498#else
     499#define MAX_NUM_VPS 1
     500#endif
     501
    484502
    485503// ====================================================================================================================
Note: See TracChangeset for help on using the changeset viewer.