Ignore:
Timestamp:
21 Oct 2013, 17:52:23 (11 years ago)
Author:
tech
Message:

Update to HM 12.0.

Location:
branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibDecoder
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibDecoder/SEIread.cpp

    r608 r651  
    315315
    316316  /* restore primary bitstream for sei_message */
     317  getBitstream()->deleteFifo();
    317318  delete getBitstream();
    318319  setBitstream(bs);
  • branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibDecoder/SyntaxElementParser.cpp

    r622 r651  
    5858  if (length < 10)
    5959  {
    60     fprintf( g_hTrace, "%-50s u(%d)  : %d\n", pSymbolName, length, rValue );
     60    fprintf( g_hTrace, "%-50s u(%d)  : %u\n", pSymbolName, length, rValue );
    6161  }
    6262  else
    6363  {
    64     fprintf( g_hTrace, "%-50s u(%d) : %d\n", pSymbolName, length, rValue );
     64    fprintf( g_hTrace, "%-50s u(%d) : %u\n", pSymbolName, length, rValue );
    6565  }
    6666  fflush ( g_hTrace );
     
    7777#endif
    7878  fprintf( g_hTrace, "%8lld  ", g_nSymbolCounter++ );
    79   fprintf( g_hTrace, "%-50s ue(v) : %d\n", pSymbolName, rValue );
     79  fprintf( g_hTrace, "%-50s ue(v) : %u\n", pSymbolName, rValue );
    8080  fflush ( g_hTrace );
    8181}
  • branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r649 r651  
    14411441      READ_CODE(sps->getBitsForPOC(), uiCode, "pic_order_cnt_lsb"); 
    14421442      Int iPOClsb = uiCode;
    1443       Int iPrevPOC = rpcSlice->getPrevPOC();
     1443      Int iPrevPOC = rpcSlice->getPrevTid0POC();
    14441444      Int iMaxPOClsb = 1<< sps->getBitsForPOC();
    1445       Int iPrevPOClsb = iPrevPOC%iMaxPOClsb;
     1445      Int iPrevPOClsb = iPrevPOC & (iMaxPOClsb - 1);
    14461446      Int iPrevPOCmsb = iPrevPOC-iPrevPOClsb;
    14471447      Int iPOCmsb;
     
    15721572            rps->setDeltaPOC(j, - rpcSlice->getPOC() + pocLsbLt);
    15731573            rps->setCheckLTMSBPresent(j,false); 
     1574           
     1575            // reset deltaPocMSBCycleLT for first LTRP from slice header if MSB not present
     1576            if( j == offset+(numOfLtrp-numLtrpInSPS)-1 )
     1577            {
     1578              deltaPocMSBCycleLT = 0;
     1579            }
    15741580          }
    15751581          prevDeltaMSB = deltaPocMSBCycleLT;
  • branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibDecoder/TDecSlice.h

    r608 r651  
    6565  TDecEntropy*    m_pcEntropyDecoder;
    6666  TDecCu*         m_pcCuDecoder;
    67   UInt            m_uiCurrSliceIdx;
    6867
    6968  TDecSbac*       m_pcBufferSbacDecoders;   ///< line to store temporary contexts, one per column of tiles.
  • branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibDecoder/TDecTop.cpp

    r648 r651  
    347347#endif
    348348#endif
     349  m_associatedIRAPType = NAL_UNIT_INVALID;
    349350  m_pocCRA = 0;
    350   m_prevRAPisBLA = false;
    351351  m_pocRandomAccess = MAX_INT; 
    352352  m_prevPOC                = MAX_INT;
    353353  m_bFirstSliceInPicture    = true;
    354354  m_bFirstSliceInSequence   = true;
     355  m_prevSliceSkipped = false;
     356  m_skippedPOC = 0;
    355357#if H_MV
    356358  m_layerId = 0;
     
    686688  m_cEntropyDecoder.decodeSliceHeader (m_apcSlicePilot, &m_parameterSetManagerDecoder);
    687689
     690  // set POC for dependent slices in skipped pictures
     691  if(m_apcSlicePilot->getDependentSliceSegmentFlag() && m_prevSliceSkipped)
     692  {
     693    m_apcSlicePilot->setPOC(m_skippedPOC);
     694  }
     695
     696  m_apcSlicePilot->setAssociatedIRAPPOC(m_pocCRA);
     697  m_apcSlicePilot->setAssociatedIRAPType(m_associatedIRAPType);
     698
    688699#if H_MV 
    689700  TComVPS* vps     = m_apcSlicePilot->getVPS();
     
    699710    if (isRandomAccessSkipPicture(iSkipFrame, iPOCLastDisplay))
    700711    {
     712    m_prevSliceSkipped = true;
     713    m_skippedPOC = m_apcSlicePilot->getPOC();
    701714      return false;
    702715    }
     
    704717    if (isSkipPictureForBLA(iPOCLastDisplay))
    705718    {
     719    m_prevSliceSkipped = true;
     720    m_skippedPOC = m_apcSlicePilot->getPOC();
    706721      return false;
    707722    }
     723
     724  // clear previous slice skipped flag
     725  m_prevSliceSkipped = false;
    708726
    709727  //we should only get a different poc for a new picture (with CTU address==0)
     
    766784    xGetNewPicBuffer (m_apcSlicePilot, pcPic);
    767785
     786    Bool isField = false;
     787    Bool isTff = false;
     788   
     789    if(!m_SEIs.empty())
     790    {
     791      // Check if any new Picture Timing SEI has arrived
     792      SEIMessages pictureTimingSEIs = extractSeisByType (m_SEIs, SEI::PICTURE_TIMING);
     793      if (pictureTimingSEIs.size()>0)
     794      {
     795        SEIPictureTiming* pictureTiming = (SEIPictureTiming*) *(pictureTimingSEIs.begin());
     796        isField = (pictureTiming->m_picStruct == 1) || (pictureTiming->m_picStruct == 2);
     797        isTff =  (pictureTiming->m_picStruct == 1);
     798      }
     799    }
     800   
     801    //Set Field/Frame coding mode
     802    m_pcPic->setField(isField);
     803    m_pcPic->setTopField(isTff);
     804   
    768805    // transfer any SEI messages that have been received to the picture
    769806    pcPic->setSEIs(m_SEIs);
     
    904941  if (bNextSlice)
    905942  {
    906     pcSlice->checkCRA(pcSlice->getRPS(), m_pocCRA, m_prevRAPisBLA, m_cListPic );
     943    pcSlice->checkCRA(pcSlice->getRPS(), m_pocCRA, m_associatedIRAPType, m_cListPic );
    907944    // Set reference list
    908945#if H_MV   
     
    10031040      pcSlice->setScalingList ( pcSlice->getPPS()->getScalingList()  );
    10041041    }
    1005     pcSlice->getScalingList()->setUseTransformSkip(pcSlice->getPPS()->getUseTransformSkip());
    10061042    if(!pcSlice->getPPS()->getScalingListPresentFlag() && !pcSlice->getSPS()->getScalingListPresentFlag())
    10071043    {
     
    11681204Bool TDecTop::isSkipPictureForBLA(Int& iPOCLastDisplay)
    11691205{
    1170   if (m_prevRAPisBLA && m_apcSlicePilot->getPOC() < m_pocCRA && (m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_RASL_R || m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_RASL_N))
     1206  if ((m_associatedIRAPType == NAL_UNIT_CODED_SLICE_BLA_N_LP || m_associatedIRAPType == NAL_UNIT_CODED_SLICE_BLA_W_LP || m_associatedIRAPType == NAL_UNIT_CODED_SLICE_BLA_W_RADL) &&
     1207       m_apcSlicePilot->getPOC() < m_pocCRA && (m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_RASL_R || m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_RASL_N))
    11711208  {
    11721209    iPOCLastDisplay++;
  • branches/HTM-8.2-dev0-Cleanup/source/Lib/TLibDecoder/TDecTop.h

    r648 r651  
    176176  Int                     m_iMaxRefPicNum;
    177177 
     178  NalUnitType             m_associatedIRAPType; ///< NAL unit type of the associated IRAP picture
    178179  Int                     m_pocCRA;            ///< POC number of the latest CRA picture
    179   Bool                    m_prevRAPisBLA;      ///< true if the previous RAP (CRA/CRANT/BLA/BLANT/IDR) picture is a BLA/BLANT picture
    180180  Int                     m_pocRandomAccess;   ///< POC number of the random access point (the first IDR or CRA picture)
    181181
     
    211211  Bool                    m_bFirstSliceInPicture;
    212212  Bool                    m_bFirstSliceInSequence;
     213  Bool                    m_prevSliceSkipped;
     214  Int                     m_skippedPOC;
     215
    213216#if H_MV
    214217  // For H_MV m_bFirstSliceInSequence indicates first slice in sequence of the particular layer 
Note: See TracChangeset for help on using the changeset viewer.