Changeset 302 in SHVCSoftware for branches/SHM-2.1-dev/source/Lib/TLibEncoder/TEncGOP.cpp
- Timestamp:
- 28 Jun 2013, 00:40:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-2.1-dev/source/Lib/TLibEncoder/TEncGOP.cpp
r297 r302 94 94 m_cpbRemovalDelay = 0; 95 95 m_lastBPSEI = 0; 96 #if L0045_NON_NESTED_SEI_RESTRICTIONS97 96 xResetNonNestedSEIPresentFlags(); 98 #if K0180_SCALABLE_NESTING_SEI99 97 xResetNestedSEIPresentFlags(); 100 #endif101 #endif102 98 #if SVC_UPSAMPLING 103 99 m_pcPredSearch = NULL; … … 163 159 SEIActiveParameterSets *seiActiveParameterSets = new SEIActiveParameterSets(); 164 160 seiActiveParameterSets->activeVPSId = m_pcCfg->getVPS()->getVPSId(); 165 #if L0047_APS_FLAGS166 161 seiActiveParameterSets->m_fullRandomAccessFlag = false; 167 162 seiActiveParameterSets->m_noParamSetUpdateFlag = false; 168 #endif169 163 seiActiveParameterSets->numSpsIdsMinus1 = 0; 170 164 seiActiveParameterSets->activeSeqParamSetId.resize(seiActiveParameterSets->numSpsIdsMinus1 + 1); … … 198 192 seiFramePacking->m_arrangementCancelFlag = 0; 199 193 seiFramePacking->m_arrangementType = m_pcCfg->getFramePackingArrangementSEIType(); 200 #if L0444_FPA_TYPE201 194 assert((seiFramePacking->m_arrangementType > 2) && (seiFramePacking->m_arrangementType < 6) ); 202 #endif203 195 seiFramePacking->m_quincunxSamplingFlag = m_pcCfg->getFramePackingArrangementSEIQuincunx(); 204 196 seiFramePacking->m_contentInterpretationType = m_pcCfg->getFramePackingArrangementSEIInterpretation(); … … 214 206 seiFramePacking->m_frame1GridPositionY = 0; 215 207 seiFramePacking->m_arrangementReservedByte = 0; 216 #if L0045_PERSISTENCE_FLAGS217 208 seiFramePacking->m_arrangementPersistenceFlag = true; 218 #else219 seiFramePacking->m_arrangementRepetetionPeriod = 1;220 #endif221 209 seiFramePacking->m_upsampledAspectRatio = 0; 222 210 return seiFramePacking; … … 233 221 } 234 222 235 #if J0149_TONE_MAPPING_SEI236 223 SEIToneMappingInfo* TEncGOP::xCreateSEIToneMappingInfo() 237 224 { … … 244 231 assert(seiToneMappingInfo->m_codedDataBitDepth >= 8 && seiToneMappingInfo->m_codedDataBitDepth <= 14); 245 232 seiToneMappingInfo->m_targetBitDepth = m_pcCfg->getTMISEITargetBitDepth(); 246 assert( (seiToneMappingInfo->m_targetBitDepth >= 1 && seiToneMappingInfo->m_targetBitDepth <= 17) || (seiToneMappingInfo->m_targetBitDepth == 255));233 assert( seiToneMappingInfo->m_targetBitDepth >= 1 && seiToneMappingInfo->m_targetBitDepth <= 17 ); 247 234 seiToneMappingInfo->m_modelId = m_pcCfg->getTMISEIModelID(); 248 235 assert(seiToneMappingInfo->m_modelId >=0 &&seiToneMappingInfo->m_modelId<=4); … … 319 306 return seiToneMappingInfo; 320 307 } 321 #endif 308 322 309 Void TEncGOP::xCreateLeadingSEIMessages (/*SEIMessages seiMessages,*/ AccessUnit &accessUnit, TComSPS *sps) 323 310 { … … 334 321 accessUnit.push_back(new NALUnitEBSP(nalu)); 335 322 delete sei; 336 #if L0045_NON_NESTED_SEI_RESTRICTIONS337 323 m_activeParameterSetSEIPresentInAU = true; 338 #endif339 324 } 340 325 … … 373 358 delete sei; 374 359 } 375 #if J0149_TONE_MAPPING_SEI376 360 if(m_pcCfg->getToneMappingInfoSEIEnabled()) 377 361 { … … 385 369 delete sei; 386 370 } 387 #endif388 371 } 389 372 … … 411 394 m_iNumPicCoded = 0; 412 395 SEIPictureTiming pictureTimingSEI; 413 #if L0208_SOP_DESCRIPTION_SEI414 396 Bool writeSOP = m_pcCfg->getSOPDescriptionSEIEnabled(); 415 #endif416 #if K0180_SCALABLE_NESTING_SEI417 397 // Initialize Scalable Nesting SEI with single layer values 418 398 SEIScalableNesting scalableNestingSEI; … … 425 405 scalableNestingSEI.m_nestingLayerId[0] = 0; 426 406 scalableNestingSEI.m_callerOwnsSEIs = true; 427 #endif428 #if L0044_DU_DPB_OUTPUT_DELAY_HRD429 407 Int picSptDpbOutputDuDelay = 0; 430 #endif431 408 UInt *accumBitsDU = NULL; 432 409 UInt *accumNalsDU = NULL; … … 706 683 pcSlice->getRPS()->setNumberOfLongtermPictures(0); 707 684 685 #if FIX1071 686 if ((pcSlice->checkThatAllRefPicsAreAvailable(rcListPic, pcSlice->getRPS(), false) != 0) || (pcSlice->isIRAP())) 687 { 688 pcSlice->createExplicitReferencePictureSetFromReference(rcListPic, pcSlice->getRPS(), pcSlice->isIRAP()); 689 } 690 #else 708 691 if(pcSlice->checkThatAllRefPicsAreAvailable(rcListPic, pcSlice->getRPS(), false) != 0) 709 692 { 710 693 pcSlice->createExplicitReferencePictureSetFromReference(rcListPic, pcSlice->getRPS()); 711 694 } 695 #endif 712 696 pcSlice->applyReferencePictureSet(rcListPic, pcSlice->getRPS()); 713 697 … … 921 905 pcSlice->setSliceType ( P_SLICE ); 922 906 } 923 #if !L0034_COMBINED_LIST_CLEANUP924 if (pcSlice->getSliceType() != B_SLICE || !pcSlice->getSPS()->getUseLComb())925 {926 pcSlice->setNumRefIdx(REF_PIC_LIST_C, 0);927 pcSlice->setRefPicListCombinationFlag(false);928 pcSlice->setRefPicListModificationFlagLC(false);929 }930 else931 {932 pcSlice->setRefPicListCombinationFlag(pcSlice->getSPS()->getUseLComb());933 pcSlice->setNumRefIdx(REF_PIC_LIST_C, pcSlice->getNumRefIdx(REF_PIC_LIST_0));934 }935 #endif936 907 937 908 #if M0457_IL_SAMPLE_PRED_ONLY_FLAG … … 975 946 pcSlice->setRefPOCList(); 976 947 977 #if L0034_COMBINED_LIST_CLEANUP978 948 pcSlice->setList1IdxToList0Idx(); 979 #else980 pcSlice->setNoBackPredFlag( false );981 if ( pcSlice->getSliceType() == B_SLICE && !pcSlice->getRefPicListCombinationFlag())982 {983 if ( pcSlice->getNumRefIdx(RefPicList( 0 ) ) == pcSlice->getNumRefIdx(RefPicList( 1 ) ) )984 {985 pcSlice->setNoBackPredFlag( true );986 Int i;987 for ( i=0; i < pcSlice->getNumRefIdx(RefPicList( 1 ) ); i++ )988 {989 if ( pcSlice->getRefPOC(RefPicList(1), i) != pcSlice->getRefPOC(RefPicList(0), i) )990 {991 pcSlice->setNoBackPredFlag( false );992 break;993 }994 }995 }996 }997 998 if(pcSlice->getNoBackPredFlag())999 {1000 pcSlice->setNumRefIdx(REF_PIC_LIST_C, 0);1001 }1002 pcSlice->generateCombinedList();1003 #endif1004 949 1005 950 if (m_pcEncTop->getTMVPModeId() == 2) … … 1068 1013 1069 1014 #if RATE_CONTROL_LAMBDA_DOMAIN 1070 Int sliceQP = pcSlice->getSliceQp();1071 1015 Double lambda = 0.0; 1072 1016 Int actualHeadBits = 0; … … 1084 1028 estimatedBits = m_pcRateCtrl->getRCPic()->getTargetBits(); 1085 1029 1030 Int sliceQP = m_pcCfg->getInitialQP(); 1086 1031 if ( ( pcSlice->getPOC() == 0 && m_pcCfg->getInitialQP() > 0 ) || ( frameLevel == 0 && m_pcCfg->getForceIntraQP() ) ) // QP is specified 1087 1032 { 1088 sliceQP = m_pcCfg->getInitialQP();1089 1033 Int NumberBFrames = ( m_pcCfg->getGOPSize() - 1 ); 1090 1034 Double dLambda_scale = 1.0 - Clip3( 0.0, 0.5, 0.05*(Double)NumberBFrames ); … … 1097 1041 else if ( frameLevel == 0 ) // intra case, but use the model 1098 1042 { 1043 #if RATE_CONTROL_INTRA 1044 m_pcSliceEncoder->calCostSliceI(pcPic); 1045 #endif 1099 1046 if ( m_pcCfg->getIntraPeriod() != 1 ) // do not refine allocated bits for all intra case 1100 1047 { 1101 1048 Int bits = m_pcRateCtrl->getRCSeq()->getLeftAverageBits(); 1049 #if RATE_CONTROL_INTRA 1050 bits = m_pcRateCtrl->getRCPic()->getRefineBitsForIntra( bits ); 1051 #else 1102 1052 bits = m_pcRateCtrl->getRCSeq()->getRefineBitsForIntra( bits ); 1053 #endif 1103 1054 if ( bits < 200 ) 1104 1055 { … … 1109 1060 1110 1061 list<TEncRCPic*> listPreviousPicture = m_pcRateCtrl->getPicList(); 1062 #if RATE_CONTROL_INTRA 1063 m_pcRateCtrl->getRCPic()->getLCUInitTargetBits(); 1064 lambda = m_pcRateCtrl->getRCPic()->estimatePicLambda( listPreviousPicture, pcSlice->getSliceType()); 1065 #else 1111 1066 lambda = m_pcRateCtrl->getRCPic()->estimatePicLambda( listPreviousPicture ); 1067 #endif 1112 1068 sliceQP = m_pcRateCtrl->getRCPic()->estimatePicQP( lambda, listPreviousPicture ); 1113 1069 } … … 1115 1071 { 1116 1072 list<TEncRCPic*> listPreviousPicture = m_pcRateCtrl->getPicList(); 1073 #if RATE_CONTROL_INTRA 1074 lambda = m_pcRateCtrl->getRCPic()->estimatePicLambda( listPreviousPicture, pcSlice->getSliceType()); 1075 #else 1117 1076 lambda = m_pcRateCtrl->getRCPic()->estimatePicLambda( listPreviousPicture ); 1077 #endif 1118 1078 sliceQP = m_pcRateCtrl->getRCPic()->estimatePicQP( lambda, listPreviousPicture ); 1119 1079 } … … 1324 1284 Bool bLFCrossTileBoundary = pcSlice->getPPS()->getLoopFilterAcrossTilesEnabledFlag(); 1325 1285 m_pcLoopFilter->setCfg(bLFCrossTileBoundary); 1326 #if L0386_DB_METRIC1327 1286 if ( m_pcCfg->getDeblockingFilterMetric() ) 1328 1287 { 1329 1288 dblMetric(pcPic, uiNumSlices); 1330 1289 } 1331 #endif1332 1290 m_pcLoopFilter->loopFilterPic( pcPic ); 1333 1291 … … 1400 1358 UInt maxCU = m_pcCfg->getSliceArgument() >> ( pcSlice->getSPS()->getMaxCUDepth() << 1); 1401 1359 UInt numDU = ( m_pcCfg->getSliceMode() == 1 ) ? ( pcPic->getNumCUsInFrame() / maxCU ) : ( 0 ); 1402 if( pcPic->getNumCUsInFrame() % maxCU != 0 )1360 if( pcPic->getNumCUsInFrame() % maxCU != 0 || numDU == 0 ) 1403 1361 { 1404 1362 numDU ++; … … 1436 1394 } 1437 1395 1438 #if L0208_SOP_DESCRIPTION_SEI1439 1396 if (writeSOP) // write SOP description SEI (if enabled) at the beginning of GOP 1440 1397 { … … 1474 1431 writeSOP = false; 1475 1432 } 1476 #endif1477 1433 1478 1434 if( ( m_pcCfg->getPictureTimingSEIEnabled() || m_pcCfg->getDecodingUnitInfoSEIEnabled() ) && … … 1506 1462 pictureTimingSEI.m_auCpbRemovalDelay = std::max<Int>(1, m_totalCoded - m_lastBPSEI); // Syntax element signalled as minus, hence the . 1507 1463 pictureTimingSEI.m_picDpbOutputDelay = pcSlice->getSPS()->getNumReorderPics(0) + pcSlice->getPOC() - m_totalCoded; 1508 #if L0044_DU_DPB_OUTPUT_DELAY_HRD1509 1464 Int factor = pcSlice->getSPS()->getVuiParameters()->getHrdParameters()->getTickDivisorMinus2() + 2; 1510 1465 pictureTimingSEI.m_picDpbOutputDuDelay = factor * pictureTimingSEI.m_picDpbOutputDelay; … … 1513 1468 picSptDpbOutputDuDelay = factor * pictureTimingSEI.m_picDpbOutputDelay; 1514 1469 } 1515 #endif1516 1470 } 1517 1471 … … 1533 1487 sei_buffering_period.m_initialCpbRemovalDelayOffset[0][1] = uiInitialCpbRemovalDelay; 1534 1488 1535 #if L0043_TIMING_INFO1536 1489 Double dTmp = (Double)pcSlice->getSPS()->getVuiParameters()->getTimingInfo()->getNumUnitsInTick() / (Double)pcSlice->getSPS()->getVuiParameters()->getTimingInfo()->getTimeScale(); 1537 #else1538 Double dTmp = (Double)pcSlice->getSPS()->getVuiParameters()->getHrdParameters()->getNumUnitsInTick() / (Double)pcSlice->getSPS()->getVuiParameters()->getHrdParameters()->getTimeScale();1539 #endif1540 1490 1541 1491 UInt uiTmp = (UInt)( dTmp * 90000.0 ); … … 1548 1498 1549 1499 sei_buffering_period.m_rapCpbParamsPresentFlag = 0; 1550 #if L0328_SPLICING1551 1500 //for the concatenation, it can be set to one during splicing. 1552 1501 sei_buffering_period.m_concatenationFlag = 0; 1553 1502 //since the temporal layer HRD is not ready, we assumed it is fixed 1554 1503 sei_buffering_period.m_auCpbRemovalDelayDelta = 1; 1555 #endif1556 #if L0044_CPB_DPB_DELAY_OFFSET1557 1504 sei_buffering_period.m_cpbDelayOffset = 0; 1558 1505 sei_buffering_period.m_dpbDelayOffset = 0; 1559 #endif1560 1506 1561 1507 m_seiWriter.writeSEImessage( nalu.m_Bitstream, sei_buffering_period, pcSlice->getSPS()); 1562 1508 writeRBSPTrailingBits(nalu.m_Bitstream); 1563 #if L0045_NON_NESTED_SEI_RESTRICTIONS1564 1509 { 1565 1510 UInt seiPositionInAu = xGetFirstSeiLocation(accessUnit); … … 1573 1518 m_bufferingPeriodSEIPresentInAU = true; 1574 1519 } 1575 #else 1576 accessUnit.push_back(new NALUnitEBSP(nalu)); 1577 #endif 1578 1579 #if K0180_SCALABLE_NESTING_SEI 1520 1580 1521 if (m_pcCfg->getScalableNestingSEIEnabled()) 1581 1522 { … … 1587 1528 m_seiWriter.writeSEImessage( naluTmp.m_Bitstream, scalableNestingSEI, pcSlice->getSPS()); 1588 1529 writeRBSPTrailingBits(naluTmp.m_Bitstream); 1589 #if L0045_NON_NESTED_SEI_RESTRICTIONS1590 1530 UInt seiPositionInAu = xGetFirstSeiLocation(accessUnit); 1591 1531 UInt offsetPosition = m_activeParameterSetSEIPresentInAU + m_bufferingPeriodSEIPresentInAU + m_pictureTimingSEIPresentInAU; // Insert BP SEI after non-nested APS, BP and PT SEIs … … 1597 1537 accessUnit.insert(it, new NALUnitEBSP(naluTmp)); 1598 1538 m_nestedBufferingPeriodSEIPresentInAU = true; 1599 #else 1600 accessUnit.push_back(new NALUnitEBSP(naluTmp)); 1601 #endif 1602 } 1603 #endif 1539 } 1604 1540 1605 1541 m_lastBPSEI = m_totalCoded; … … 2065 2001 if ( m_pcCfg->getUseRateCtrl() ) 2066 2002 { 2003 #if !M0036_RC_IMPROVEMENT 2067 2004 Double effectivePercentage = m_pcRateCtrl->getRCPic()->getEffectivePercentage(); 2005 #endif 2068 2006 Double avgQP = m_pcRateCtrl->getRCPic()->calAverageQP(); 2069 2007 Double avgLambda = m_pcRateCtrl->getRCPic()->calAverageLambda(); … … 2072 2010 avgLambda = lambda; 2073 2011 } 2012 #if M0036_RC_IMPROVEMENT 2013 #if RATE_CONTROL_INTRA 2014 m_pcRateCtrl->getRCPic()->updateAfterPicture( actualHeadBits, actualTotalBits, avgQP, avgLambda, pcSlice->getSliceType()); 2015 #else 2016 m_pcRateCtrl->getRCPic()->updateAfterPicture( actualHeadBits, actualTotalBits, avgQP, avgLambda ); 2017 #endif 2018 #else 2074 2019 m_pcRateCtrl->getRCPic()->updateAfterPicture( actualHeadBits, actualTotalBits, avgQP, avgLambda, effectivePercentage ); 2020 #endif 2075 2021 m_pcRateCtrl->getRCPic()->addToPictureLsit( m_pcRateCtrl->getPicList() ); 2076 2022 … … 2092 2038 } 2093 2039 #endif 2040 2094 2041 if( ( m_pcCfg->getPictureTimingSEIEnabled() || m_pcCfg->getDecodingUnitInfoSEIEnabled() ) && 2095 2042 ( pcSlice->getSPS()->getVuiParametersPresentFlag() ) && … … 2126 2073 for( i = ( numDU - 2 ); i >= 0; i -- ) 2127 2074 { 2128 #if L0043_TIMING_INFO2129 2075 ui64Tmp = ( ( ( accumBitsDU[ numDU - 1 ] - accumBitsDU[ i ] ) * ( vui->getTimingInfo()->getTimeScale() / vui->getTimingInfo()->getNumUnitsInTick() ) * ( hrd->getTickDivisorMinus2() + 2 ) ) / ( m_pcCfg->getTargetBitrate() ) ); 2130 #else2131 ui64Tmp = ( ( ( accumBitsDU[ numDU - 1 ] - accumBitsDU[ i ] ) * ( hrd->getTimeScale() / hrd->getNumUnitsInTick() ) * ( hrd->getTickDivisorMinus2() + 2 ) ) / ( m_pcCfg->getTargetBitrate() ) );2132 #endif2133 2076 if( (UInt)ui64Tmp > maxDiff ) 2134 2077 { … … 2142 2085 { 2143 2086 flag = 0; 2144 #if L0043_TIMING_INFO2145 2087 ui64Tmp = ( ( ( accumBitsDU[ numDU - 1 ] - accumBitsDU[ i ] ) * ( vui->getTimingInfo()->getTimeScale() / vui->getTimingInfo()->getNumUnitsInTick() ) * ( hrd->getTickDivisorMinus2() + 2 ) ) / ( m_pcCfg->getTargetBitrate() ) ); 2146 #else2147 ui64Tmp = ( ( ( accumBitsDU[ numDU - 1 ] - accumBitsDU[ i ] ) * ( hrd->getTimeScale() / hrd->getNumUnitsInTick() ) * ( hrd->getTickDivisorMinus2() + 2 ) ) / ( m_pcCfg->getTargetBitrate() ) );2148 #endif2149 2088 2150 2089 if( (UInt)ui64Tmp > maxDiff ) … … 2178 2117 m_seiWriter.writeSEImessage(nalu.m_Bitstream, pictureTimingSEI, pcSlice->getSPS()); 2179 2118 writeRBSPTrailingBits(nalu.m_Bitstream); 2180 #if L0045_NON_NESTED_SEI_RESTRICTIONS2181 2119 UInt seiPositionInAu = xGetFirstSeiLocation(accessUnit); 2182 2120 UInt offsetPosition = m_activeParameterSetSEIPresentInAU … … 2189 2127 accessUnit.insert(it, new NALUnitEBSP(nalu)); 2190 2128 m_pictureTimingSEIPresentInAU = true; 2191 #else 2192 AccessUnit::iterator it = find_if(accessUnit.begin(), accessUnit.end(), mem_fun(&NALUnit::isSlice)); 2193 accessUnit.insert(it, new NALUnitEBSP(nalu)); 2194 #endif 2195 } 2196 #if K0180_SCALABLE_NESTING_SEI 2129 } 2197 2130 if ( m_pcCfg->getScalableNestingSEIEnabled() ) // put picture timing SEI into scalable nesting SEI 2198 2131 { … … 2203 2136 m_seiWriter.writeSEImessage(nalu.m_Bitstream, scalableNestingSEI, pcSlice->getSPS()); 2204 2137 writeRBSPTrailingBits(nalu.m_Bitstream); 2205 #if L0045_NON_NESTED_SEI_RESTRICTIONS2206 2138 UInt seiPositionInAu = xGetFirstSeiLocation(accessUnit); 2207 2139 UInt offsetPosition = m_activeParameterSetSEIPresentInAU … … 2214 2146 accessUnit.insert(it, new NALUnitEBSP(nalu)); 2215 2147 m_nestedPictureTimingSEIPresentInAU = true; 2216 #else2217 AccessUnit::iterator it = find_if(accessUnit.begin(), accessUnit.end(), mem_fun(&NALUnit::isSlice));2218 accessUnit.insert(it, new NALUnitEBSP(nalu));2219 #endif2220 2148 } 2221 #endif2222 2223 2149 } 2224 2150 if( m_pcCfg->getDecodingUnitInfoSEIEnabled() && hrd->getSubPicCpbParamsPresentFlag() ) … … 2232 2158 tempSEI.m_decodingUnitIdx = i; 2233 2159 tempSEI.m_duSptCpbRemovalDelay = pictureTimingSEI.m_duCpbRemovalDelayMinus1[i] + 1; 2234 #if L0044_DU_DPB_OUTPUT_DELAY_HRD2235 2160 tempSEI.m_dpbOutputDuDelayPresentFlag = false; 2236 2161 tempSEI.m_picSptDpbOutputDuDelay = picSptDpbOutputDuDelay; 2237 #endif2238 2162 2239 2163 AccessUnit::iterator it; … … 2245 2169 writeRBSPTrailingBits(nalu.m_Bitstream); 2246 2170 2247 #if L0045_NON_NESTED_SEI_RESTRICTIONS2248 2171 UInt seiPositionInAu = xGetFirstSeiLocation(accessUnit); 2249 2172 UInt offsetPosition = m_activeParameterSetSEIPresentInAU … … 2255 2178 } 2256 2179 accessUnit.insert(it, new NALUnitEBSP(nalu)); 2257 #else2258 it = find_if(accessUnit.begin(), accessUnit.end(), mem_fun(&NALUnit::isSlice));2259 accessUnit.insert(it, new NALUnitEBSP(nalu));2260 #endif2261 2180 } 2262 2181 else … … 2284 2203 } 2285 2204 } 2286 #if L0045_NON_NESTED_SEI_RESTRICTIONS2287 2205 xResetNonNestedSEIPresentFlags(); 2288 #if K0180_SCALABLE_NESTING_SEI2289 2206 xResetNestedSEIPresentFlags(); 2290 #endif2291 #endif2292 2207 pcPic->getPicYuvRec()->copyToPic(pcPicYuvRecOut); 2293 2208 … … 2445 2360 } 2446 2361 2447 assert (rpcPic->getPOC() == pocCurr); 2362 assert( rpcPic != NULL ); 2363 assert( rpcPic->getPOC() == pocCurr ); 2448 2364 2449 2365 return; … … 2945 2861 } 2946 2862 2947 #if L0045_NON_NESTED_SEI_RESTRICTIONS2948 2863 /** Function for finding the position to insert the first of APS and non-nested BP, PT, DU info SEI messages. 2949 2864 * \param accessUnit Access Unit of the current picture … … 2965 2880 return seiStartPos; 2966 2881 } 2967 #endif 2968 2969 #if L0386_DB_METRIC 2882 2970 2883 Void TEncGOP::dblMetric( TComPic* pcPic, UInt uiNumSlices ) 2971 2884 { … … 2981 2894 const UInt noCol = (picWidth>>log2maxTB); 2982 2895 const UInt noRows = (picHeight>>log2maxTB); 2896 assert(noCol > 1); 2897 assert(noRows > 1); 2983 2898 UInt64 *colSAD = (UInt64*)malloc(noCol*sizeof(UInt64)); 2984 2899 UInt64 *rowSAD = (UInt64*)malloc(noRows*sizeof(UInt64)); … … 3089 3004 free(rowSAD); 3090 3005 } 3091 #endif3092 3006 3093 3007 #if M0457_COL_PICTURE_SIGNALING
Note: See TracChangeset for help on using the changeset viewer.