Ignore:
Timestamp:
13 Jul 2013, 15:51:26 (11 years ago)
Author:
tech
Message:

Update to HM 11.0.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.cpp

    r534 r537  
    6060, m_deblockingFilterBetaOffsetDiv2 ( 0 )
    6161, m_deblockingFilterTcOffsetDiv2   ( 0 )
    62 #if !L0034_COMBINED_LIST_CLEANUP
    63 , m_bRefPicListModificationFlagLC ( false )
    64 , m_bRefPicListCombinationFlag    ( false )
    65 #endif
    6662, m_bCheckLDC                     ( false )
    6763, m_iSliceQpDelta                 ( 0 )
     
    8076#else
    8177, m_dLambda                       ( 0.0 )
    82 #endif
    83 #if !L0034_COMBINED_LIST_CLEANUP
    84 , m_bNoBackPredFlag               ( false )
    8578#endif
    8679, m_uiTLayer                      ( 0 )
     
    131124#endif
    132125{
    133 #if L0034_COMBINED_LIST_CLEANUP
    134126  m_aiNumRefIdx[0] = m_aiNumRefIdx[1] = 0;
    135 #else
    136   m_aiNumRefIdx[0] = m_aiNumRefIdx[1] = m_aiNumRefIdx[2] = 0;
    137 #endif
    138127 
    139128  initEqualRef();
    140129 
    141 #if L0034_COMBINED_LIST_CLEANUP
    142130  for ( Int idx = 0; idx < MAX_NUM_REF; idx++ )
    143131  {
    144132    m_list1IdxToList0Idx[idx] = -1;
    145133  }
    146 #else
    147   for(Int iNumCount = 0; iNumCount < MAX_NUM_REF_LC; iNumCount++)
    148   {
    149     m_iRefIdxOfLC[REF_PIC_LIST_0][iNumCount]=-1;
    150     m_iRefIdxOfLC[REF_PIC_LIST_1][iNumCount]=-1;
    151     m_eListIdFromIdxOfLC[iNumCount]=0;
    152     m_iRefIdxFromIdxOfLC[iNumCount]=0;
    153     m_iRefIdxOfL0FromRefIdxOfL1[iNumCount] = -1;
    154     m_iRefIdxOfL1FromRefIdxOfL0[iNumCount] = -1;
    155   }   
    156 #endif
    157134  for(Int iNumCount = 0; iNumCount < MAX_NUM_REF; iNumCount++)
    158135  {
     
    213190  m_colRefIdx = 0;
    214191  initEqualRef();
    215 #if !L0034_COMBINED_LIST_CLEANUP
    216   m_bNoBackPredFlag = false;
    217   m_bRefPicListCombinationFlag = false;
    218   m_bRefPicListModificationFlagLC = false;
    219 #endif
    220192  m_bCheckLDC = false;
    221193  m_iSliceQpDeltaCb = 0;
    222194  m_iSliceQpDeltaCr = 0;
    223 
    224 #if !L0034_COMBINED_LIST_CLEANUP
    225   m_aiNumRefIdx[REF_PIC_LIST_C]      = 0;
    226 #endif
    227195
    228196#if H_3D_IV_MERGE
     
    378346}
    379347
    380 #if L0034_COMBINED_LIST_CLEANUP
    381348Void TComSlice::setList1IdxToList0Idx()
    382349{
     
    395362  }
    396363}
    397 #else
    398 Void TComSlice::generateCombinedList()
    399 {
    400   if(m_aiNumRefIdx[REF_PIC_LIST_C] > 0)
    401   {
    402     m_aiNumRefIdx[REF_PIC_LIST_C]=0;
    403     for(Int iNumCount = 0; iNumCount < MAX_NUM_REF_LC; iNumCount++)
    404     {
    405       m_iRefIdxOfLC[REF_PIC_LIST_0][iNumCount]=-1;
    406       m_iRefIdxOfLC[REF_PIC_LIST_1][iNumCount]=-1;
    407       m_eListIdFromIdxOfLC[iNumCount]=0;
    408       m_iRefIdxFromIdxOfLC[iNumCount]=0;
    409       m_iRefIdxOfL0FromRefIdxOfL1[iNumCount] = -1;
    410       m_iRefIdxOfL1FromRefIdxOfL0[iNumCount] = -1;
    411     }
    412 
    413     for (Int iNumRefIdx = 0; iNumRefIdx < MAX_NUM_REF; iNumRefIdx++)
    414     {
    415       if(iNumRefIdx < m_aiNumRefIdx[REF_PIC_LIST_0])
    416       {
    417         Bool bTempRefIdxInL2 = true;
    418         for ( Int iRefIdxLC = 0; iRefIdxLC < m_aiNumRefIdx[REF_PIC_LIST_C]; iRefIdxLC++ )
    419         {
    420 #if H_MV
    421           if ( m_apcRefPicList[REF_PIC_LIST_0][iNumRefIdx]->getPOC() == m_apcRefPicList[m_eListIdFromIdxOfLC[iRefIdxLC]][m_iRefIdxFromIdxOfLC[iRefIdxLC]]->getPOC() &&
    422                m_apcRefPicList[REF_PIC_LIST_0][iNumRefIdx]->getLayerId() == m_apcRefPicList[m_eListIdFromIdxOfLC[iRefIdxLC]][m_iRefIdxFromIdxOfLC[iRefIdxLC]]->getLayerId() )
    423 #else
    424           if ( m_apcRefPicList[REF_PIC_LIST_0][iNumRefIdx]->getPOC() == m_apcRefPicList[m_eListIdFromIdxOfLC[iRefIdxLC]][m_iRefIdxFromIdxOfLC[iRefIdxLC]]->getPOC() )
    425 #endif
    426           {
    427             m_iRefIdxOfL1FromRefIdxOfL0[iNumRefIdx] = m_iRefIdxFromIdxOfLC[iRefIdxLC];
    428             m_iRefIdxOfL0FromRefIdxOfL1[m_iRefIdxFromIdxOfLC[iRefIdxLC]] = iNumRefIdx;
    429             bTempRefIdxInL2 = false;
    430             break;
    431           }
    432         }
    433 
    434         if(bTempRefIdxInL2 == true)
    435         {
    436           m_eListIdFromIdxOfLC[m_aiNumRefIdx[REF_PIC_LIST_C]] = REF_PIC_LIST_0;
    437           m_iRefIdxFromIdxOfLC[m_aiNumRefIdx[REF_PIC_LIST_C]] = iNumRefIdx;
    438           m_iRefIdxOfLC[REF_PIC_LIST_0][iNumRefIdx] = m_aiNumRefIdx[REF_PIC_LIST_C]++;
    439         }
    440       }
    441 
    442       if(iNumRefIdx < m_aiNumRefIdx[REF_PIC_LIST_1])
    443       {
    444         Bool bTempRefIdxInL2 = true;
    445         for ( Int iRefIdxLC = 0; iRefIdxLC < m_aiNumRefIdx[REF_PIC_LIST_C]; iRefIdxLC++ )
    446         {
    447 #if H_MV
    448           if ( m_apcRefPicList[REF_PIC_LIST_1][iNumRefIdx]->getPOC() == m_apcRefPicList[m_eListIdFromIdxOfLC[iRefIdxLC]][m_iRefIdxFromIdxOfLC[iRefIdxLC]]->getPOC() &&
    449                m_apcRefPicList[REF_PIC_LIST_1][iNumRefIdx]->getLayerId() == m_apcRefPicList[m_eListIdFromIdxOfLC[iRefIdxLC]][m_iRefIdxFromIdxOfLC[iRefIdxLC]]->getLayerId() )
    450 #else
    451           if ( m_apcRefPicList[REF_PIC_LIST_1][iNumRefIdx]->getPOC() == m_apcRefPicList[m_eListIdFromIdxOfLC[iRefIdxLC]][m_iRefIdxFromIdxOfLC[iRefIdxLC]]->getPOC() )
    452 #endif
    453           {
    454             m_iRefIdxOfL0FromRefIdxOfL1[iNumRefIdx] = m_iRefIdxFromIdxOfLC[iRefIdxLC];
    455             m_iRefIdxOfL1FromRefIdxOfL0[m_iRefIdxFromIdxOfLC[iRefIdxLC]] = iNumRefIdx;
    456             bTempRefIdxInL2 = false;
    457             break;
    458           }
    459         }
    460         if(bTempRefIdxInL2 == true)
    461         {
    462           m_eListIdFromIdxOfLC[m_aiNumRefIdx[REF_PIC_LIST_C]] = REF_PIC_LIST_1;
    463           m_iRefIdxFromIdxOfLC[m_aiNumRefIdx[REF_PIC_LIST_C]] = iNumRefIdx;
    464           m_iRefIdxOfLC[REF_PIC_LIST_1][iNumRefIdx] = m_aiNumRefIdx[REF_PIC_LIST_C]++;
    465         }
    466       }
    467     }
    468   }
    469 }
    470 #endif
    471 
    472364#if H_MV
    473365Void TComSlice::setRefPicList( TComList<TComPic*>& rcListPic, std::vector<TComPic*>& refPicSetInterLayer , Bool checkNumPocTotalCurr)
     
    506398  UInt NumPocLtCurr = 0;
    507399  Int i;
     400
    508401  for(i=0; i < m_pcRPS->getNumberOfNegativePictures(); i++)
    509402  {
     
    585478    }
    586479   
    587     assert(numPocTotalCurr != 0);
     480    assert(numPocTotalCurr > 0);
    588481   
    589482    m_aiNumRefIdx[0] = getNumRefIdx(REF_PIC_LIST_0);
     
    617510    }
    618511#endif
     512  assert(cIdx == numPocTotalCurr);
    619513
    620514  if (m_eSliceType==B_SLICE)
     
    645539      }
    646540#endif
     541    assert(cIdx == numPocTotalCurr);
    647542  }
    648543
     
    673568  }
    674569#else
    675 
    676   for (Int rIdx = 0; rIdx <= (m_aiNumRefIdx[0]-1); rIdx ++)
    677   {
    678     m_apcRefPicList[0][rIdx] = m_RefPicListModification.getRefPicListModificationFlagL0() ? rpsCurrList0[ m_RefPicListModification.getRefPicSetIdxL0(rIdx) ] : rpsCurrList0[rIdx % numPocTotalCurr];
    679     m_bIsUsedAsLongTerm[0][rIdx] = m_RefPicListModification.getRefPicListModificationFlagL0() ? (m_RefPicListModification.getRefPicSetIdxL0(rIdx) >= (NumPocStCurr0 + NumPocStCurr1))
    680                                   : ((rIdx % numPocTotalCurr) >= (NumPocStCurr0 + NumPocStCurr1));
    681   }
    682   if ( m_eSliceType == P_SLICE )
     570  for (Int rIdx = 0; rIdx < m_aiNumRefIdx[0]; rIdx ++)
     571  {
     572    cIdx = m_RefPicListModification.getRefPicListModificationFlagL0() ? m_RefPicListModification.getRefPicSetIdxL0(rIdx) : rIdx % numPocTotalCurr;
     573    assert(cIdx >= 0 && cIdx < numPocTotalCurr);
     574    m_apcRefPicList[0][rIdx] = rpsCurrList0[ cIdx ];
     575    m_bIsUsedAsLongTerm[0][rIdx] = ( cIdx >= NumPocStCurr0 + NumPocStCurr1 );
     576  }
     577  if ( m_eSliceType != B_SLICE )
    683578  {
    684579    m_aiNumRefIdx[1] = 0;
     
    687582  else
    688583  {
    689     for (Int rIdx = 0; rIdx <= (m_aiNumRefIdx[1]-1); rIdx ++)
    690     {
    691       m_apcRefPicList[1][rIdx] = m_RefPicListModification.getRefPicListModificationFlagL1() ? rpsCurrList1[ m_RefPicListModification.getRefPicSetIdxL1(rIdx) ] : rpsCurrList1[rIdx % numPocTotalCurr];
    692       m_bIsUsedAsLongTerm[1][rIdx] = m_RefPicListModification.getRefPicListModificationFlagL1() ?
    693                                   (m_RefPicListModification.getRefPicSetIdxL1(rIdx) >= (NumPocStCurr0 + NumPocStCurr1)): ((rIdx % numPocTotalCurr) >= (NumPocStCurr0 + NumPocStCurr1));
    694     }
    695   }
    696 #endif
    697 }
    698 
    699 #if H_MV && !H_MV_FIX1071
    700 // Temporary fix for FIX1071 should be removed later
    701 Int TComSlice::getNumRpsCurrTempList( TComReferencePictureSet* rps /* = 0 */)
    702 #else
     584    for (Int rIdx = 0; rIdx < m_aiNumRefIdx[1]; rIdx ++)
     585    {
     586      cIdx = m_RefPicListModification.getRefPicListModificationFlagL1() ? m_RefPicListModification.getRefPicSetIdxL1(rIdx) : rIdx % numPocTotalCurr;
     587      assert(cIdx >= 0 && cIdx < numPocTotalCurr);
     588      m_apcRefPicList[1][rIdx] = rpsCurrList1[ cIdx ];
     589      m_bIsUsedAsLongTerm[1][rIdx] = ( cIdx >= NumPocStCurr0 + NumPocStCurr1 );
     590    }
     591  }
     592#endif
     593}
     594
    703595Int TComSlice::getNumRpsCurrTempList()
    704 #endif
    705596{
    706597  Int numRpsCurrTempList = 0;
     
    710601    return 0;
    711602  }
    712 #if H_MV && !H_MV_FIX1071
    713 // Temporary fix for FIX1071 should be removed later
    714   if (rps == NULL)
    715   {
    716     rps = m_pcRPS;
    717   }
    718 
    719   for(UInt i=0; i < rps->getNumberOfNegativePictures()+ rps->getNumberOfPositivePictures() + rps->getNumberOfLongtermPictures(); i++)
    720   {
    721     if(rps->getUsed(i))
    722 #else
    723603  for(UInt i=0; i < m_pcRPS->getNumberOfNegativePictures()+ m_pcRPS->getNumberOfPositivePictures() + m_pcRPS->getNumberOfLongtermPictures(); i++)
    724604  {
    725605    if(m_pcRPS->getUsed(i))
    726 #endif
    727606    {
    728607      numRpsCurrTempList++;
     
    945824  m_deblockingFilterTcOffsetDiv2 = pSrc->m_deblockingFilterTcOffsetDiv2;
    946825 
    947 #if L0034_COMBINED_LIST_CLEANUP
    948826  for (i = 0; i < 2; i++)
    949 #else
    950   for (i = 0; i < 3; i++)
    951 #endif
    952827  {
    953828    m_aiNumRefIdx[i]     = pSrc->m_aiNumRefIdx[i];
    954829  }
    955830
    956 #if L0034_COMBINED_LIST_CLEANUP
    957831  for (i = 0; i < MAX_NUM_REF; i++)
    958832  {
    959833    m_list1IdxToList0Idx[i] = pSrc->m_list1IdxToList0Idx[i];
    960834  }
    961 #else
    962   for (i = 0; i < 2; i++)
    963   {
    964     for (j = 0; j < MAX_NUM_REF_LC; j++)
    965     {
    966        m_iRefIdxOfLC[i][j]  = pSrc->m_iRefIdxOfLC[i][j];
    967     }
    968   }
    969   for (i = 0; i < MAX_NUM_REF_LC; i++)
    970   {
    971     m_eListIdFromIdxOfLC[i] = pSrc->m_eListIdFromIdxOfLC[i];
    972     m_iRefIdxFromIdxOfLC[i] = pSrc->m_iRefIdxFromIdxOfLC[i];
    973     m_iRefIdxOfL1FromRefIdxOfL0[i] = pSrc->m_iRefIdxOfL1FromRefIdxOfL0[i];
    974     m_iRefIdxOfL0FromRefIdxOfL1[i] = pSrc->m_iRefIdxOfL0FromRefIdxOfL1[i];
    975   }
    976   m_bRefPicListModificationFlagLC = pSrc->m_bRefPicListModificationFlagLC;
    977   m_bRefPicListCombinationFlag    = pSrc->m_bRefPicListCombinationFlag;
    978 #endif
    979835  m_bCheckLDC             = pSrc->m_bCheckLDC;
    980836  m_iSliceQpDelta        = pSrc->m_iSliceQpDelta;
     
    1014870
    1015871  m_pcPic                = pSrc->m_pcPic;
     872
    1016873  m_colFromL0Flag        = pSrc->m_colFromL0Flag;
    1017874  m_colRefIdx            = pSrc->m_colRefIdx;
     
    1033890  }
    1034891
    1035 #if !L0034_COMBINED_LIST_CLEANUP
    1036   m_bNoBackPredFlag      = pSrc->m_bNoBackPredFlag;
    1037 #endif
    1038892  m_uiTLayer                      = pSrc->m_uiTLayer;
    1039893  m_bTLayerSwitchingFlag          = pSrc->m_bTLayerSwitchingFlag;
     
    13661220/** Function for constructing an explicit Reference Picture Set out of the available pictures in a referenced Reference Picture Set
    13671221*/
    1368 #if FIX1071 && H_MV_FIX1071
     1222#if FIX1071
    13691223Void TComSlice::createExplicitReferencePictureSetFromReference( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool isRAP)
    13701224#else
     
    13951249        // and should be added to the explicit Reference Picture Set
    13961250        pcRPS->setDeltaPOC(k, pReferencePictureSet->getDeltaPOC(i));
    1397 #if FIX1071 && H_MV_FIX1071
     1251#if FIX1071
    13981252        pcRPS->setUsed(k, pReferencePictureSet->getUsed(i) && (!isRAP));
    13991253#else
     
    15661420  {
    15671421    m_numReorderPics[i] = 0;
    1568 #if L0323_DPB
    15691422    m_uiMaxDecPicBuffering[i] = 1;
    1570 #else
    1571     m_uiMaxDecPicBuffering[i] = 0;
    1572 #endif
    15731423    m_uiMaxLatencyIncrease[i] = 0;
    15741424  }
     
    20051855, m_pcmLog2MaxSize            (  5)
    20061856, m_uiPCMLog2MinSize          (  7)
    2007 #if !L0034_COMBINED_LIST_CLEANUP
    2008 , m_bUseLComb                 (false)
    2009 #endif
    20101857, m_bitDepthY                 (  8)
    20111858, m_bitDepthC                 (  8)
     
    20371884  {
    20381885    m_uiMaxLatencyIncrease[i] = 0;
    2039 #if L0323_DPB
    20401886    m_uiMaxDecPicBuffering[i] = 1;
    2041 #else
    2042     m_uiMaxDecPicBuffering[i] = 0;
    2043 #endif
    20441887    m_numReorderPics[i]       = 0;
    20451888  }
     
    20791922  TComHRD *hrd = vui->getHrdParameters();
    20801923
    2081 #if L0043_TIMING_INFO
    20821924  TimingInfo *timingInfo = vui->getTimingInfo();
    20831925  timingInfo->setTimingInfoPresentFlag( true );
     
    21031945    break;
    21041946  }
    2105 #else
    2106   hrd->setTimingInfoPresentFlag( true );
    2107   switch( frameRate )
    2108   {
    2109   case 24:
    2110     hrd->setNumUnitsInTick( 1125000 );    hrd->setTimeScale    ( 27000000 );
    2111     break;
    2112   case 25:
    2113     hrd->setNumUnitsInTick( 1080000 );    hrd->setTimeScale    ( 27000000 );
    2114     break;
    2115   case 30:
    2116     hrd->setNumUnitsInTick( 900900 );     hrd->setTimeScale    ( 27000000 );
    2117     break;
    2118   case 50:
    2119     hrd->setNumUnitsInTick( 540000 );     hrd->setTimeScale    ( 27000000 );
    2120     break;
    2121   case 60:
    2122     hrd->setNumUnitsInTick( 450450 );     hrd->setTimeScale    ( 27000000 );
    2123     break;
    2124   default:
    2125     hrd->setNumUnitsInTick( 1001 );       hrd->setTimeScale    ( 60000 );
    2126     break;
    2127   }
    2128 #endif
    21291947
    21301948  Bool rateCnt = ( bitRate > 0 );
     
    21391957    hrd->setDuCpbRemovalDelayLengthMinus1( 7 );                    // 8-bit precision ( plus 1 for last DU in AU )
    21401958    hrd->setSubPicCpbParamsInPicTimingSEIFlag( true );
    2141 #if L0044_DU_DPB_OUTPUT_DELAY_HRD
    21421959    hrd->setDpbOutputDelayDuLengthMinus1( 5 + 7 );                 // With sub-clock tick factor of 100, at least 7 bits to have the same value as AU dpb delay
    2143 #endif
    21441960  }
    21451961  else
     
    21701986  UInt birateValue, cpbSizeValue;
    21711987  UInt ducpbSizeValue;
    2172 #if L0363_DU_BIT_RATE
    21731988  UInt duBitRateValue = 0;
    2174 #endif
    21751989
    21761990  for( i = 0; i < MAX_TLAYER; i ++ )
     
    21841998    cpbSizeValue = bitRate;                                     // 1 second
    21851999    ducpbSizeValue = bitRate/numDU;
    2186 #if L0363_DU_BIT_RATE
    21872000    duBitRateValue = bitRate;
    2188 #endif
    21892001    for( j = 0; j < ( hrd->getCpbCntMinus1( i ) + 1 ); j ++ )
    21902002    {
     
    21972009      hrd->setCpbSizeValueMinus1( i, j, 1, ( cpbSizeValue - 1 ) );
    21982010      hrd->setDuCpbSizeValueMinus1( i, j, 1, ( ducpbSizeValue - 1 ) );
    2199 #if L0363_DU_BIT_RATE
    22002011      hrd->setDuBitRateValueMinus1( i, j, 1, ( duBitRateValue - 1 ) );
    2201 #endif
    22022012      hrd->setCbrFlag( i, j, 1, ( j == 0 ) );
    22032013    }
     
    22822092}
    22832093#endif
    2284 
    22852094TComReferencePictureSet::TComReferencePictureSet()
    22862095: m_numberOfPictures (0)
     
    31672976  , m_profileIdc      (0)
    31682977  , m_levelIdc        (0)
    3169 #if L0046_CONSTRAINT_FLAGS
    31702978, m_progressiveSourceFlag  (false)
    31712979, m_interlacedSourceFlag   (false)
    31722980, m_nonPackedConstraintFlag(false)
    31732981, m_frameOnlyConstraintFlag(false)
    3174 #endif
    31752982{
    31762983  ::memset(m_profileCompatibilityFlag, 0, sizeof(m_profileCompatibilityFlag));
     
    32053012}
    32063013#endif
    3207 
    32083014//! \}
Note: See TracChangeset for help on using the changeset viewer.