Ignore:
Timestamp:
28 Jun 2013, 00:40:00 (11 years ago)
Author:
seregin
Message:

update to HM11.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-2.1-dev/source/Lib/TLibEncoder/TEncGOP.cpp

    r297 r302  
    9494  m_cpbRemovalDelay   = 0;
    9595  m_lastBPSEI         = 0;
    96 #if L0045_NON_NESTED_SEI_RESTRICTIONS
    9796  xResetNonNestedSEIPresentFlags();
    98 #if K0180_SCALABLE_NESTING_SEI
    9997  xResetNestedSEIPresentFlags();
    100 #endif
    101 #endif
    10298#if SVC_UPSAMPLING
    10399  m_pcPredSearch        = NULL;
     
    163159  SEIActiveParameterSets *seiActiveParameterSets = new SEIActiveParameterSets();
    164160  seiActiveParameterSets->activeVPSId = m_pcCfg->getVPS()->getVPSId();
    165 #if L0047_APS_FLAGS
    166161  seiActiveParameterSets->m_fullRandomAccessFlag = false;
    167162  seiActiveParameterSets->m_noParamSetUpdateFlag = false;
    168 #endif
    169163  seiActiveParameterSets->numSpsIdsMinus1 = 0;
    170164  seiActiveParameterSets->activeSeqParamSetId.resize(seiActiveParameterSets->numSpsIdsMinus1 + 1);
     
    198192  seiFramePacking->m_arrangementCancelFlag = 0;
    199193  seiFramePacking->m_arrangementType = m_pcCfg->getFramePackingArrangementSEIType();
    200 #if L0444_FPA_TYPE
    201194  assert((seiFramePacking->m_arrangementType > 2) && (seiFramePacking->m_arrangementType < 6) );
    202 #endif
    203195  seiFramePacking->m_quincunxSamplingFlag = m_pcCfg->getFramePackingArrangementSEIQuincunx();
    204196  seiFramePacking->m_contentInterpretationType = m_pcCfg->getFramePackingArrangementSEIInterpretation();
     
    214206  seiFramePacking->m_frame1GridPositionY = 0;
    215207  seiFramePacking->m_arrangementReservedByte = 0;
    216 #if L0045_PERSISTENCE_FLAGS
    217208  seiFramePacking->m_arrangementPersistenceFlag = true;
    218 #else
    219   seiFramePacking->m_arrangementRepetetionPeriod = 1;
    220 #endif
    221209  seiFramePacking->m_upsampledAspectRatio = 0;
    222210  return seiFramePacking;
     
    233221}
    234222
    235 #if J0149_TONE_MAPPING_SEI
    236223SEIToneMappingInfo*  TEncGOP::xCreateSEIToneMappingInfo()
    237224{
     
    244231  assert(seiToneMappingInfo->m_codedDataBitDepth >= 8 && seiToneMappingInfo->m_codedDataBitDepth <= 14);
    245232  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 );
    247234  seiToneMappingInfo->m_modelId = m_pcCfg->getTMISEIModelID();
    248235  assert(seiToneMappingInfo->m_modelId >=0 &&seiToneMappingInfo->m_modelId<=4);
     
    319306  return seiToneMappingInfo;
    320307}
    321 #endif
     308
    322309Void TEncGOP::xCreateLeadingSEIMessages (/*SEIMessages seiMessages,*/ AccessUnit &accessUnit, TComSPS *sps)
    323310{
     
    334321    accessUnit.push_back(new NALUnitEBSP(nalu));
    335322    delete sei;
    336 #if L0045_NON_NESTED_SEI_RESTRICTIONS
    337323    m_activeParameterSetSEIPresentInAU = true;
    338 #endif
    339324  }
    340325
     
    373358    delete sei;
    374359  }
    375 #if J0149_TONE_MAPPING_SEI
    376360  if(m_pcCfg->getToneMappingInfoSEIEnabled())
    377361  {
     
    385369    delete sei;
    386370  }
    387 #endif
    388371}
    389372
     
    411394  m_iNumPicCoded = 0;
    412395  SEIPictureTiming pictureTimingSEI;
    413 #if L0208_SOP_DESCRIPTION_SEI
    414396  Bool writeSOP = m_pcCfg->getSOPDescriptionSEIEnabled();
    415 #endif
    416 #if K0180_SCALABLE_NESTING_SEI
    417397  // Initialize Scalable Nesting SEI with single layer values
    418398  SEIScalableNesting scalableNestingSEI;
     
    425405  scalableNestingSEI.m_nestingLayerId[0]             = 0;
    426406  scalableNestingSEI.m_callerOwnsSEIs                = true;
    427 #endif
    428 #if L0044_DU_DPB_OUTPUT_DELAY_HRD
    429407  Int picSptDpbOutputDuDelay = 0;
    430 #endif
    431408  UInt *accumBitsDU = NULL;
    432409  UInt *accumNalsDU = NULL;
     
    706683    pcSlice->getRPS()->setNumberOfLongtermPictures(0);
    707684
     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
    708691    if(pcSlice->checkThatAllRefPicsAreAvailable(rcListPic, pcSlice->getRPS(), false) != 0)
    709692    {
    710693      pcSlice->createExplicitReferencePictureSetFromReference(rcListPic, pcSlice->getRPS());
    711694    }
     695#endif
    712696    pcSlice->applyReferencePictureSet(rcListPic, pcSlice->getRPS());
    713697
     
    921905      pcSlice->setSliceType ( P_SLICE );
    922906    }
    923 #if !L0034_COMBINED_LIST_CLEANUP
    924     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     else
    931     {
    932       pcSlice->setRefPicListCombinationFlag(pcSlice->getSPS()->getUseLComb());
    933       pcSlice->setNumRefIdx(REF_PIC_LIST_C, pcSlice->getNumRefIdx(REF_PIC_LIST_0));
    934     }
    935 #endif
    936907
    937908#if M0457_IL_SAMPLE_PRED_ONLY_FLAG
     
    975946    pcSlice->setRefPOCList();
    976947
    977 #if L0034_COMBINED_LIST_CLEANUP
    978948    pcSlice->setList1IdxToList0Idx();
    979 #else
    980     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 #endif
    1004949
    1005950    if (m_pcEncTop->getTMVPModeId() == 2)
     
    10681013
    10691014#if RATE_CONTROL_LAMBDA_DOMAIN
    1070     Int sliceQP              = pcSlice->getSliceQp();
    10711015    Double lambda            = 0.0;
    10721016    Int actualHeadBits       = 0;
     
    10841028      estimatedBits = m_pcRateCtrl->getRCPic()->getTargetBits();
    10851029
     1030      Int sliceQP = m_pcCfg->getInitialQP();
    10861031      if ( ( pcSlice->getPOC() == 0 && m_pcCfg->getInitialQP() > 0 ) || ( frameLevel == 0 && m_pcCfg->getForceIntraQP() ) ) // QP is specified
    10871032      {
    1088         sliceQP              = m_pcCfg->getInitialQP();
    10891033        Int    NumberBFrames = ( m_pcCfg->getGOPSize() - 1 );
    10901034        Double dLambda_scale = 1.0 - Clip3( 0.0, 0.5, 0.05*(Double)NumberBFrames );
     
    10971041      else if ( frameLevel == 0 )   // intra case, but use the model
    10981042      {
     1043#if RATE_CONTROL_INTRA
     1044        m_pcSliceEncoder->calCostSliceI(pcPic);
     1045#endif
    10991046        if ( m_pcCfg->getIntraPeriod() != 1 )   // do not refine allocated bits for all intra case
    11001047        {
    11011048          Int bits = m_pcRateCtrl->getRCSeq()->getLeftAverageBits();
     1049#if RATE_CONTROL_INTRA
     1050          bits = m_pcRateCtrl->getRCPic()->getRefineBitsForIntra( bits );
     1051#else
    11021052          bits = m_pcRateCtrl->getRCSeq()->getRefineBitsForIntra( bits );
     1053#endif
    11031054          if ( bits < 200 )
    11041055          {
     
    11091060
    11101061        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
    11111066        lambda  = m_pcRateCtrl->getRCPic()->estimatePicLambda( listPreviousPicture );
     1067#endif
    11121068        sliceQP = m_pcRateCtrl->getRCPic()->estimatePicQP( lambda, listPreviousPicture );
    11131069      }
     
    11151071      {
    11161072        list<TEncRCPic*> listPreviousPicture = m_pcRateCtrl->getPicList();
     1073#if RATE_CONTROL_INTRA
     1074        lambda  = m_pcRateCtrl->getRCPic()->estimatePicLambda( listPreviousPicture, pcSlice->getSliceType());
     1075#else
    11171076        lambda  = m_pcRateCtrl->getRCPic()->estimatePicLambda( listPreviousPicture );
     1077#endif
    11181078        sliceQP = m_pcRateCtrl->getRCPic()->estimatePicQP( lambda, listPreviousPicture );
    11191079      }
     
    13241284    Bool bLFCrossTileBoundary = pcSlice->getPPS()->getLoopFilterAcrossTilesEnabledFlag();
    13251285    m_pcLoopFilter->setCfg(bLFCrossTileBoundary);
    1326 #if L0386_DB_METRIC
    13271286    if ( m_pcCfg->getDeblockingFilterMetric() )
    13281287    {
    13291288      dblMetric(pcPic, uiNumSlices);
    13301289    }
    1331 #endif
    13321290    m_pcLoopFilter->loopFilterPic( pcPic );
    13331291
     
    14001358        UInt maxCU = m_pcCfg->getSliceArgument() >> ( pcSlice->getSPS()->getMaxCUDepth() << 1);
    14011359        UInt numDU = ( m_pcCfg->getSliceMode() == 1 ) ? ( pcPic->getNumCUsInFrame() / maxCU ) : ( 0 );
    1402         if( pcPic->getNumCUsInFrame() % maxCU != 0 )
     1360        if( pcPic->getNumCUsInFrame() % maxCU != 0 || numDU == 0 )
    14031361        {
    14041362          numDU ++;
     
    14361394    }
    14371395
    1438 #if L0208_SOP_DESCRIPTION_SEI
    14391396    if (writeSOP) // write SOP description SEI (if enabled) at the beginning of GOP
    14401397    {
     
    14741431      writeSOP = false;
    14751432    }
    1476 #endif
    14771433
    14781434    if( ( m_pcCfg->getPictureTimingSEIEnabled() || m_pcCfg->getDecodingUnitInfoSEIEnabled() ) &&
     
    15061462      pictureTimingSEI.m_auCpbRemovalDelay = std::max<Int>(1, m_totalCoded - m_lastBPSEI); // Syntax element signalled as minus, hence the .
    15071463      pictureTimingSEI.m_picDpbOutputDelay = pcSlice->getSPS()->getNumReorderPics(0) + pcSlice->getPOC() - m_totalCoded;
    1508 #if L0044_DU_DPB_OUTPUT_DELAY_HRD
    15091464      Int factor = pcSlice->getSPS()->getVuiParameters()->getHrdParameters()->getTickDivisorMinus2() + 2;
    15101465      pictureTimingSEI.m_picDpbOutputDuDelay = factor * pictureTimingSEI.m_picDpbOutputDelay;
     
    15131468        picSptDpbOutputDuDelay = factor * pictureTimingSEI.m_picDpbOutputDelay;
    15141469      }
    1515 #endif
    15161470    }
    15171471
     
    15331487      sei_buffering_period.m_initialCpbRemovalDelayOffset[0][1]     = uiInitialCpbRemovalDelay;
    15341488
    1535 #if L0043_TIMING_INFO
    15361489      Double dTmp = (Double)pcSlice->getSPS()->getVuiParameters()->getTimingInfo()->getNumUnitsInTick() / (Double)pcSlice->getSPS()->getVuiParameters()->getTimingInfo()->getTimeScale();
    1537 #else
    1538       Double dTmp = (Double)pcSlice->getSPS()->getVuiParameters()->getHrdParameters()->getNumUnitsInTick() / (Double)pcSlice->getSPS()->getVuiParameters()->getHrdParameters()->getTimeScale();
    1539 #endif
    15401490
    15411491      UInt uiTmp = (UInt)( dTmp * 90000.0 );
     
    15481498
    15491499      sei_buffering_period.m_rapCpbParamsPresentFlag              = 0;
    1550 #if L0328_SPLICING
    15511500      //for the concatenation, it can be set to one during splicing.
    15521501      sei_buffering_period.m_concatenationFlag = 0;
    15531502      //since the temporal layer HRD is not ready, we assumed it is fixed
    15541503      sei_buffering_period.m_auCpbRemovalDelayDelta = 1;
    1555 #endif
    1556 #if L0044_CPB_DPB_DELAY_OFFSET
    15571504      sei_buffering_period.m_cpbDelayOffset = 0;
    15581505      sei_buffering_period.m_dpbDelayOffset = 0;
    1559 #endif
    15601506
    15611507      m_seiWriter.writeSEImessage( nalu.m_Bitstream, sei_buffering_period, pcSlice->getSPS());
    15621508      writeRBSPTrailingBits(nalu.m_Bitstream);
    1563 #if L0045_NON_NESTED_SEI_RESTRICTIONS
    15641509      {
    15651510      UInt seiPositionInAu = xGetFirstSeiLocation(accessUnit);
     
    15731518      m_bufferingPeriodSEIPresentInAU = true;
    15741519      }
    1575 #else
    1576       accessUnit.push_back(new NALUnitEBSP(nalu));
    1577 #endif
    1578 
    1579 #if K0180_SCALABLE_NESTING_SEI
     1520
    15801521      if (m_pcCfg->getScalableNestingSEIEnabled())
    15811522      {
     
    15871528        m_seiWriter.writeSEImessage( naluTmp.m_Bitstream, scalableNestingSEI, pcSlice->getSPS());
    15881529        writeRBSPTrailingBits(naluTmp.m_Bitstream);
    1589 #if L0045_NON_NESTED_SEI_RESTRICTIONS
    15901530        UInt seiPositionInAu = xGetFirstSeiLocation(accessUnit);
    15911531        UInt offsetPosition = m_activeParameterSetSEIPresentInAU + m_bufferingPeriodSEIPresentInAU + m_pictureTimingSEIPresentInAU;   // Insert BP SEI after non-nested APS, BP and PT SEIs
     
    15971537        accessUnit.insert(it, new NALUnitEBSP(naluTmp));
    15981538        m_nestedBufferingPeriodSEIPresentInAU = true;
    1599 #else
    1600         accessUnit.push_back(new NALUnitEBSP(naluTmp));
    1601 #endif
    1602       }
    1603 #endif
     1539      }
    16041540
    16051541      m_lastBPSEI = m_totalCoded;
     
    20652001      if ( m_pcCfg->getUseRateCtrl() )
    20662002      {
     2003#if !M0036_RC_IMPROVEMENT
    20672004        Double effectivePercentage = m_pcRateCtrl->getRCPic()->getEffectivePercentage();
     2005#endif
    20682006        Double avgQP     = m_pcRateCtrl->getRCPic()->calAverageQP();
    20692007        Double avgLambda = m_pcRateCtrl->getRCPic()->calAverageLambda();
     
    20722010          avgLambda = lambda;
    20732011        }
     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
    20742019        m_pcRateCtrl->getRCPic()->updateAfterPicture( actualHeadBits, actualTotalBits, avgQP, avgLambda, effectivePercentage );
     2020#endif
    20752021        m_pcRateCtrl->getRCPic()->addToPictureLsit( m_pcRateCtrl->getPicList() );
    20762022
     
    20922038      }
    20932039#endif
     2040
    20942041      if( ( m_pcCfg->getPictureTimingSEIEnabled() || m_pcCfg->getDecodingUnitInfoSEIEnabled() ) &&
    20952042          ( pcSlice->getSPS()->getVuiParametersPresentFlag() ) &&
     
    21262073            for( i = ( numDU - 2 ); i >= 0; i -- )
    21272074            {
    2128 #if L0043_TIMING_INFO
    21292075              ui64Tmp = ( ( ( accumBitsDU[ numDU - 1 ]  - accumBitsDU[ i ] ) * ( vui->getTimingInfo()->getTimeScale() / vui->getTimingInfo()->getNumUnitsInTick() ) * ( hrd->getTickDivisorMinus2() + 2 ) ) / ( m_pcCfg->getTargetBitrate() ) );
    2130 #else
    2131               ui64Tmp = ( ( ( accumBitsDU[ numDU - 1 ]  - accumBitsDU[ i ] ) * ( hrd->getTimeScale() / hrd->getNumUnitsInTick() ) * ( hrd->getTickDivisorMinus2() + 2 ) ) / ( m_pcCfg->getTargetBitrate() ) );
    2132 #endif
    21332076              if( (UInt)ui64Tmp > maxDiff )
    21342077              {
     
    21422085            {
    21432086              flag = 0;
    2144 #if L0043_TIMING_INFO
    21452087              ui64Tmp = ( ( ( accumBitsDU[ numDU - 1 ]  - accumBitsDU[ i ] ) * ( vui->getTimingInfo()->getTimeScale() / vui->getTimingInfo()->getNumUnitsInTick() ) * ( hrd->getTickDivisorMinus2() + 2 ) ) / ( m_pcCfg->getTargetBitrate() ) );
    2146 #else
    2147               ui64Tmp = ( ( ( accumBitsDU[ numDU - 1 ]  - accumBitsDU[ i ] ) * ( hrd->getTimeScale() / hrd->getNumUnitsInTick() ) * ( hrd->getTickDivisorMinus2() + 2 ) ) / ( m_pcCfg->getTargetBitrate() ) );
    2148 #endif
    21492088
    21502089              if( (UInt)ui64Tmp > maxDiff )
     
    21782117          m_seiWriter.writeSEImessage(nalu.m_Bitstream, pictureTimingSEI, pcSlice->getSPS());
    21792118          writeRBSPTrailingBits(nalu.m_Bitstream);
    2180 #if L0045_NON_NESTED_SEI_RESTRICTIONS
    21812119          UInt seiPositionInAu = xGetFirstSeiLocation(accessUnit);
    21822120          UInt offsetPosition = m_activeParameterSetSEIPresentInAU
     
    21892127          accessUnit.insert(it, new NALUnitEBSP(nalu));
    21902128          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        }
    21972130          if ( m_pcCfg->getScalableNestingSEIEnabled() ) // put picture timing SEI into scalable nesting SEI
    21982131          {
     
    22032136            m_seiWriter.writeSEImessage(nalu.m_Bitstream, scalableNestingSEI, pcSlice->getSPS());
    22042137            writeRBSPTrailingBits(nalu.m_Bitstream);
    2205 #if L0045_NON_NESTED_SEI_RESTRICTIONS
    22062138            UInt seiPositionInAu = xGetFirstSeiLocation(accessUnit);
    22072139            UInt offsetPosition = m_activeParameterSetSEIPresentInAU
     
    22142146            accessUnit.insert(it, new NALUnitEBSP(nalu));
    22152147            m_nestedPictureTimingSEIPresentInAU = true;
    2216 #else
    2217             AccessUnit::iterator it = find_if(accessUnit.begin(), accessUnit.end(), mem_fun(&NALUnit::isSlice));
    2218             accessUnit.insert(it, new NALUnitEBSP(nalu));
    2219 #endif
    22202148          }
    2221 #endif
    2222 
    22232149        }
    22242150        if( m_pcCfg->getDecodingUnitInfoSEIEnabled() && hrd->getSubPicCpbParamsPresentFlag() )
     
    22322158            tempSEI.m_decodingUnitIdx = i;
    22332159            tempSEI.m_duSptCpbRemovalDelay = pictureTimingSEI.m_duCpbRemovalDelayMinus1[i] + 1;
    2234 #if L0044_DU_DPB_OUTPUT_DELAY_HRD
    22352160            tempSEI.m_dpbOutputDuDelayPresentFlag = false;
    22362161            tempSEI.m_picSptDpbOutputDuDelay = picSptDpbOutputDuDelay;
    2237 #endif
    22382162
    22392163            AccessUnit::iterator it;
     
    22452169              writeRBSPTrailingBits(nalu.m_Bitstream);
    22462170
    2247 #if L0045_NON_NESTED_SEI_RESTRICTIONS
    22482171              UInt seiPositionInAu = xGetFirstSeiLocation(accessUnit);
    22492172              UInt offsetPosition = m_activeParameterSetSEIPresentInAU
     
    22552178              }
    22562179              accessUnit.insert(it, new NALUnitEBSP(nalu));
    2257 #else
    2258               it = find_if(accessUnit.begin(), accessUnit.end(), mem_fun(&NALUnit::isSlice));
    2259               accessUnit.insert(it, new NALUnitEBSP(nalu));
    2260 #endif
    22612180            }
    22622181            else
     
    22842203        }
    22852204      }
    2286 #if L0045_NON_NESTED_SEI_RESTRICTIONS
    22872205      xResetNonNestedSEIPresentFlags();
    2288 #if K0180_SCALABLE_NESTING_SEI
    22892206      xResetNestedSEIPresentFlags();
    2290 #endif
    2291 #endif
    22922207      pcPic->getPicYuvRec()->copyToPic(pcPicYuvRecOut);
    22932208
     
    24452360  }
    24462361 
    2447   assert (rpcPic->getPOC() == pocCurr);
     2362  assert( rpcPic != NULL );
     2363  assert( rpcPic->getPOC() == pocCurr );
    24482364 
    24492365  return;
     
    29452861}
    29462862
    2947 #if L0045_NON_NESTED_SEI_RESTRICTIONS
    29482863/** Function for finding the position to insert the first of APS and non-nested BP, PT, DU info SEI messages.
    29492864 * \param accessUnit Access Unit of the current picture
     
    29652880  return seiStartPos;
    29662881}
    2967 #endif
    2968 
    2969 #if L0386_DB_METRIC
     2882
    29702883Void TEncGOP::dblMetric( TComPic* pcPic, UInt uiNumSlices )
    29712884{
     
    29812894  const UInt noCol = (picWidth>>log2maxTB);
    29822895  const UInt noRows = (picHeight>>log2maxTB);
     2896  assert(noCol > 1);
     2897  assert(noRows > 1);
    29832898  UInt64 *colSAD = (UInt64*)malloc(noCol*sizeof(UInt64));
    29842899  UInt64 *rowSAD = (UInt64*)malloc(noRows*sizeof(UInt64));
     
    30893004  free(rowSAD);
    30903005}
    3091 #endif
    30923006
    30933007#if M0457_COL_PICTURE_SIGNALING
Note: See TracChangeset for help on using the changeset viewer.