Changeset 769 in 3DVCSoftware


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

Further fixes.

Location:
branches/HTM-9.2-dev0/source
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-9.2-dev0/source/App/TAppEncoder/TAppEncCfg.cpp

    r768 r769  
    17431743   * This permits the ability to omit a GOP structure specification */
    17441744#if H_MV
    1745   if (m_iIntraPeriod[layer] == 1 && m_GOPList[0].m_POC == -1)
    1746   {
     1745  if (m_iIntraPeriod[layer] == 1 && m_GOPList[0].m_POC == -1) {
    17471746#else
    17481747  if (m_iIntraPeriod == 1 && m_GOPList[0].m_POC == -1) {
     
    17731772  Int numOK=0;
    17741773#if H_MV
     1774  xConfirmPara( m_iIntraPeriod[layer] >=0&&(m_iIntraPeriod[layer]%m_iGOPSize!=0), "Intra period must be a multiple of GOPSize, or -1" );
     1775#else
    17751776xConfirmPara( m_iIntraPeriod >=0&&(m_iIntraPeriod%m_iGOPSize!=0), "Intra period must be a multiple of GOPSize, or -1" );
    1776 #else
    1777   xConfirmPara( m_iIntraPeriod[layer] >=0&&(m_iIntraPeriod[layer]%m_iGOPSize!=0), "Intra period must be a multiple of GOPSize, or -1" );
    17781777#endif
    17791778
  • branches/HTM-9.2-dev0/source/App/TAppEncoder/TAppEncTop.cpp

    r768 r769  
    208208
    209209    m_cTEncTop.setIvPicLists                   ( &m_ivPicLists );
    210   // H_MV
     210#endif  // H_MV
    211211  m_cTEncTop.setVPS(&vps);
    212212
     
    19451945}
    19461946#endif
    1947 #endif
     1947
    19481948//! \}
  • branches/HTM-9.2-dev0/source/Lib/TLibCommon/TComSlice.cpp

    r768 r769  
    110110#endif
    111111, m_pocResetFlag                  (false)
     112#if H_MV
    112113, m_crossLayerBlaFlag             (false)
     114#endif
    113115, m_discardableFlag               (false)
    114116, m_interLayerPredEnabledFlag     (false)
     
    16991701, m_hrdOpSetIdx               (NULL)
    17001702, m_cprmsPresentFlag          (NULL)
     1703#if H_MV
    17011704, m_dpbSize                   (NULL)
    1702 #if H_MV
    17031705, m_vpsVUI                 (  NULL )
    17041706#endif
     
    17871789    m_ivMvScalingFlag = true;
    17881790#endif
    1789 #endif
    17901791
    17911792    for( Int j = 0; j < MAX_NUM_LAYERS; j++ )
     
    18081809  m_vpsVUI = new TComVPSVUI;
    18091810  m_dpbSize = new TComDpbSize;
    1810 #
     1811
    18111812#if H_3D
    18121813  for( Int i = 0; i < MAX_NUM_LAYERS; i++ )
     
    18311832#endif
    18321833  } 
     1834#endif
    18331835#endif
    18341836}
     
    22112213  ::memset(m_ltRefPicPocLsbSps, 0, sizeof(m_ltRefPicPocLsbSps));
    22122214  ::memset(m_usedByCurrPicLtSPSFlag, 0, sizeof(m_usedByCurrPicLtSPSFlag));
     2215#if H_MV
    22132216  m_spsExtensionFlag = false;
    22142217  for( Int i = 0; i < PS_EX_T_MAX_NUM; i++ )
     
    22302233    m_scaledRefLayerBottomOffset   [i] = 0;
    22312234  }
     2235#endif
    22322236}
    22332237
     
    37743778}
    37753779#endif
    3776 
  • branches/HTM-9.2-dev0/source/Lib/TLibCommon/TComSlice.h

    r768 r769  
    5353#if H_MV
    5454class TComPicLists;
     55class TComVPS;
    5556#endif
    5657// ====================================================================================================================
     
    6263// ====================================================================================================================
    6364
    64 class TComVPS;
    6565/// Reference Picture Set class
    6666class TComReferencePictureSet
     
    829829  UInt    getMaxTLayers  ()                   { return m_uiMaxTLayers;   }
    830830  Void    setMaxTLayers  (UInt t)             { m_uiMaxTLayers = t; }
     831
     832#if H_MV   
    831833  UInt    getMaxSubLayersMinus1()             { return m_uiMaxTLayers - 1;  }  // For consistency with draft spec
    832 #if H_MV   
    833834  UInt    getMaxLayersMinus1()                { return m_uiMaxLayersMinus1;  };
    834835  Void    setMaxLayersMinus1(UInt l)          { m_uiMaxLayersMinus1 = l; }
     
    989990
    990991  TComVPSVUI* getVPSVUI(  )                                                { return m_vpsVUI;  }
    991   // VPS EXTENSION SEMANTICS VARIABLES
     992 
     993 // VPS EXTENSION SEMANTICS VARIABLES
    992994  Void    setLayerIdInVps( Int layerIdInNuh, Int val )                     { m_layerIdInVps[layerIdInNuh] = val;  }
    993995  Int     getLayerIdInVps( Int layerIdInNuh )                              { assert( m_layerIdInVps[layerIdInNuh] >= 0 ); return m_layerIdInVps[layerIdInNuh]; }
     
    23692371  Bool getPocResetFlag(  ) { return m_pocResetFlag; }
    23702372
    2371 Void setDiscardableFlag( Bool flag ) { m_discardableFlag = flag; }
    2372 Bool getDiscardableFlag(  ) { return m_discardableFlag; }
    2373 
    2374 Void setInterLayerPredEnabledFlag( Bool flag ) { m_interLayerPredEnabledFlag = flag; }
    2375 Bool getInterLayerPredEnabledFlag(  ) { return m_interLayerPredEnabledFlag; }
    2376 
    2377 Void setNumInterLayerRefPicsMinus1( Int  val ) { m_numInterLayerRefPicsMinus1 = val; }
    2378 Int  getNumInterLayerRefPicsMinus1(  ) { return m_numInterLayerRefPicsMinus1; }
    2379 
    2380 Void setInterLayerPredLayerIdc( Int i, Int  val ) { m_interLayerPredLayerIdc[i] = val; }
    2381 Int  getInterLayerPredLayerIdc( Int i ) { return m_interLayerPredLayerIdc[i]; }
     2373  Void setDiscardableFlag( Bool flag ) { m_discardableFlag = flag; }
     2374  Bool getDiscardableFlag(  ) { return m_discardableFlag; }
     2375
     2376  Void setInterLayerPredEnabledFlag( Bool flag ) { m_interLayerPredEnabledFlag = flag; }
     2377  Bool getInterLayerPredEnabledFlag(  ) { return m_interLayerPredEnabledFlag; }
     2378
     2379  Void setNumInterLayerRefPicsMinus1( Int  val ) { m_numInterLayerRefPicsMinus1 = val; }
     2380  Int  getNumInterLayerRefPicsMinus1(  ) { return m_numInterLayerRefPicsMinus1; }
     2381
     2382  Void setInterLayerPredLayerIdc( Int i, Int  val ) { m_interLayerPredLayerIdc[i] = val; }
     2383  Int  getInterLayerPredLayerIdc( Int i ) { return m_interLayerPredLayerIdc[i]; }
    23822384
    23832385  // Additional variables derived in slice header semantics
  • branches/HTM-9.2-dev0/source/Lib/TLibCommon/TypeDef.h

    r768 r769  
    5555
    5656#ifndef HEVC_EXT
    57 #define HEVC_EXT                    0
     57#define HEVC_EXT                    2
    5858#endif
    5959
     
    233233
    234234#if H_3D_DIM_DLT
    235 #define Log2( n ) ( log((double)n) / log(2.0) ) // Ed.(GT): This is very very bad and should be fixed to used integer arithmetics ( see gCeilLog2 ) moreover it should not be defined in the tool macro section!
    236235#define H_3D_DELTA_DLT                    1
    237236#endif
     
    279278// !!! PLEASE PUT MACROS RELATED TO HTM-10.0 INTEGRATIONS HERE !!!
    280279// !!! PLEASE PUT MACROS RELATED TO HTM-10.0 INTEGRATIONS HERE !!!
    281 
     280// !!! PLEASE PUT MACROS RELATED TO HTM-10.0 INTEGRATIONS HERE !!!
     281// !!! PLEASE PUT MACROS RELATED TO HTM-10.0 INTEGRATIONS HERE !!!
     282// !!! PLEASE PUT MACROS RELATED TO HTM-10.0 INTEGRATIONS HERE !!!
     283// !!! PLEASE PUT MACROS RELATED TO HTM-10.0 INTEGRATIONS HERE !!!
     284// !!! PLEASE PUT MACROS RELATED TO HTM-10.0 INTEGRATIONS HERE !!!
    282285
    283286/////////////////////////////////////////////////////////////////////////////////////////
     
    329332#define MAX_NUM_BITSTREAM_PARTITIONS    100 ///< Maximum value is actually not specified
    330333#define MAX_NUM_BSP_SCHED_COMBINATION   100 ///< Maximum value is actually not specified
     334#else
     335#define MAX_NUM_LAYER_IDS                64
    331336#endif
    332337
     
    845850  };
    846851
    847 
    848 #endif
    849 #endif
     852#define Log2( n ) ( log((double)n) / log(2.0) ) // Ed.(GT): This is very very bad and should be fixed to used integer arithmetics ( see gCeilLog2 ) moreover it should not be defined in the tool macro section!
     853#endif
     854#endif
  • 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//! \}
  • branches/HTM-9.2-dev0/source/Lib/TLibEncoder/TEncCu.cpp

    r765 r769  
    17961796#endif
    17971797#else
     1798#if H_3D
    17981799  rpcTempCU->m_bAvailableFlagA1 = 0;
    17991800  rpcTempCU->m_bAvailableFlagB1 = 0;
     
    18031804  rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand );
    18041805  rpcTempCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand );
     1806#else
     1807  rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand );
     1808#endif
    18051809#endif
    18061810
  • branches/HTM-9.2-dev0/source/Lib/TLibEncoder/TEncTop.cpp

    r767 r769  
    817817    pcVUI->setOverscanInfoPresentFlag(getOverscanInfoPresentFlag());
    818818    pcVUI->setOverscanAppropriateFlag(getOverscanAppropriateFlag());
     819#if H_MV
    819820    pcVUI->setVideoSignalTypePresentFlag(getVideoSignalTypePresentFlag() && getLayerId() == 0 );
     821#else
     822   pcVUI->setVideoSignalTypePresentFlag(getVideoSignalTypePresentFlag());
     823#endif
    820824    pcVUI->setVideoFormat(getVideoFormat());
    821825    pcVUI->setVideoFullRangeFlag(getVideoFullRangeFlag());
Note: See TracChangeset for help on using the changeset viewer.