Changeset 537 in 3DVCSoftware for branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.cpp
- Timestamp:
- 13 Jul 2013, 15:51:26 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.cpp
r534 r537 60 60 , m_deblockingFilterBetaOffsetDiv2 ( 0 ) 61 61 , m_deblockingFilterTcOffsetDiv2 ( 0 ) 62 #if !L0034_COMBINED_LIST_CLEANUP63 , m_bRefPicListModificationFlagLC ( false )64 , m_bRefPicListCombinationFlag ( false )65 #endif66 62 , m_bCheckLDC ( false ) 67 63 , m_iSliceQpDelta ( 0 ) … … 80 76 #else 81 77 , m_dLambda ( 0.0 ) 82 #endif83 #if !L0034_COMBINED_LIST_CLEANUP84 , m_bNoBackPredFlag ( false )85 78 #endif 86 79 , m_uiTLayer ( 0 ) … … 131 124 #endif 132 125 { 133 #if L0034_COMBINED_LIST_CLEANUP134 126 m_aiNumRefIdx[0] = m_aiNumRefIdx[1] = 0; 135 #else136 m_aiNumRefIdx[0] = m_aiNumRefIdx[1] = m_aiNumRefIdx[2] = 0;137 #endif138 127 139 128 initEqualRef(); 140 129 141 #if L0034_COMBINED_LIST_CLEANUP142 130 for ( Int idx = 0; idx < MAX_NUM_REF; idx++ ) 143 131 { 144 132 m_list1IdxToList0Idx[idx] = -1; 145 133 } 146 #else147 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 #endif157 134 for(Int iNumCount = 0; iNumCount < MAX_NUM_REF; iNumCount++) 158 135 { … … 213 190 m_colRefIdx = 0; 214 191 initEqualRef(); 215 #if !L0034_COMBINED_LIST_CLEANUP216 m_bNoBackPredFlag = false;217 m_bRefPicListCombinationFlag = false;218 m_bRefPicListModificationFlagLC = false;219 #endif220 192 m_bCheckLDC = false; 221 193 m_iSliceQpDeltaCb = 0; 222 194 m_iSliceQpDeltaCr = 0; 223 224 #if !L0034_COMBINED_LIST_CLEANUP225 m_aiNumRefIdx[REF_PIC_LIST_C] = 0;226 #endif227 195 228 196 #if H_3D_IV_MERGE … … 378 346 } 379 347 380 #if L0034_COMBINED_LIST_CLEANUP381 348 Void TComSlice::setList1IdxToList0Idx() 382 349 { … … 395 362 } 396 363 } 397 #else398 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_MV421 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 #else424 if ( m_apcRefPicList[REF_PIC_LIST_0][iNumRefIdx]->getPOC() == m_apcRefPicList[m_eListIdFromIdxOfLC[iRefIdxLC]][m_iRefIdxFromIdxOfLC[iRefIdxLC]]->getPOC() )425 #endif426 {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_MV448 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 #else451 if ( m_apcRefPicList[REF_PIC_LIST_1][iNumRefIdx]->getPOC() == m_apcRefPicList[m_eListIdFromIdxOfLC[iRefIdxLC]][m_iRefIdxFromIdxOfLC[iRefIdxLC]]->getPOC() )452 #endif453 {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 #endif471 472 364 #if H_MV 473 365 Void TComSlice::setRefPicList( TComList<TComPic*>& rcListPic, std::vector<TComPic*>& refPicSetInterLayer , Bool checkNumPocTotalCurr) … … 506 398 UInt NumPocLtCurr = 0; 507 399 Int i; 400 508 401 for(i=0; i < m_pcRPS->getNumberOfNegativePictures(); i++) 509 402 { … … 585 478 } 586 479 587 assert(numPocTotalCurr !=0);480 assert(numPocTotalCurr > 0); 588 481 589 482 m_aiNumRefIdx[0] = getNumRefIdx(REF_PIC_LIST_0); … … 617 510 } 618 511 #endif 512 assert(cIdx == numPocTotalCurr); 619 513 620 514 if (m_eSliceType==B_SLICE) … … 645 539 } 646 540 #endif 541 assert(cIdx == numPocTotalCurr); 647 542 } 648 543 … … 673 568 } 674 569 #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 ) 683 578 { 684 579 m_aiNumRefIdx[1] = 0; … … 687 582 else 688 583 { 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 703 595 Int TComSlice::getNumRpsCurrTempList() 704 #endif705 596 { 706 597 Int numRpsCurrTempList = 0; … … 710 601 return 0; 711 602 } 712 #if H_MV && !H_MV_FIX1071713 // Temporary fix for FIX1071 should be removed later714 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 #else723 603 for(UInt i=0; i < m_pcRPS->getNumberOfNegativePictures()+ m_pcRPS->getNumberOfPositivePictures() + m_pcRPS->getNumberOfLongtermPictures(); i++) 724 604 { 725 605 if(m_pcRPS->getUsed(i)) 726 #endif727 606 { 728 607 numRpsCurrTempList++; … … 945 824 m_deblockingFilterTcOffsetDiv2 = pSrc->m_deblockingFilterTcOffsetDiv2; 946 825 947 #if L0034_COMBINED_LIST_CLEANUP948 826 for (i = 0; i < 2; i++) 949 #else950 for (i = 0; i < 3; i++)951 #endif952 827 { 953 828 m_aiNumRefIdx[i] = pSrc->m_aiNumRefIdx[i]; 954 829 } 955 830 956 #if L0034_COMBINED_LIST_CLEANUP957 831 for (i = 0; i < MAX_NUM_REF; i++) 958 832 { 959 833 m_list1IdxToList0Idx[i] = pSrc->m_list1IdxToList0Idx[i]; 960 834 } 961 #else962 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 #endif979 835 m_bCheckLDC = pSrc->m_bCheckLDC; 980 836 m_iSliceQpDelta = pSrc->m_iSliceQpDelta; … … 1014 870 1015 871 m_pcPic = pSrc->m_pcPic; 872 1016 873 m_colFromL0Flag = pSrc->m_colFromL0Flag; 1017 874 m_colRefIdx = pSrc->m_colRefIdx; … … 1033 890 } 1034 891 1035 #if !L0034_COMBINED_LIST_CLEANUP1036 m_bNoBackPredFlag = pSrc->m_bNoBackPredFlag;1037 #endif1038 892 m_uiTLayer = pSrc->m_uiTLayer; 1039 893 m_bTLayerSwitchingFlag = pSrc->m_bTLayerSwitchingFlag; … … 1366 1220 /** Function for constructing an explicit Reference Picture Set out of the available pictures in a referenced Reference Picture Set 1367 1221 */ 1368 #if FIX1071 && H_MV_FIX10711222 #if FIX1071 1369 1223 Void TComSlice::createExplicitReferencePictureSetFromReference( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool isRAP) 1370 1224 #else … … 1395 1249 // and should be added to the explicit Reference Picture Set 1396 1250 pcRPS->setDeltaPOC(k, pReferencePictureSet->getDeltaPOC(i)); 1397 #if FIX1071 && H_MV_FIX10711251 #if FIX1071 1398 1252 pcRPS->setUsed(k, pReferencePictureSet->getUsed(i) && (!isRAP)); 1399 1253 #else … … 1566 1420 { 1567 1421 m_numReorderPics[i] = 0; 1568 #if L0323_DPB1569 1422 m_uiMaxDecPicBuffering[i] = 1; 1570 #else1571 m_uiMaxDecPicBuffering[i] = 0;1572 #endif1573 1423 m_uiMaxLatencyIncrease[i] = 0; 1574 1424 } … … 2005 1855 , m_pcmLog2MaxSize ( 5) 2006 1856 , m_uiPCMLog2MinSize ( 7) 2007 #if !L0034_COMBINED_LIST_CLEANUP2008 , m_bUseLComb (false)2009 #endif2010 1857 , m_bitDepthY ( 8) 2011 1858 , m_bitDepthC ( 8) … … 2037 1884 { 2038 1885 m_uiMaxLatencyIncrease[i] = 0; 2039 #if L0323_DPB2040 1886 m_uiMaxDecPicBuffering[i] = 1; 2041 #else2042 m_uiMaxDecPicBuffering[i] = 0;2043 #endif2044 1887 m_numReorderPics[i] = 0; 2045 1888 } … … 2079 1922 TComHRD *hrd = vui->getHrdParameters(); 2080 1923 2081 #if L0043_TIMING_INFO2082 1924 TimingInfo *timingInfo = vui->getTimingInfo(); 2083 1925 timingInfo->setTimingInfoPresentFlag( true ); … … 2103 1945 break; 2104 1946 } 2105 #else2106 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 #endif2129 1947 2130 1948 Bool rateCnt = ( bitRate > 0 ); … … 2139 1957 hrd->setDuCpbRemovalDelayLengthMinus1( 7 ); // 8-bit precision ( plus 1 for last DU in AU ) 2140 1958 hrd->setSubPicCpbParamsInPicTimingSEIFlag( true ); 2141 #if L0044_DU_DPB_OUTPUT_DELAY_HRD2142 1959 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 #endif2144 1960 } 2145 1961 else … … 2170 1986 UInt birateValue, cpbSizeValue; 2171 1987 UInt ducpbSizeValue; 2172 #if L0363_DU_BIT_RATE2173 1988 UInt duBitRateValue = 0; 2174 #endif2175 1989 2176 1990 for( i = 0; i < MAX_TLAYER; i ++ ) … … 2184 1998 cpbSizeValue = bitRate; // 1 second 2185 1999 ducpbSizeValue = bitRate/numDU; 2186 #if L0363_DU_BIT_RATE2187 2000 duBitRateValue = bitRate; 2188 #endif2189 2001 for( j = 0; j < ( hrd->getCpbCntMinus1( i ) + 1 ); j ++ ) 2190 2002 { … … 2197 2009 hrd->setCpbSizeValueMinus1( i, j, 1, ( cpbSizeValue - 1 ) ); 2198 2010 hrd->setDuCpbSizeValueMinus1( i, j, 1, ( ducpbSizeValue - 1 ) ); 2199 #if L0363_DU_BIT_RATE2200 2011 hrd->setDuBitRateValueMinus1( i, j, 1, ( duBitRateValue - 1 ) ); 2201 #endif2202 2012 hrd->setCbrFlag( i, j, 1, ( j == 0 ) ); 2203 2013 } … … 2282 2092 } 2283 2093 #endif 2284 2285 2094 TComReferencePictureSet::TComReferencePictureSet() 2286 2095 : m_numberOfPictures (0) … … 3167 2976 , m_profileIdc (0) 3168 2977 , m_levelIdc (0) 3169 #if L0046_CONSTRAINT_FLAGS3170 2978 , m_progressiveSourceFlag (false) 3171 2979 , m_interlacedSourceFlag (false) 3172 2980 , m_nonPackedConstraintFlag(false) 3173 2981 , m_frameOnlyConstraintFlag(false) 3174 #endif3175 2982 { 3176 2983 ::memset(m_profileCompatibilityFlag, 0, sizeof(m_profileCompatibilityFlag)); … … 3205 3012 } 3206 3013 #endif 3207 3208 3014 //! \}
Note: See TracChangeset for help on using the changeset viewer.