Changeset 769 in 3DVCSoftware for branches/HTM-9.2-dev0/source/Lib/TLibDecoder


Ignore:
Timestamp:
13 Jan 2014, 08:05:57 (11 years ago)
Author:
tech
Message:

Further fixes.

Location:
branches/HTM-9.2-dev0/source/Lib/TLibDecoder
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-9.2-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r768 r769  
    937937
    938938  READ_FLAG( uiCode, "sps_extension_flag");
     939#if H_MV
    939940  pcSPS->setSpsExtensionFlag( uiCode );
    940941  if (pcSPS->getSpsExtensionFlag( ) )
    941   {
     942#else
     943  if (uiCode)
     944#endif
     945  {
     946#if H_MV
    942947    for (Int i = 0; i < PS_EX_T_MAX_NUM; i++)
    943948    {
     
    964969    if ( pcSPS->getSpsExtensionTypeFlag( PS_EX_T_ESC ))
    965970    {   
     971#endif
    966972        while ( xMoreRbspData() )
    967973        {
    968974          READ_FLAG( uiCode, "sps_extension_data_flag");
    969975        }
    970     }
     976#if H_MV
     977    }
     978#endif
    971979  }
    972980}
     
    10731081    }
    10741082  }
     1083#if H_MV
    10751084  pcVPS->deriveLayerSetLayerIdList();
     1085#endif
    10761086  TimingInfo *timingInfo = pcVPS->getTimingInfo();
    10771087  READ_FLAG(       uiCode, "vps_timing_info_present_flag");         timingInfo->setTimingInfoPresentFlag      (uiCode ? true : false);
     
    18901900
    18911901
     1902#if H_MV
    18921903    UInt slicePicOrderCntLsb = 0;
    18931904    Int iPOClsb = slicePicOrderCntLsb;  // Needed later
     
    19361947      rpcSlice->setPOC              ( 0 );
    19371948    }     
     1949#endif
    19381950
    19391951    if( rpcSlice->getIdrPicFlag() )
    19401952    {
     1953#if !H_MV
     1954      rpcSlice->setPOC(0);
     1955#endif
    19411956      TComReferencePictureSet* rps = rpcSlice->getLocalRPS();
    19421957      rps->setNumberOfNegativePictures(0);
     
    19511966    else
    19521967    {
     1968#if !H_MV
     1969      READ_CODE(sps->getBitsForPOC(), uiCode, "pic_order_cnt_lsb"); 
     1970      Int iPOClsb = uiCode;
     1971      Int iPrevPOC = rpcSlice->getPrevTid0POC();
     1972      Int iMaxPOClsb = 1<< sps->getBitsForPOC();
     1973      Int iPrevPOClsb = iPrevPOC & (iMaxPOClsb - 1);
     1974      Int iPrevPOCmsb = iPrevPOC-iPrevPOClsb;
     1975      Int iPOCmsb;
     1976      if( ( iPOClsb  <  iPrevPOClsb ) && ( ( iPrevPOClsb - iPOClsb )  >=  ( iMaxPOClsb / 2 ) ) )
     1977      {
     1978        iPOCmsb = iPrevPOCmsb + iMaxPOClsb;
     1979      }
     1980      else if( (iPOClsb  >  iPrevPOClsb )  && ( (iPOClsb - iPrevPOClsb )  >  ( iMaxPOClsb / 2 ) ) )
     1981      {
     1982        iPOCmsb = iPrevPOCmsb - iMaxPOClsb;
     1983      }
     1984      else
     1985      {
     1986        iPOCmsb = iPrevPOCmsb;
     1987      }
     1988      if ( rpcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_BLA_W_LP
     1989        || rpcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_BLA_W_RADL
     1990        || rpcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_BLA_N_LP )
     1991      {
     1992        // For BLA picture types, POCmsb is set to 0.
     1993        iPOCmsb = 0;
     1994      }
     1995      rpcSlice->setPOC              (iPOCmsb+iPOClsb);
     1996#endif
    19531997      TComReferencePictureSet* rps;
    19541998      rps = rpcSlice->getLocalRPS();
  • branches/HTM-9.2-dev0/source/Lib/TLibDecoder/TDecTop.cpp

    r767 r769  
    725725#endif
    726726
     727#if H_MV
    727728    xCeckNoClrasOutput();
     729#endif
    728730    // Skip pictures due to random access
    729731    if (isRandomAccessSkipPicture(iSkipFrame, iPOCLastDisplay))
     
    731733    m_prevSliceSkipped = true;
    732734    m_skippedPOC = m_apcSlicePilot->getPOC();
    733       sliceSkippedFlag = true;
     735#if H_MV
     736    sliceSkippedFlag = true;
     737#endif
    734738      return false;
    735739    }
     
    739743    m_prevSliceSkipped = true;
    740744    m_skippedPOC = m_apcSlicePilot->getPOC();
    741       sliceSkippedFlag = true;
     745#if H_MV
     746    sliceSkippedFlag = true;
     747#endif
    742748      return false;
    743749    }
     
    12731279    return true;
    12741280  }
     1281#if H_MV
    12751282  else if ( !m_layerInitilizedFlag[ m_layerId ] ) // start of random access point, m_pocRandomAccess has not been set yet.
     1283#else
     1284  else if (m_pocRandomAccess == MAX_INT) // start of random access point, m_pocRandomAccess has not been set yet.
     1285#endif
    12761286  {
    12771287    if (   m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA
     
    12811291    {
    12821292
     1293#if H_MV
    12831294      if ( xAllRefLayersInitilized() )
    12841295      {
     
    12901301        return true;
    12911302      }
     1303#else
     1304      // set the POC random access since we need to skip the reordered pictures in the case of CRA/CRANT/BLA/BLANT.
     1305      m_pocRandomAccess = m_apcSlicePilot->getPOC();
     1306#endif
    12921307    }
    12931308    else if ( m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP )
    12941309    {
     1310#if H_MV
    12951311      if ( xAllRefLayersInitilized() )
    12961312      {
    12971313        m_layerInitilizedFlag[ m_layerId ] = true;
     1314        m_pocRandomAccess = -MAX_INT; // no need to skip the reordered pictures in IDR, they are decodable.
     1315      }
     1316      else
     1317      {
     1318        return true;
     1319      }
     1320#else
    12981321      m_pocRandomAccess = -MAX_INT; // no need to skip the reordered pictures in IDR, they are decodable.
     1322#endif
    12991323    }
    13001324    else
    13011325    {
    1302         return true;
    1303       }
    1304     }
    1305     else
    1306     {
     1326#if H_MV_FIX_SKIP_PICTURES
    13071327      static Bool warningMessage[MAX_NUM_LAYERS];
    13081328      static Bool warningInitFlag = false;
     
    13221342        warningMessage[m_layerId] = false;
    13231343      }
     1344#else
     1345      static Bool warningMessage = false;
     1346      if(!warningMessage)
     1347      {
     1348        printf("\nWarning: this is not a valid random access point and the data is discarded until the first CRA picture");
     1349        warningMessage = true;
     1350      }
     1351#endif
    13241352      return true;
    13251353    }
     
    13311359    return true;
    13321360  }
     1361#if H_MV
    13331362  return !m_layerInitilizedFlag[ getLayerId() ];
     1363#else
     1364  // if we reach here, then the picture is not skipped.
     1365  return false;
     1366#endif
    13341367}
    13351368
     
    13731406}
    13741407
     1408#if H_MV
    13751409Void TDecTop::xCeckNoClrasOutput()
    13761410{
     
    14071441}
    14081442#endif
     1443#endif
    14091444//! \}
Note: See TracChangeset for help on using the changeset viewer.