Changeset 964 in 3DVCSoftware for trunk/source/Lib/TLibCommon


Ignore:
Timestamp:
5 Jul 2014, 05:16:45 (11 years ago)
Author:
tech
Message:
  • Merged 11.0-dev0@963. (Update to HM 14.0 + MV-HEVC Draft 8 HLS)
  • Added coding results.
  • Changed version number.
Location:
trunk/source/Lib/TLibCommon
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibCommon/CommonDef.h

    r951 r964  
    6060
    6161#if H_MV
    62 #define NV_VERSION        "11.0"                ///< Current software version
    63 #define HM_VERSION        "13.0"                ///<
     62#define NV_VERSION        "11.1"                ///< Current software version
     63#define HM_VERSION        "14.0"                ///<
    6464#else
    65 #define NV_VERSION        "13.0"                 ///< Current software version
     65#define NV_VERSION        "14.0"                 ///< Current software version
    6666#endif
    6767
     
    215215
    216216// Explicit temporal layer QP offset
    217 #define MAX_TLAYER                  8           ///< max number of temporal layer
     217#define MAX_TLAYER                  7           ///< max number of temporal layer
    218218#define HB_LAMBDA_FOR_LDC           1           ///< use of B-style lambda for non-key pictures in low-delay mode
    219219
  • trunk/source/Lib/TLibCommon/SEI.h

    r884 r964  
    128128  SEIActiveParameterSets()
    129129    : activeVPSId            (0)
    130     , m_fullRandomAccessFlag (false)
    131     , m_noParamSetUpdateFlag (false)
     130    , m_selfContainedCvsFlag (false)
     131    , m_noParameterSetUpdateFlag (false)
    132132    , numSpsIdsMinus1        (0)
    133133  {}
     
    135135
    136136  Int activeVPSId;
    137   Bool m_fullRandomAccessFlag;
    138   Bool m_noParamSetUpdateFlag;
     137  Bool m_selfContainedCvsFlag;
     138  Bool m_noParameterSetUpdateFlag;
    139139  Int numSpsIdsMinus1;
    140   std::vector<Int> activeSeqParamSetId;
     140  std::vector<Int> activeSeqParameterSetId;
    141141};
    142142
     
    356356  Int    m_cameraIsoSpeedIdc;
    357357  Int    m_cameraIsoSpeedValue;
     358  Int    m_exposureIndexIdc;
     359  Int    m_exposureIndexValue;
    358360  Int    m_exposureCompensationValueSignFlag;
    359361  Int    m_exposureCompensationValueNumerator;
  • trunk/source/Lib/TLibCommon/TComDataCU.cpp

    r950 r964  
    28832883}
    28842884
    2885 UChar TComDataCU::getNumPartInter()
     2885UChar TComDataCU::getNumPartitions()
    28862886{
    28872887  UChar iNumPart = 0;
     
    68306830#else
    68316831        picDepth = getSlice()->getIvPic( true, iTargetViewIdx );
     6832#if !BUG_FIX_TK65
    68326833        assert(picDepth != NULL);
     6834#endif
    68336835#endif
    68346836        if (picDepth && bDepthRefine)
     
    69016903#else
    69026904          TComPic* picDepth = getSlice()->getIvPic( true, pDInfo->m_aVIdxCan );
     6905#if !BUG_FIX_TK65
    69036906          assert(picDepth!=NULL);
     6907#endif
    69046908#endif
    69056909
     
    69606964#else
    69616965    picDepth = getSlice()->getIvPic( true, viewIndex );
     6966#if !BUG_FIX_TK65
    69626967    assert(picDepth!=NULL);
     6968#endif
    69636969#endif
    69646970    if (picDepth && bDepthRefine)
     
    70607066#else
    70617067          picDepth   = getSlice()->getIvPic (true, refViewIdx );
     7068#if !BUG_FIX_TK65
    70627069          assert(picDepth != NULL);
     7070#endif
    70637071#endif
    70647072          UInt uiPartIdx = 0;   //Notes from MTK: Please confirm that using 0 as partition index and partition address is correct for CU-level DoNBDV
  • trunk/source/Lib/TLibCommon/TComDataCU.h

    r950 r964  
    559559  Void          getPartIndexAndSize   ( UInt uiPartIdx, UInt& ruiPartAddr, Int& riWidth, Int& riHeight );
    560560#endif
    561   UChar         getNumPartInter       ();
     561UChar         getNumPartitions       ();
    562562  Bool          isFirstAbsZorderIdxInDepth (UInt uiAbsPartIdx, UInt uiDepth);
    563563
  • trunk/source/Lib/TLibCommon/TComPic.cpp

    r872 r964  
    5555, m_bReconstructed                        (false)
    5656, m_bNeededForOutput                      (false)
     57#if H_MV_HLS_7_VPS_P0300_27
     58, m_bPicOutputFlag                        (false)
     59#endif
    5760, m_uiCurrSliceIdx                        (0)
    5861, m_bCheckLTMSB                           (false)
  • trunk/source/Lib/TLibCommon/TComPic.h

    r872 r964  
    6969  Bool                  m_bReconstructed;
    7070  Bool                  m_bNeededForOutput;
     71#if H_MV_HLS_7_VPS_P0300_27
     72  Bool                  m_bPicOutputFlag;         // Semantics variable
     73#endif
    7174  UInt                  m_uiCurrSliceIdx;         // Index of current slice
    7275  Bool                  m_bCheckLTMSB;
     
    175178  Void          setOutputMark (Bool b) { m_bNeededForOutput = b;     }
    176179  Bool          getOutputMark ()       { return m_bNeededForOutput;  }
    177  
     180 #if H_MV_HLS_7_VPS_P0300_27
     181  Void          setPicOutputFlag(Bool b) { m_bPicOutputFlag = b;      }
     182  Bool          getPicOutputFlag()       { return m_bPicOutputFlag ;  }
     183#endif
     184
    178185  Void          setNumReorderPics(Int i, UInt tlayer) { m_numReorderPics[tlayer] = i;    }
    179186  Int           getNumReorderPics(UInt tlayer)        { return m_numReorderPics[tlayer]; }
  • trunk/source/Lib/TLibCommon/TComPrediction.cpp

    r950 r964  
    11301130  }
    11311131
    1132   for ( iPartIdx = 0; iPartIdx < pcCU->getNumPartInter(); iPartIdx++ )
     1132  for ( iPartIdx = 0; iPartIdx < pcCU->getNumPartitions(); iPartIdx++ )
    11331133  {
    11341134    pcCU->getPartIndexAndSize( iPartIdx, uiPartAddr, iWidth, iHeight );
  • trunk/source/Lib/TLibCommon/TComRom.cpp

    r950 r964  
    381381Bool g_decTraceDispDer       = false;
    382382Bool g_decTraceMvFromMerge   = false;
     383Bool g_decTracePicOutput     = false;
    383384Bool g_stopAtPos             = false;
    384385Bool g_outputPos             = false;
  • trunk/source/Lib/TLibCommon/TComRom.h

    r950 r964  
    225225 extern UInt64 g_stopAtCounter;         // Counter to set breakpoint.
    226226 extern Bool   g_traceCopyBack;         // Output samples on copy back 
    227  extern Bool   g_decTraceDispDer; // Trace derived disparity vectors (decoder only)
     227 extern Bool   g_decTraceDispDer;       // Trace derived disparity vectors (decoder only)
    228228 extern Bool   g_decTraceMvFromMerge;   // Trace motion vectors obtained from merge (decoder only)
     229 extern Bool   g_decTracePicOutput;     // Trace output of pictures
    229230 extern Bool   g_stopAtPos;             // Stop at position
    230231 extern Bool   g_outputPos;             // Output position
     
    236237#define DTRACE_PU_S(x)             writeToTraceFile( x,   g_tracePU );
    237238#define DTRACE_TU_S(x)             writeToTraceFile( x,   g_traceTU );
    238 
    239239
    240240 Void           writeToTraceFile( const Char* symbolName, Int val, Bool doIt );
  • trunk/source/Lib/TLibCommon/TComSampleAdaptiveOffset.cpp

    r872 r964  
    110110    m_offsetClipTable[compIdx] = NULL;
    111111  }
     112#if !SAO_SGN_FUNC
    112113  m_signTable = NULL;
    113 
     114#endif
    114115 
    115116  m_lineBufWidth = 0;
     
    155156  }
    156157
     158#if !SAO_SGN_FUNC
    157159  //look-up table for clipping
     160  Int overallMaxSampleValue=0;
     161#endif
    158162  for(Int compIdx =0; compIdx < NUM_SAO_COMPONENTS; compIdx++)
    159163  {
     
    161165    Int maxSampleValue = (1<< bitDepthSample); //exclusive
    162166    Int maxOffsetValue = (g_saoMaxOffsetQVal[compIdx] << m_offsetStepLog2[compIdx]);
     167#if !SAO_SGN_FUNC
     168    if (maxSampleValue>overallMaxSampleValue) overallMaxSampleValue=maxSampleValue;
     169#endif
    163170
    164171    m_offsetClipTable[compIdx] = new Int[(maxSampleValue + maxOffsetValue -1)+ (maxOffsetValue)+1 ]; //positive & negative range plus 0
     
    176183      *(offsetClipPtr -k -1 )              = 0;
    177184    }
    178     if(compIdx == SAO_Y) //g_bitDepthY is always larger than or equal to g_bitDepthC
    179     {
    180       m_signTable = new Short[ 2*(maxSampleValue-1) + 1 ];
    181       m_sign = &(m_signTable[maxSampleValue-1]);
     185  }
     186
     187#if !SAO_SGN_FUNC
     188  m_signTable = new Short[ 2*(overallMaxSampleValue-1) + 1 ];
     189  m_sign = &(m_signTable[overallMaxSampleValue-1]);
    182190
    183191      m_sign[0] = 0;
    184       for(Int k=1; k< maxSampleValue; k++)
     192  for(Int k=1; k< overallMaxSampleValue; k++)
    185193      {
    186194        m_sign[k] = 1;
    187195        m_sign[-k]= -1;
    188196      }
    189     }
    190   } 
    191 
     197#endif
    192198}
    193199
     
    208214    }
    209215  }
     216#if !SAO_SGN_FUNC
    210217  if( m_signTable )
    211218  {
    212219    delete[] m_signTable; m_signTable = NULL;
    213220  }
     221#endif
    214222}
    215223
     
    388396      for (y=0; y< height; y++)
    389397      {
     398#if SAO_SGN_FUNC
     399        signLeft = (Char)sgn(srcLine[startX] - srcLine[startX-1]);
     400#else
    390401        signLeft = (Char)m_sign[srcLine[startX] - srcLine[startX-1]];
     402#endif
    391403        for (x=startX; x< endX; x++)
    392404        {
     405#if SAO_SGN_FUNC
     406          signRight = (Char)sgn(srcLine[x] - srcLine[x+1]);
     407#else
    393408          signRight = (Char)m_sign[srcLine[x] - srcLine[x+1]];
     409#endif
    394410          edgeType =  signRight + signLeft;
    395411          signLeft  = -signRight;
     
    419435      for (x=0; x< width; x++)
    420436      {
     437#if SAO_SGN_FUNC
     438        signUpLine[x] = (Char)sgn(srcLine[x] - srcLineAbove[x]);
     439#else
    421440        signUpLine[x] = (Char)m_sign[srcLine[x] - srcLineAbove[x]];
     441#endif
    422442      }
    423443
     
    429449        for (x=0; x< width; x++)
    430450        {
     451#if SAO_SGN_FUNC
     452          signDown  = (Char)sgn(srcLine[x] - srcLineBelow[x]);
     453#else
    431454          signDown  = (Char)m_sign[srcLine[x] - srcLineBelow[x]];
     455#endif
    432456          edgeType = signDown + signUpLine[x];
    433457          signUpLine[x]= -signDown;
     
    456480      for (x=startX; x< endX+1; x++)
    457481      {
     482#if SAO_SGN_FUNC
     483        signUpLine[x] = (Char)sgn(srcLineBelow[x] - srcLine[x- 1]);
     484#else
    458485        signUpLine[x] = (Char)m_sign[srcLineBelow[x] - srcLine[x- 1]];
     486#endif
    459487      }
    460488
     
    465493      for(x= firstLineStartX; x< firstLineEndX; x++)
    466494      {
     495#if SAO_SGN_FUNC
     496        edgeType  =  sgn(srcLine[x] - srcLineAbove[x- 1]) - signUpLine[x+1];
     497#else
    467498        edgeType  =  m_sign[srcLine[x] - srcLineAbove[x- 1]] - signUpLine[x+1];
     499#endif
    468500        resLine[x] = offsetClip[srcLine[x] + offset[edgeType]];
    469501      }
     
    479511        for (x=startX; x<endX; x++)
    480512        {
     513#if SAO_SGN_FUNC
     514          signDown =  (Char)sgn(srcLine[x] - srcLineBelow[x+ 1]);
     515#else
    481516          signDown =  (Char)m_sign[srcLine[x] - srcLineBelow[x+ 1]] ;
     517#endif
    482518          edgeType =  signDown + signUpLine[x];
    483519          resLine[x] = offsetClip[srcLine[x] + offset[edgeType]];
     
    485521          signDownLine[x+1] = -signDown;
    486522        }
     523#if SAO_SGN_FUNC
     524        signDownLine[startX] = (Char)sgn(srcLineBelow[startX] - srcLine[startX-1]);
     525#else
    487526        signDownLine[startX] = (Char)m_sign[srcLineBelow[startX] - srcLine[startX-1]];
     527#endif
    488528
    489529        signTmpLine  = signUpLine;
     
    501541      for(x= lastLineStartX; x< lastLineEndX; x++)
    502542      {
     543#if SAO_SGN_FUNC
     544        edgeType =  sgn(srcLine[x] - srcLineBelow[x+ 1]) + signUpLine[x];
     545#else
    503546        edgeType =  m_sign[srcLine[x] - srcLineBelow[x+ 1]] + signUpLine[x];
     547#endif
    504548        resLine[x] = offsetClip[srcLine[x] + offset[edgeType]];
    505549
     
    519563      for (x=startX-1; x< endX; x++)
    520564      {
     565#if SAO_SGN_FUNC
     566        signUpLine[x] = (Char)sgn(srcLineBelow[x] - srcLine[x+1]);
     567#else
    521568        signUpLine[x] = (Char)m_sign[srcLineBelow[x] - srcLine[x+1]];
     569#endif
    522570      }
    523571
     
    529577      for(x= firstLineStartX; x< firstLineEndX; x++)
    530578      {
     579#if SAO_SGN_FUNC
     580        edgeType = sgn(srcLine[x] - srcLineAbove[x+1]) -signUpLine[x-1];
     581#else
    531582        edgeType = m_sign[srcLine[x] - srcLineAbove[x+1]] -signUpLine[x-1];
     583#endif
    532584        resLine[x] = offsetClip[srcLine[x] + offset[edgeType]];
    533585      }
     
    542594        for(x= startX; x< endX; x++)
    543595        {
     596#if SAO_SGN_FUNC
     597          signDown =  (Char)sgn(srcLine[x] - srcLineBelow[x-1]);
     598#else
    544599          signDown =  (Char)m_sign[srcLine[x] - srcLineBelow[x-1]] ;
     600#endif
    545601          edgeType =  signDown + signUpLine[x];
    546602          resLine[x] = offsetClip[srcLine[x] + offset[edgeType]];
    547603          signUpLine[x-1] = -signDown;
    548604        }
     605#if SAO_SGN_FUNC
     606        signUpLine[endX-1] = (Char)sgn(srcLineBelow[endX-1] - srcLine[endX]);
     607#else
    549608        signUpLine[endX-1] = (Char)m_sign[srcLineBelow[endX-1] - srcLine[endX]];
     609#endif
    550610        srcLine  += srcStride;
    551611        resLine += resStride;
     
    558618      for(x= lastLineStartX; x< lastLineEndX; x++)
    559619      {
     620#if SAO_SGN_FUNC
     621        edgeType = sgn(srcLine[x] - srcLineBelow[x-1]) + signUpLine[x];
     622#else
    560623        edgeType = m_sign[srcLine[x] - srcLineBelow[x-1]] + signUpLine[x];
     624#endif
    561625        resLine[x] = offsetClip[srcLine[x] + offset[edgeType]];
    562626
  • trunk/source/Lib/TLibCommon/TComSampleAdaptiveOffset.h

    r872 r964  
    5555extern UInt g_saoMaxOffsetQVal[NUM_SAO_COMPONENTS];
    5656
     57#if SAO_SGN_FUNC
     58template <typename T> int sgn(T val)
     59{
     60  return (T(0) < val) - (val < T(0));
     61}
     62#endif
     63
    5764class TComSampleAdaptiveOffset
    5865{
     
    7986  UInt m_offsetStepLog2[NUM_SAO_COMPONENTS]; //offset step 
    8087  Int* m_offsetClip[NUM_SAO_COMPONENTS]; //clip table for fast operation
     88#if !SAO_SGN_FUNC
    8189  Short* m_sign; //sign table for fast operation
     90#endif
    8291  TComPicYuv*   m_tempPicYuv; //temporary buffer
    8392  Int m_picWidth;
     
    96105  Bool m_picSAOEnabled[NUM_SAO_COMPONENTS];
    97106  Int*   m_offsetClipTable[NUM_SAO_COMPONENTS];
     107#if !SAO_SGN_FUNC
    98108  Short* m_signTable;
    99 
     109#endif
    100110};
    101111
  • trunk/source/Lib/TLibCommon/TComSlice.cpp

    r950 r964  
    1 /* The copyright in this software is being made available under the BSD
     1/* The copyright in this software is being made available under the BSD
    22 * License, included below. This software may be subject to other third party
    33 * and contributor rights, including patent rights, and no such rights are
     
    4545//! \{
    4646
     47
    4748TComSlice::TComSlice()
    4849: m_iPPSId                        ( -1 )
     50#if H_MV_HLS_8_POC_Q0142_32
     51, m_slicePicOrderCntLsb           ( 0 )
     52#endif
    4953, m_iPOC                          ( 0 )
    5054, m_iLastIDR                      ( 0 )
     
    7074, m_pcPic                         ( NULL )
    7175, m_colFromL0Flag                 ( 1 )
     76#if SETTING_NO_OUT_PIC_PRIOR
     77, m_noOutputPriorPicsFlag         ( false )
     78, m_noRaslOutputFlag              ( false )
     79, m_handleCraAsBlaFlag              ( false )
     80#endif
    7281, m_colRefIdx                     ( 0 )
    7382, m_uiTLayer                      ( 0 )
     
    459468  {
    460469    // The variable NumPocTotalCurr is derived as specified in subclause 7.4.7.2. It is a requirement of bitstream conformance that the following applies to the value of NumPocTotalCurr:
    461     // ?If the current picture is a BLA or CRA picture, the value of NumPocTotalCurr shall be equal to 0.
    462     // ?Otherwise, when the current picture contains a P or B slice, the value of NumPocTotalCurr shall not be equal to 0.
     470    // - If the current picture is a BLA or CRA picture, the value of NumPocTotalCurr shall be equal to 0.
     471    // - Otherwise, when the current picture contains a P or B slice, the value of NumPocTotalCurr shall not be equal to 0.
    463472    if (getRapPicFlag())
    464473    {
     
    903912      pocCRA = pocCurr;
    904913    }
     914#if EFFICIENT_FIELD_IRAP
     915    bRefreshPending = true;
     916#endif
    905917  }
    906918  else // CRA or No DR
    907919  {
     920#if EFFICIENT_FIELD_IRAP
     921    if(getAssociatedIRAPType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || getAssociatedIRAPType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL)
     922    {
     923      if (bRefreshPending==true && pocCurr > m_iLastIDR) // IDR reference marking pending
     924      {
     925        TComList<TComPic*>::iterator        iterPic       = rcListPic.begin();
     926        while (iterPic != rcListPic.end())
     927        {
     928          rpcPic = *(iterPic);
     929          if (rpcPic->getPOC() != pocCurr && rpcPic->getPOC() != m_iLastIDR)
     930          {
     931            rpcPic->getSlice(0)->setReferenced(false);
     932          }
     933          iterPic++;
     934        }
     935        bRefreshPending = false;
     936      }
     937    }
     938    else
     939    {
     940#endif
    908941    if (bRefreshPending==true && pocCurr > pocCRA) // CRA reference marking pending
    909942    {
     
    920953      bRefreshPending = false;
    921954    }
     955#if EFFICIENT_FIELD_IRAP
     956    }
     957#endif
    922958    if ( getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA ) // CRA picture found
    923959    {
     
    11941230    // in decoding order shall precede the IRAP picture in output order.
    11951231    // (Note that any picture following in output order would be present in the DPB)
     1232#if !SETTING_NO_OUT_PIC_PRIOR
    11961233    if(rpcPic->getSlice(0)->getPicOutputFlag() == 1)
     1234#else
     1235    if(rpcPic->getSlice(0)->getPicOutputFlag() == 1 && !this->getNoOutputPriorPicsFlag())
     1236#endif
    11971237    {
    11981238      if(nalUnitType == NAL_UNIT_CODED_SLICE_BLA_N_LP    ||
     
    13701410/** Function for applying picture marking based on the Reference Picture Set in pReferencePictureSet.
    13711411*/
     1412#if ALLOW_RECOVERY_POINT_AS_RAP
     1413Int TComSlice::checkThatAllRefPicsAreAvailable( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool printErrors, Int pocRandomAccess, Bool bUseRecoveryPoint)
     1414#else
    13721415Int TComSlice::checkThatAllRefPicsAreAvailable( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool printErrors, Int pocRandomAccess)
    1373 {
     1416#endif
     1417{
     1418#if ALLOW_RECOVERY_POINT_AS_RAP
     1419  Int atLeastOneUnabledByRecoveryPoint = 0;
     1420  Int atLeastOneFlushedByPreviousIDR = 0;
     1421#endif
    13741422  TComPic* rpcPic;
    13751423  Int i, isAvailable;
     
    13921440        if(rpcPic->getIsLongTerm() && (rpcPic->getPicSym()->getSlice(0)->getPOC()) == pReferencePictureSet->getPOC(i) && rpcPic->getSlice(0)->isReferenced())
    13931441        {
     1442#if ALLOW_RECOVERY_POINT_AS_RAP
     1443          if(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + pReferencePictureSet->getDeltaPOC(i) < pocRandomAccess)
     1444          {
     1445            isAvailable = 0;
     1446          }
     1447          else
     1448          {
    13941449          isAvailable = 1;
     1450        }
     1451#else
     1452          isAvailable = 1;
     1453#endif
    13951454        }
    13961455      }
     
    14021461        if(rpcPic->getIsLongTerm() && curPoc == refPoc && rpcPic->getSlice(0)->isReferenced())
    14031462        {
     1463#if ALLOW_RECOVERY_POINT_AS_RAP
     1464          if(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + pReferencePictureSet->getDeltaPOC(i) < pocRandomAccess)
     1465          {
     1466            isAvailable = 0;
     1467          }
     1468          else
     1469          {
    14041470          isAvailable = 1;
     1471        }
     1472#else
     1473          isAvailable = 1;
     1474#endif
    14051475        }
    14061476      }
     
    14251495        if (rpcPic->getSlice(0)->isReferenced() && curPoc == refPoc)
    14261496        {
     1497#if ALLOW_RECOVERY_POINT_AS_RAP
     1498          if(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + pReferencePictureSet->getDeltaPOC(i) < pocRandomAccess)
     1499          {
     1500            isAvailable = 0;
     1501          }
     1502          else
     1503          {
    14271504          isAvailable = 1;
    14281505          rpcPic->setIsLongTerm(1);
    14291506          break;
     1507        }
     1508#else
     1509          isAvailable = 1;
     1510          rpcPic->setIsLongTerm(1);
     1511          break;
     1512#endif
    14301513        }
    14311514      }
     
    14551538        }
    14561539      }
     1540#if ALLOW_RECOVERY_POINT_AS_RAP
     1541      else if(bUseRecoveryPoint && this->getPOC() > pocRandomAccess)
     1542      {
     1543        atLeastOneUnabledByRecoveryPoint = 1;
     1544      }
     1545      else if(bUseRecoveryPoint && (this->getAssociatedIRAPType()==NAL_UNIT_CODED_SLICE_IDR_N_LP || this->getAssociatedIRAPType()==NAL_UNIT_CODED_SLICE_IDR_W_RADL))
     1546      {
     1547        atLeastOneFlushedByPreviousIDR = 1;
     1548      }
     1549#endif
    14571550    }
    14581551  } 
     
    14701563      if(!rpcPic->getIsLongTerm() && rpcPic->getPicSym()->getSlice(0)->getPOC() == this->getPOC() + pReferencePictureSet->getDeltaPOC(i) && rpcPic->getSlice(0)->isReferenced())
    14711564      {
     1565#if ALLOW_RECOVERY_POINT_AS_RAP
     1566        if(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + pReferencePictureSet->getDeltaPOC(i) < pocRandomAccess)
     1567        {
     1568          isAvailable = 0;
     1569        }
     1570        else
     1571        {
    14721572        isAvailable = 1;
     1573      }
     1574#else
     1575        isAvailable = 1;
     1576#endif
    14731577      }
    14741578    }
     
    14971601        }
    14981602      }
    1499     }
     1603#if ALLOW_RECOVERY_POINT_AS_RAP
     1604      else if(bUseRecoveryPoint && this->getPOC() > pocRandomAccess)
     1605      {
     1606        atLeastOneUnabledByRecoveryPoint = 1;
     1607    }
     1608      else if(bUseRecoveryPoint && (this->getAssociatedIRAPType()==NAL_UNIT_CODED_SLICE_IDR_N_LP || this->getAssociatedIRAPType()==NAL_UNIT_CODED_SLICE_IDR_W_RADL))
     1609      {
     1610        atLeastOneFlushedByPreviousIDR = 1;
    15001611  }   
     1612#endif
     1613    }
     1614    }
     1615#if ALLOW_RECOVERY_POINT_AS_RAP
     1616  if(atLeastOneUnabledByRecoveryPoint || atLeastOneFlushedByPreviousIDR)
     1617  {
     1618    return -1;
     1619  }   
     1620#endif
    15011621  if(atLeastOneLost)
    15021622  {
     
    15151635/** Function for constructing an explicit Reference Picture Set out of the available pictures in a referenced Reference Picture Set
    15161636*/
     1637#if ALLOW_RECOVERY_POINT_AS_RAP
     1638Void TComSlice::createExplicitReferencePictureSetFromReference( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool isRAP, Int pocRandomAccess, Bool bUseRecoveryPoint)
     1639#else
    15171640Void TComSlice::createExplicitReferencePictureSetFromReference( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool isRAP)
     1641#endif
    15181642{
    15191643  TComPic* rpcPic;
     
    15411665        pcRPS->setDeltaPOC(k, pReferencePictureSet->getDeltaPOC(i));
    15421666        pcRPS->setUsed(k, pReferencePictureSet->getUsed(i) && (!isRAP));
     1667#if ALLOW_RECOVERY_POINT_AS_RAP
     1668        pcRPS->setUsed(k, pcRPS->getUsed(k) && !(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + pReferencePictureSet->getDeltaPOC(i) < pocRandomAccess) );
     1669#endif
    15431670        if(pcRPS->getDeltaPOC(k) < 0)
    15441671        {
     
    15531680    }
    15541681  }
     1682#if EFFICIENT_FIELD_IRAP
     1683  Bool useNewRPS = false;
     1684  // if current picture is complimentary field associated to IRAP, add the IRAP to its RPS.
     1685  if(m_pcPic->isField())
     1686  {
     1687    TComList<TComPic*>::iterator iterPic = rcListPic.begin();
     1688    while ( iterPic != rcListPic.end())
     1689    {
     1690      rpcPic = *(iterPic++);
     1691      if(rpcPic->getPicSym()->getSlice(0)->getPOC() == this->getAssociatedIRAPPOC() && this->getAssociatedIRAPPOC() == this->getPOC()+1)
     1692      {
     1693        pcRPS->setDeltaPOC(k, 1);
     1694        pcRPS->setUsed(k, true);
     1695        nrOfPositivePictures++;
     1696        k ++;
     1697        useNewRPS = true;
     1698      }
     1699    }
     1700  }
     1701#endif
    15551702  pcRPS->setNumberOfNegativePictures(nrOfNegativePictures);
    15561703  pcRPS->setNumberOfPositivePictures(nrOfPositivePictures);
     
    15591706  // inter RPS prediction with.  Here we just use the reference used by pReferencePictureSet.
    15601707  // If pReferencePictureSet is not inter_RPS_predicted, then inter_RPS_prediction is for the current RPS also disabled.
    1561   if (!pReferencePictureSet->getInterRPSPrediction())
     1708  if (!pReferencePictureSet->getInterRPSPrediction()
     1709#if EFFICIENT_FIELD_IRAP
     1710    || useNewRPS
     1711#endif
     1712    )
    15621713  {
    15631714    pcRPS->setInterRPSPrediction(false);
     
    17121863#endif
    17131864{
     1865#if H_MV_HLS_8_SYN_Q0041_03
     1866  m_vpsBaseLayerInternalFlag = true;
     1867#endif
     1868
    17141869  for( Int i = 0; i < MAX_TLAYER; i++)
    17151870  {
     
    17281883  m_vpsNumProfileTierLevelMinus1 = -1;
    17291884   
    1730   m_numAddOutputLayerSets              = -1;   
    1731   m_defaultTargetOutputLayerIdc     = 0;
     1885#if H_MV_HLS_8_SYN_39_19
     1886  m_numAddLayerSets              = 0;   
     1887  m_numAddOlss                   = 0;
     1888#else
     1889  m_numAddLayerSets              = -1;   
     1890#endif
     1891  m_defaultOutputLayerIdc     = 0;
    17321892 
    17331893  for ( Int i = 0; i < MAX_VPS_OUTPUTLAYER_SETS; i++)
    17341894  {
    1735     m_outputLayerSetIdxMinus1[i]  = -1;
     1895    m_layerSetIdxForOlsMinus1[i]  = -1;
    17361896    m_profileLevelTierIdx[i]      = 0;
    17371897    for ( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++)
     
    17411901    m_altOutputLayerFlag[ i ]       = false;
    17421902  }
     1903
     1904#if H_MV_HLS_8_PMS_Q0195_20
     1905  m_repFormatIdxPresentFlag = false;
     1906#endif
    17431907  m_maxOneActiveRefLayerFlag = false;
    17441908  m_directDepTypeLenMinus2   = 0;         
    17451909 
    17461910
     1911#if H_MV_HLS_8_RPS_Q0100_36
     1912  m_vpsExtensionFlag = true;
     1913#endif
    17471914  m_avcBaseLayerFlag = false;
    17481915  m_vpsNonVuiExtensionLength = 0;
     
    17601927  {
    17611928    m_vpsProfilePresentFlag   [i] = false;
    1762     m_outputLayerSetIdxMinus1       [i] = 0;
     1929    m_layerSetIdxForOlsMinus1       [i] = 0;
    17631930    for( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++ )
    17641931    {
     
    18642031    assert( getLayerIdInNuh( layer ) > getLayerIdInNuh( layer -1 ) );
    18652032  }
     2033
     2034
     2035#if H_MV_HLS_8_PMS_Q0195_20
     2036  //The value of vps_num_rep_formats_minus1 shall be in the range of 0 to 255, inclusive.
     2037  assert( getVpsNumRepFormatsMinus1() >= 0 );
     2038  assert( getVpsNumRepFormatsMinus1() <= 255 );
     2039#endif
     2040
    18662041  return true;
    18672042}
     
    19072082    }
    19082083  }
     2084
     2085#if H_MV_HLS_8
     2086  for (Int i = 0 ; i < MAX_NUM_LAYER_IDS; i++ )
     2087  {
     2088    m_numRefLayers[i] = 0;
     2089  }
     2090
     2091  for (Int currLayerId = 0; currLayerId <= 62; currLayerId++ )
     2092  {
     2093    for (Int i = 0 ; i < MAX_NUM_LAYER_IDS; i++ )
     2094    {
     2095      m_recursiveRefLayerFlag[currLayerId][i] = 0;
     2096    }
     2097  }
     2098
     2099
     2100  for( Int i = 0; i  <=  getMaxLayersMinus1(); i++ )
     2101  {
     2102    Int iNuhLId = getLayerIdInNuh( i );
     2103    xSetRefLayerFlags( iNuhLId );
     2104    for( Int j = 0; j < 63; j++ )
     2105    {
     2106      m_numRefLayers[ iNuhLId ]  +=  m_recursiveRefLayerFlag[ iNuhLId ][ j ];
     2107    }
     2108  }
     2109
     2110
     2111  for( Int i = 0; i <= getMaxLayersMinus1(); i++ )  // Bug in spec "<" instead of "<="
     2112  {
     2113    Int iNuhLId = getLayerIdInNuh( i );
     2114    Int predIdx = 0;
     2115    for( Int j = iNuhLId + 1; j < 63; j++ )
     2116    {
     2117      if( m_recursiveRefLayerFlag[ j ][ iNuhLId ] )
     2118      {
     2119        m_predictedLayerId[ iNuhLId ][ predIdx++ ] = j;
     2120      }
     2121    }
     2122    m_numPredictedLayers[ iNuhLId ] = predIdx;
     2123  }
     2124 
     2125  Bool countedLayerIdxFlag[ MAX_NUM_LAYERS ];
     2126  for( Int i = 0; i  <=  getMaxLayersMinus1(); i++ )
     2127  {
     2128    countedLayerIdxFlag[ i ] = 0;
     2129  }
     2130 
     2131  for( Int i = 0, k = 0; i  <=  getMaxLayersMinus1(); i++ )
     2132  {
     2133    Int iNuhLId = getLayerIdInNuh( i );
     2134    if( m_numDirectRefLayers[ iNuhLId ]  ==  0 )
     2135    {
     2136      m_treePartitionLayerIdList[ k ][ 0 ] = iNuhLId;
     2137      m_numLayersInTreePartition[ k ]      = 1;
     2138      for( Int j = 0; j < m_numPredictedLayers[ iNuhLId ]; j++ ) 
     2139      {
     2140        if( !countedLayerIdxFlag[ getLayerIdInVps( m_predictedLayerId[ iNuhLId ][ j ] ) ] )   
     2141        {
     2142          m_treePartitionLayerIdList[ k ][ m_numLayersInTreePartition[ k ] ] = m_predictedLayerId[ iNuhLId ][ j ];
     2143          m_numLayersInTreePartition[ k ]++;
     2144          countedLayerIdxFlag[ getLayerIdInVps( m_predictedLayerId[ iNuhLId ][ j ] ) ] = 1;
     2145        }
     2146      }
     2147      k++;
     2148    }
     2149    m_numIndependentLayers = k;
     2150  }
     2151#endif
    19092152}
    19102153
     
    19362179    }
    19372180  }
     2181#if !BUG_FIX_TK65
    19382182  assert( foundLayerIdinNuh != -1 );
    1939 
     2183#endif
    19402184  return foundLayerIdinNuh;
    19412185}
     
    20702314Int    TComVPS::getNumOutputLayerSets()
    20712315{
    2072   return getNumAddOutputLayerSets() + getVpsNumLayerSetsMinus1() + 1;
     2316#if H_MV_HLS_8_SYN_39_19
     2317  return getNumAddOlss() + getNumLayerSets();
     2318#else
     2319  return getNumAddLayerSets() + getVpsNumLayerSetsMinus1() + 1;
     2320#endif
    20732321}
    20742322
     
    21262374Void TComVPS::deriveTargetLayerIdList( Int i )
    21272375
    2128   Int lsIdx = getLayerSetIdxForOutputLayerSet( i );     
     2376  Int lsIdx = olsIdxToLsIdx( i );     
    21292377 
    21302378  for( Int j = 0; j < getNumLayersInIdList( lsIdx ); j++ )
     
    21362384    }
    21372385  } 
     2386#if H_MV_HLS_8_PMS_Q0165_18
     2387  assert( getNumOutputLayersInOutputLayerSet( i ) > 0 );
     2388#endif
    21382389}
    21392390
     
    21412392{
    21422393  Bool outputLayerFlag;
    2143   switch ( getDefaultTargetOutputLayerIdc( ) )
     2394  switch ( getDefaultOutputLayerIdc( ) )
    21442395  {
    21452396  case 0:
     
    21472398    break;
    21482399  case 1:
    2149     outputLayerFlag = ( j == m_layerSetLayerIdList[ getLayerSetIdxForOutputLayerSet( i ) ].size() - 1 ); 
     2400    outputLayerFlag = ( j == m_layerSetLayerIdList[ olsIdxToLsIdx( i ) ].size() - 1 ); 
    21502401    break;
    21512402  case 2:
     
    21692420{
    21702421  Int maxSLMinus1 = 0;
    2171   Int optLsIdx    = getLayerSetIdxForOutputLayerSet( i );
     2422#if H_MV_HLS_8_MIS_Q0102_30
     2423  for( Int k = 0; k < getNumLayersInIdList( i ); k++ )
     2424  {
     2425    Int lId = m_layerSetLayerIdList[i][k];
     2426#else 
     2427  Int optLsIdx    = olsIdxToLsIdx( i );
     2428
    21722429  for( Int k = 0; k < getNumLayersInIdList( optLsIdx ); k++ )
    21732430  {
    21742431    Int lId = m_layerSetLayerIdList[optLsIdx][k];
     2432#endif
    21752433    maxSLMinus1 = std::max( maxSLMinus1, getSubLayersVpsMaxMinus1( getLayerIdInVps( lId ) ));
    21762434  }
    21772435  return maxSLMinus1;
    21782436}
    2179 
     2437#if H_MV_HLS_8_RPS_Q0100_36
     2438Void TComVPS::inferDbpSizeLayerSetZero( TComSPS* sps, Bool encoder )
     2439{
     2440  for( Int j = 0; j <= getMaxSubLayersInLayerSetMinus1( 0 ); j++ )
     2441  {
     2442    Int maxDecPicBufferingMinus1 = sps->getMaxDecPicBuffering( j ) - 1;
     2443    Int numReorderPics           = sps->getNumReorderPics    ( j );
     2444    Int maxLatencyIncreasePlus1  = sps->getMaxLatencyIncrease( j );
     2445
     2446    if ( encoder )
     2447    {
     2448      assert( getDpbSize()->getMaxVpsDecPicBufferingMinus1(0, 0, j ) == maxDecPicBufferingMinus1 );
     2449      assert( getDpbSize()->getMaxVpsNumReorderPics       (0,    j ) == numReorderPics           );
     2450      assert( getDpbSize()->getMaxVpsLatencyIncreasePlus1 (0,    j ) == maxLatencyIncreasePlus1  );
     2451    }
     2452    else
     2453    {
     2454      getDpbSize()->setMaxVpsDecPicBufferingMinus1(0, 0, j, maxDecPicBufferingMinus1 );
     2455      getDpbSize()->setMaxVpsNumReorderPics       (0,    j, numReorderPics           );
     2456      getDpbSize()->setMaxVpsLatencyIncreasePlus1 (0,    j, maxLatencyIncreasePlus1  );       
     2457    }     
     2458  }
     2459}
     2460#endif
    21802461#endif // H_MV
    21812462
     
    22492530  ::memset(m_usedByCurrPicLtSPSFlag, 0, sizeof(m_usedByCurrPicLtSPSFlag));
    22502531#if H_MV
    2251   m_spsExtensionFlag = false;
     2532#if !H_MV_HLS_8_SPS_NODOC_48
     2533  m_spsExtensionPresentFlag = false;
    22522534  for( Int i = 0; i < PS_EX_T_MAX_NUM; i++ )
    22532535  {
    22542536    m_spsExtensionTypeFlag[ i ] = false;
    22552537  }
     2538#else
     2539  m_spsRangeExtensionsFlag     = false;
     2540  m_spsMultilayerExtensionFlag = false;
     2541#if H_3D
     2542  m_spsExtension5bits          = 0;
     2543  m_sps3dExtensionFlag         = false;
     2544#else
     2545  m_spsExtension6bits          = 0;
     2546#endif
     2547#endif
     2548
    22562549  m_numScaledRefLayerOffsets = 0;
    22572550
     
    24332726
    24342727#if H_MV
     2728#if H_MV_HLS_8_SPS_NODOC_48
     2729  m_ppsRangeExtensionsFlag     = false;
     2730  m_ppsMultilayerExtensionFlag = false;
     2731#if !H_3D
     2732  m_ppsExtension6bits          = 0;
     2733#else
     2734  m_pps3dExtensionFlag         = false;
     2735  m_ppsExtension5bits          = 0;
     2736#endif
     2737#else
    24352738  for( Int i = 0; i < PS_EX_T_MAX_NUM; i++ )
    24362739  {
    24372740    m_ppsExtensionTypeFlag[ i ] = false;
    24382741  }
     2742#endif
    24392743#endif
    24402744}
     
    29623266Void TComSlice::markIvRefPicsAsShortTerm( std::vector<TComPic*> refPicSetInterLayer0, std::vector<TComPic*> refPicSetInterLayer1 )
    29633267{
    2964   // Mark as shortterm
     3268  // Mark as short-term
    29653269  for ( Int i = 0; i < refPicSetInterLayer0.size(); i++ )
    29663270  {
     
    29743278
    29753279}
     3280
     3281#if !H_MV_HLS_8_DBP_NODOC_42
    29763282Void TComSlice::markIvRefPicsAsUnused( TComPicLists* ivPicLists, std::vector<Int> targetDecLayerIdSet, TComVPS* vps, Int curLayerId, Int curPoc )
    29773283{
     
    30283334  }
    30293335}
    3030 
     3336#endif
    30313337Void TComSlice::printRefPicList()
    30323338
     
    30453351Void TComSlice::markCurrPic( TComPic* currPic )
    30463352{
     3353
     3354#if !H_MV_HLS_8_DBP_NODOC_42
    30473355  if ( !currPic->getSlice(0)->getDiscardableFlag() )
    30483356  {
     3357#endif
    30493358    currPic->getSlice(0)->setReferenced( true ) ;
    30503359    currPic->setIsLongTerm( false );
     3360#if !H_MV_HLS_8_DBP_NODOC_42
    30513361  }
    30523362  else
     
    30543364    currPic->getSlice(0)->setReferenced( false ) ;
    30553365  }
     3366#endif
     3367
     3368#if H_MV_HLS_7_VPS_P0300_27
     3369  currPic->setReconMark( true );
     3370  currPic->setPicOutputFlag( currPic->getSlice(0)->getPicOutputFlag() );
     3371#endif
    30563372}
    30573373
     
    30873403  Int refLayerIdx = vps->getLayerIdInVps( vps->getRefLayerId( getLayerId(), i ) );
    30883404
     3405#if H_MV_HLS_8_RPS_Q0060_17
     3406  Bool refLayerPicFlag = ( vps->getSubLayersVpsMaxMinus1( refLayerIdx ) >=  getTLayer() )  && ( getTLayer() == 0  ) &&
     3407    ( vps->getMaxTidIlRefPicsPlus1( refLayerIdx, vps->getLayerIdInVps( getLayerId() )) > getTLayer() );
     3408#else
    30893409  Bool refLayerPicFlag = ( vps->getSubLayersVpsMaxMinus1( refLayerIdx ) >=  getTLayer() )  &&
    30903410    ( vps->getMaxTidIlRefPicsPlus1( refLayerIdx, vps->getLayerIdInVps( getLayerId() )) > getTLayer() );
     3411#endif
    30913412
    30923413  return refLayerPicFlag;       
     
    39694290    }
    39704291  }
     4292
     4293  // ---------------
     4294  // To be added:
     4295  // When vps_base_layer_internal_flag is equal to 0 and layer_in_bsp_flag[ h ][ i ][ 0 ] is equal to 1 for any value of h in the
     4296  // range of 1 to vps_num_layer_sets_minus1, inclusive, and any value of i in the range of 0 to num_bitstream_partitions[ h ] - 1,
     4297  // inclusive, the value of layer_in_bsp_flag[ h ][ i ][ j ] for at least one value of j in the range of 1 to
     4298  // NumLayersInIdList[ h ] - 1, inclusive, shall be equal to 1.
     4299  // ---------------
     4300
     4301
     4302  // When num_bitstream_partitions[ h ] is equal to 1 for any value of h in the range 1 to vps_num_layer_set_minus1, inclusive,
     4303  // the value of layer_in_bsp_flag[ h ][ 0 ][ j ] should be equal to 0 for at least one value of j in the range 0 to
     4304  // NumLayersInIdList[ h ] − 1, inclusive.
     4305
     4306
     4307  if ( getNumBitstreamPartitions( h ) == 1 )
     4308  {
     4309    Bool atLeastOneZero = false;
     4310    for ( Int j = 0; j <= vps->getNumLayersInIdList( h ) - 1; j++ )
     4311    {
     4312      atLeastOneZero = atLeastOneZero || !getLayerInBspFlag( h, 0, j );
     4313    }   
     4314    assert( atLeastOneZero );
     4315  }
     4316
     4317 
     4318  // For any value of h in the range 1 to vps_num_layer_set_minus1, inclusive, the value of layer_in_bsp_flag[ h ][ i ][ j ]
     4319  // shall be equal to 1 for at most one value of i in the range of 0 to num_bitstream_partitions[ h ] − 1, inclusive.
     4320
     4321  for ( Int j = 0; j <= vps->getNumLayersInIdList( h ) - 1; j++ )
     4322  {
     4323    Int numLayerInBsp = 0;
     4324    for ( Int i = 0; i <= getNumBitstreamPartitions( h ) - 1; i++ )
     4325    {
     4326      numLayerInBsp += ( getLayerInBspFlag( h, i, j ) ? 1 : 0 ); 
     4327    }   
     4328    assert( numLayerInBsp <= 1 );
     4329  }
     4330
    39714331}
    39724332
  • trunk/source/Lib/TLibCommon/TComSlice.h

    r950 r964  
    5454class TComPicLists;
    5555class TComVPS;
     56#if H_MV_HLS_8_RPS_Q0100_36
     57class TComSPS;
     58#endif
    5659#endif
    5760// ====================================================================================================================
     
    126129  Void sortDeltaPOC();
    127130  Void printDeltaPOC();
     131
     132#if H_MV_HLS_8_RPS_Q0100_36
     133  Void checkMaxNumPics( Bool vpsExtensionFlag, Int maxNumPics, Int nuhLayerId, Int spsMaxDecPicBufferingMinus1 )
     134  {
     135    assert( getNumberOfPictures() >= 0 );
     136    if ( nuhLayerId == 0 )
     137    {
     138      assert( getNumberOfPictures() <= spsMaxDecPicBufferingMinus1 );
     139    }
     140
     141    if ( vpsExtensionFlag )
     142    {
     143      assert( getNumberOfPictures() <= maxNumPics );
     144    }
     145  }
     146#endif
    128147};
    129148
     
    231250{
    232251  ProfileTierLevel m_generalPTL;
    233   ProfileTierLevel m_subLayerPTL[6];      // max. value of max_sub_layers_minus1 is 6
    234   Bool m_subLayerProfilePresentFlag[6];
    235   Bool m_subLayerLevelPresentFlag[6];
     252  ProfileTierLevel m_subLayerPTL    [MAX_TLAYER-1];      // max. value of max_sub_layers_minus1 is MAX_TLAYER-1 (= 6)
     253  Bool m_subLayerProfilePresentFlag [MAX_TLAYER-1];
     254  Bool m_subLayerLevelPresentFlag   [MAX_TLAYER-1];
    236255
    237256public:
     
    436455  Int  m_numBitstreamPartitions[MAX_VPS_OP_SETS_PLUS1];
    437456  Bool m_layerInBspFlag[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_LAYERS];
    438   Int  m_numBspSchedCombinations[MAX_VPS_OP_SETS_PLUS1];
     457  Int  m_numBspSchedCombinationsMinus1[MAX_VPS_OP_SETS_PLUS1];
    439458  Int  m_bspCombHrdIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION];
    440459  Int  m_bspCombSchedIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION];
     
    455474  Void checkLayerInBspFlag ( TComVPS* vps, Int h ); 
    456475
    457   Void setNumBspSchedCombinations( Int h, Int  val ) { m_numBspSchedCombinations[h] = val; }
    458   Int  getNumBspSchedCombinations( Int h ) { return m_numBspSchedCombinations[h]; }
     476  Void setNumBspSchedCombinationsMinus1( Int h, Int  val ) { m_numBspSchedCombinationsMinus1[h] = val; }
     477  Int  getNumBspSchedCombinationsMinus1( Int h ) { return m_numBspSchedCombinationsMinus1[h]; }
    459478
    460479  Void setBspCombHrdIdx( Int h, Int i, Int j, Int  val ) { m_bspCombHrdIdx[h][i][j] = val; }
    461480  Int  getBspCombHrdIdx( Int h, Int i, Int j ) { return m_bspCombHrdIdx[h][i][j]; }
     481#if H_MV_HLS_8_HRD_Q0101_04
     482  Int  getBspCombHrdIdxLen() { return gCeilLog2( getVpsNumBspHrdParametersMinus1() + 1);  };
     483  Void checkBspCombHrdAndShedIdx( TComVPS* vps, Int h, Int i, Int j ) 
     484  {
     485    // bsp_comb_hrd_idx
     486    assert( getBspCombSchedIdx(h, i, j ) >= 0 );
     487    assert( getBspCombSchedIdx(h, i, j ) <= getVpsNumBspHrdParametersMinus1() );
     488
     489    // bsp_comb_sched_idx
     490    assert( getBspCombSchedIdx(h, i, j ) >= 0 );
     491
     492    //* This check needs to activated,  when HighestTid is available here   
     493    //  assert(  getBspCombSchedIdx(h, i, j ) <= vps->getHrdParameters( getBspCombHrdIdx( h, i, j ) )->getCpbCntMinus1( highestTid ) );
     494  }
     495#endif
    462496
    463497  Void setBspCombSchedIdx( Int h, Int i, Int j, Int  val ) { m_bspCombSchedIdx[h][i][j] = val; }
     
    636670  Int   m_maxVpsDecPicBufferingMinus1[MAX_VPS_OUTPUTLAYER_SETS][MAX_NUM_LAYER_IDS][MAX_TLAYER];;
    637671  Int   m_maxVpsNumReorderPics       [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER];
    638 #if H_MV_HLS7_GEN
    639   Int  m_maxVpsLayerDecPicBuffMinus1[TO_BE_SPECIFIED][TO_BE_SPECIFIED][TO_BE_SPECIFIED];
    640 #endif
    641672  Int   m_maxVpsLatencyIncreasePlus1 [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER];
    642673
     
    655686  Void setMaxVpsNumReorderPics( Int i, Int j, Int  val ) { m_maxVpsNumReorderPics[i][j] = val; }
    656687  Int  getMaxVpsNumReorderPics( Int i, Int j ) { return m_maxVpsNumReorderPics[i][j]; }
    657 #if H_MV_HLS7_GEN
    658   Void setMaxVpsLayerDecPicBuffMinus1( Int i, Int k, Int j, Int  val ) { m_maxVpsLayerDecPicBuffMinus1[i][k][j] = val; }
    659   Int  getMaxVpsLayerDecPicBuffMinus1( Int i, Int k, Int j ) { return m_maxVpsLayerDecPicBuffMinus1[i][k][j]; }
    660 #endif
     688
    661689  Void setMaxVpsLatencyIncreasePlus1( Int i, Int j, Int  val ) { m_maxVpsLatencyIncreasePlus1[i][j] = val; }
    662690  Int  getMaxVpsLatencyIncreasePlus1( Int i, Int j ) { return m_maxVpsLatencyIncreasePlus1[i][j]; }
     
    667695private:
    668696  Int         m_VPSId;
     697#if H_MV_HLS_8_SYN_Q0041_03
     698  Bool        m_vpsBaseLayerInternalFlag;
     699#endif
     700
    669701  UInt        m_uiMaxTLayers;
    670702
     
    704736  TimingInfo  m_timingInfo;
    705737#if H_MV
     738  #if H_MV_HLS_8_RPS_Q0100_36
     739  Bool        m_vpsExtensionFlag;
     740#endif
    706741  /// VPS EXTENSION SYNTAX ELEMENTS
    707742  Bool        m_avcBaseLayerFlag;
     
    725760  Bool        m_vpsProfilePresentFlag    [MAX_VPS_OP_SETS_PLUS1];
    726761
    727   Int         m_numAddOutputLayerSets;   
    728   Int         m_defaultTargetOutputLayerIdc;
    729 
    730   Int         m_outputLayerSetIdxMinus1  [MAX_VPS_OUTPUTLAYER_SETS]; 
     762  Int         m_numAddLayerSets;   
     763#if H_MV_HLS_8_SYN_39_19
     764  Int         m_highestLayerIdxPlus1     [MAX_VPS_ADD_OUTPUT_LAYER_SETS][MAX_NUM_LAYERS];
     765  Int         m_numAddOlss;
     766#endif
     767  Int         m_defaultOutputLayerIdc;
     768
     769  Int         m_layerSetIdxForOlsMinus1  [MAX_VPS_OUTPUTLAYER_SETS]; 
    731770  Bool        m_outputLayerFlag          [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1];
    732771  Int         m_profileLevelTierIdx      [MAX_VPS_OUTPUTLAYER_SETS ];
    733772  Bool        m_altOutputLayerFlag       [MAX_VPS_OUTPUTLAYER_SETS];
    734773  Bool        m_repFormatIdxPresentFlag;
     774
    735775  Int         m_vpsNumRepFormatsMinus1;
    736776  Int         m_vpsRepFormatIdx          [MAX_NUM_LAYERS];
     
    762802  Int         m_refLayerId               [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 
    763803
     804#if H_MV_HLS_8
     805  Int         m_numRefLayers             [MAX_NUM_LAYER_IDS];
     806  Int         m_numPredictedLayers       [MAX_NUM_LAYERS];
     807  Int         m_predictedLayerId         [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS];
     808  Int         m_numIndependentLayers;
     809  Int         m_numLayersInTreePartition [MAX_NUM_LAYER_IDS];
     810  Int         m_treePartitionLayerIdList [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS];
     811  Bool        m_recursiveRefLayerFlag    [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS];
     812#else
     813
    764814  Int         m_numSamplePredRefLayers   [MAX_NUM_LAYERS];
    765815  Bool        m_samplePredEnabledFlag    [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     
    769819  Bool        m_motionPredEnabledFlag    [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
    770820  Int         m_motionPredRefLayerId     [MAX_NUM_LAYERS][MAX_NUM_LAYERS];
     821#endif
    771822  Int         m_viewIndex                [MAX_NUM_LAYERS   ];
    772823 
     
    777828
    778829  Int         xGetDimBitOffset( Int j );
    779  
     830
     831#if H_MV_HLS_8
     832  Void xSetRefLayerFlags( Int currLayerId )
     833  {
     834    for( Int j = 0; j < getNumDirectRefLayers( currLayerId ); j++ )
     835    {
     836      Int refLayerId = m_refLayerId[ currLayerId ][ j ];
     837      m_recursiveRefLayerFlag[ currLayerId ][ refLayerId ] = 1;
     838      for( Int k = 0; k < MAX_NUM_LAYER_IDS; k++ )
     839      {
     840        m_recursiveRefLayerFlag[ currLayerId ][ k ] = m_recursiveRefLayerFlag[ currLayerId ][ k ]  ||  m_recursiveRefLayerFlag[ refLayerId ][ k ];
     841      }
     842    }
     843  }
     844#endif
    780845  // VPS EXTENSION 2 SYNTAX ELEMENTS
    781846#if H_3D_ARP
     
    837902  Void    setVPSId       (Int i)              { m_VPSId = i;             }
    838903
     904#if H_MV_HLS_8_SYN_Q0041_03
     905  Void    setVpsBaseLayerInternalFlag( Bool flag ) { m_vpsBaseLayerInternalFlag = flag; }
     906  Bool    getVpsBaseLayerInternalFlag(  )          { return m_vpsBaseLayerInternalFlag; }
     907#endif
     908
    839909  UInt    getMaxTLayers  ()                   { return m_uiMaxTLayers;   }
    840910  Void    setMaxTLayers  (UInt t)             { m_uiMaxTLayers = t; }
     
    887957  TimingInfo* getTimingInfo() { return &m_timingInfo; }
    888958#if H_MV
     959
     960#if H_MV_HLS_8_RPS_Q0100_36
     961  Void    setVpsExtensionFlag( Bool flag )                                 { m_vpsExtensionFlag = flag; }
     962  Bool    getVpsExtensionFlag(  )                                          { return m_vpsExtensionFlag; }
     963#endif
     964#if !H_MV_HLS_8_SYN_Q0041_03
    889965  Void    setAvcBaseLayerFlag( Bool val )                                  { m_avcBaseLayerFlag = val;  }
    890966  Bool    getAvcBaseLayerFlag()                                            { return m_avcBaseLayerFlag; }
    891 
     967#endif
    892968  Void    setVpsNonVuiExtensionLength( Int  val )                          { m_vpsNonVuiExtensionLength = val; }
    893969  Int     getVpsNonVuiExtensionLength(  )                                  { return m_vpsNonVuiExtensionLength; }
     
    9471023  Bool    getVpsProfilePresentFlag( Int idx )                              { return m_vpsProfilePresentFlag[idx]; }
    9481024
    949   Void    setNumAddOutputLayerSets( Int val )                              { m_numAddOutputLayerSets = val; }
    950   Int     getNumAddOutputLayerSets( )                                      { return m_numAddOutputLayerSets; }
    951  
    952   Void    setDefaultTargetOutputLayerIdc( Int  val )                       { m_defaultTargetOutputLayerIdc = val; }
    953   Int     getDefaultTargetOutputLayerIdc(  )                               { return m_defaultTargetOutputLayerIdc; }   
    954  
    955   Void    setOutputLayerSetIdxMinus1( Int outLayerSetIdx, Int val )        { m_outputLayerSetIdxMinus1[ outLayerSetIdx ]  = val; }
    956   Int     getOutputLayerSetIdxMinus1( Int outLayerSetIdx )                 { return m_outputLayerSetIdxMinus1[ outLayerSetIdx ]; }
     1025  Void    setNumAddLayerSets( Int val )                                    { m_numAddLayerSets = val; }
     1026  Int     getNumAddLayerSets( )                                            { return m_numAddLayerSets; }
     1027 
     1028#if H_MV_HLS_8_SYN_39_19
     1029  Void    setHighestLayerIdxPlus1( Int i, Int j, Int  val )                { m_highestLayerIdxPlus1[i][j] = val; }
     1030  Int     getHighestLayerIdxPlus1( Int i, Int j )                          { return m_highestLayerIdxPlus1[i][j]; }
     1031
     1032  Void    setNumAddOlss( Int  val )                                        { m_numAddOlss = val; }
     1033  Int     getNumAddOlss(  )                                                { return m_numAddOlss; }
     1034#endif
     1035
     1036  Void    setDefaultOutputLayerIdc( Int  val )                             { m_defaultOutputLayerIdc = val; }
     1037  Int     getDefaultOutputLayerIdc(  )                                     { return m_defaultOutputLayerIdc; }   
     1038 
     1039  Void    setLayerSetIdxForOlsMinus1( Int outLayerSetIdx, Int val )        { m_layerSetIdxForOlsMinus1[ outLayerSetIdx ]  = val; }
     1040  Int     getLayerSetIdxForOlsMinus1( Int outLayerSetIdx )                 { return m_layerSetIdxForOlsMinus1[ outLayerSetIdx ]; }
    9571041
    9581042  Void    setOutputLayerFlag( Int outLayerSetIdx, Int i, Bool flag )       { m_outputLayerFlag[ outLayerSetIdx ][ i ] = flag; }
     
    9751059  Void    setVpsRepFormatIdx( Int i, Int  val )                            { m_vpsRepFormatIdx[i] = val; }
    9761060  Int     getVpsRepFormatIdx( Int i )                                      { return m_vpsRepFormatIdx[i]; }
     1061
     1062#if H_MV_HLS_8_PMS_Q0195_20
     1063  Int     inferVpsRepFormatIdx( Int i )                                    { return std::min( i, getVpsNumRepFormatsMinus1()  );  }
     1064#endif
    9771065
    9781066  Void    setRepFormat( Int i, TComRepFormat* val )                        { m_repFormat[i] = val;  }
     
    9891077  Void    setDpbSize( TComDpbSize* val )                                   { assert( m_dpbSize != 0 ); m_dpbSize = val; }
    9901078  TComDpbSize* getDpbSize( )                                               { return m_dpbSize;}
     1079#if H_MV_HLS_8_RPS_Q0100_36
     1080  Void    inferDbpSizeLayerSetZero( TComSPS* sps, Bool encoder );
     1081#endif
     1082
    9911083
    9921084  Void    setPocLsbNotPresentFlag( Int i, Bool flag )                      { m_pocLsbNotPresentFlag[i] = flag; }
     
    10231115  Int     getNumDirectRefLayers( Int layerIdInNuh )                        { return m_numDirectRefLayers[ layerIdInNuh ];  };                               
    10241116  Int     getRefLayerId        ( Int layerIdInNuh, Int idx );;
     1117
     1118#if H_MV_HLS_8
     1119  Int     getNumRefLayers            ( Int i )        { return m_numRefLayers[i]; }
     1120  Int     getNumPredictedLayers      ( Int i )        { return m_numPredictedLayers[i]; }
     1121  Int     getPredictedLayerId        ( Int i, Int j ) { return m_predictedLayerId[i][j]; }
     1122  Int     getNumIndependentLayers    (  )             { return m_numIndependentLayers; }
     1123  Int     getNumLayersInTreePartition( Int i )        { return m_numLayersInTreePartition[i]; }
     1124  Int     getTreePartitionLayerIdList( Int i, Int j ) { return m_treePartitionLayerIdList[i][j]; }
     1125  Bool    getRecursiveRefLayerFlag   ( Int i, Int j ) { return m_recursiveRefLayerFlag[i][j]; }
     1126
     1127#endif
     1128
     1129#if H_MV_HLS_8_SYN_39_19
     1130  Int     getNumLayerSets( )                                               { return getVpsNumLayerSetsMinus1() + 1 + getNumAddLayerSets();  }; 
     1131#endif
    10251132  Bool    checkVPSExtensionSyntax();
    10261133  Int     scalTypeToScalIdx   ( ScalabilityType scalType );
     
    10301137
    10311138  Int     getNumLayersInIdList ( Int lsIdx );
     1139#if H_MV_HLS_8_RPS_Q0100_36
     1140  Int     getLayerSetLayerIdList(Int lsIdx, Int j )                       { return m_layerSetLayerIdList[ lsIdx ][ j ]; };
     1141#endif
    10321142
    10331143  Int     getNumOutputLayerSets() ;   
     1144#if !H_MV_HLS_8_DBP_NODOC_42
    10341145  Int     getNumSubDpbs( Int i )                                           { return getNumLayersInIdList( i ); }; 
     1146#endif
    10351147  Bool    isOutputLayer( Int outLayerSetIdx, Int layerIdInNuh );   
    10361148  Void    deriveLayerSetLayerIdList();
    10371149
    1038   Int     getLayerSetIdxForOutputLayerSet( Int i )                         { return ( i <= getVpsNumLayerSetsMinus1() ) ? i  : getOutputLayerSetIdxMinus1( i ) + 1 ; };
     1150  Int     olsIdxToLsIdx( Int i )                                           { return ( i <= getVpsNumLayerSetsMinus1() ) ? i  : getLayerSetIdxForOlsMinus1( i ) + 1 ; };
    10391151
    10401152  Void    initTargetLayerIdLists  ( );
     
    10481160
    10491161  Int     getMaxSubLayersInLayerSetMinus1( Int i );
     1162
     1163#if H_MV_HLS_8_SYN_39_19
     1164  Int     getHighestLayerIdxPlus1Len( Int j )                                   { return gCeilLog2( getNumLayersInTreePartition( j ) + 1 );   };
     1165#endif
     1166
     1167 
     1168#if H_MV_HLS_7_VPS_P0300_27
     1169  Bool     getAltOutputLayerFlagVar( Int i )
     1170  {  // Semantics variable not syntax element !
     1171
     1172    Bool altOptLayerFlag = false;     
     1173    if ( i > 0 && getNumOutputLayersInOutputLayerSet( i ) == 1 &&
     1174      getNumDirectRefLayers( getOlsHighestOutputLayerId( i ) ) > 0 )
     1175    {
     1176      altOptLayerFlag = getAltOutputLayerFlag( i );
     1177    }
     1178    return altOptLayerFlag;
     1179  };
     1180#endif
    10501181
    10511182  // inference
     
    10551186  // helpers
    10561187  Bool    getInDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Int depth = 0 );
     1188#if H_MV_HLS_8_RPS_Q0100_36
     1189  Int     getMaxNumPics( Int layerId )
     1190  {   
     1191    Int maxNumPics = MAX_INT;
     1192    for( Int olsIdx = 0; olsIdx < getNumOutputLayerSets(); olsIdx++)
     1193    {
     1194      Int lsIdx = olsIdxToLsIdx( olsIdx );
     1195      for( Int j = 0; j < getNumLayersInIdList( lsIdx ); j++ )
     1196      {
     1197        if( getLayerSetLayerIdList(lsIdx, j ) ==  layerId )
     1198        {
     1199          Int maxSL = getMaxSubLayersInLayerSetMinus1( lsIdx );
     1200          maxNumPics = std::min( maxNumPics, getDpbSize()->getMaxVpsDecPicBufferingMinus1( olsIdx , j,  maxSL ) );
     1201        }
     1202      }
     1203    }
     1204    assert( maxNumPics != MAX_INT );
     1205    return maxNumPics;
     1206  }
     1207#endif
     1208
    10571209  /// VPS EXTENSION 2 SYNTAX ELEMENTS
    10581210#if H_3D 
     
    14471599
    14481600  UInt        m_uiBitsForPOC;
     1601
    14491602  UInt        m_numLongTermRefPicSPS;
    14501603  UInt        m_ltRefPicPocLsbSps[33];
     
    14761629  TComVPS*    m_pcVPS;
    14771630  // SPS
    1478   Bool        m_spsExtensionFlag;
    1479   Bool        m_spsExtensionTypeFlag[PS_EX_T_MAX_NUM];
     1631  Bool        m_spsExtensionPresentFlag;
     1632#if H_MV_HLS_8_SPS_NODOC_48
     1633  Bool        m_spsRangeExtensionsFlag;
     1634  Bool        m_spsMultilayerExtensionFlag;
     1635#if H_3D
     1636  Bool        m_sps3dExtensionFlag;
     1637  Int         m_spsExtension5bits;
     1638#else
     1639  Int         m_spsExtension6bits;
     1640#endif
     1641#else
     1642  Bool        m_spsExtensionTypeFlag     [PS_EX_T_MAX_NUM];
     1643#endif
    14801644  Bool        m_spsInferScalingListFlag;
    14811645  Int         m_spsScalingListRefLayerId;
     
    15911755  UInt      getMaxTLayers()                           { return m_uiMaxTLayers; }
    15921756  Void      setMaxTLayers( UInt uiMaxTLayers )        { assert( uiMaxTLayers <= MAX_TLAYER ); m_uiMaxTLayers = uiMaxTLayers; }
     1757#if H_MV_HLS_8
     1758  UInt      getSpsMaxSubLayersMinus1()                { return ( m_uiMaxTLayers - 1); }
     1759#endif
    15931760
    15941761  Bool      getTemporalIdNestingFlag()                { return m_bTemporalIdNestingFlag; }
     
    16221789  TComPTL* getPTL()     { return &m_pcPTL; }
    16231790#if H_MV
    1624   Void setSpsExtensionFlag( Bool flag ) { m_spsExtensionFlag = flag; }
    1625   Bool getSpsExtensionFlag( )  { return m_spsExtensionFlag; }
    1626 
    1627   Void setSpsExtensionTypeFlag( Int i, Bool flag ) { m_spsExtensionTypeFlag[i] = flag; }
    1628   Bool getSpsExtensionTypeFlag( Int i ) { return m_spsExtensionTypeFlag[i]; }
     1791
     1792#if H_MV_HLS_8_HRD_Q0102_08
     1793  Void inferSpsMaxDecPicBufferingMinus1( TComVPS* vps, Int targetOptLayerSetIdx, Int currLayerId, Bool encoder )
     1794  {
     1795    const std::vector<Int>& targetDecLayerIdList = vps->getTargetDecLayerIdList( vps->olsIdxToLsIdx( targetOptLayerSetIdx ));
     1796
     1797    if (getLayerId() > 0 )
     1798    {
     1799      Int layerIdx = 0;         
     1800      while (layerIdx < (Int) targetDecLayerIdList.size() )
     1801      {
     1802        if ( targetDecLayerIdList[layerIdx] == currLayerId )
     1803        {
     1804          break;
     1805        }
     1806        layerIdx++;
     1807      }
     1808
     1809      assert( layerIdx < (Int) targetDecLayerIdList.size() );
     1810
     1811      for (Int i = 0; i <= getSpsMaxSubLayersMinus1(); i++ )
     1812      {
     1813        Int maxDecPicBufferingMinus1 = vps->getDpbSize()->getMaxVpsDecPicBufferingMinus1( targetOptLayerSetIdx, layerIdx, i ) ;
     1814
     1815        if ( encoder )
     1816        {
     1817          assert( getMaxDecPicBuffering( i ) - 1 == maxDecPicBufferingMinus1 );
     1818        }
     1819        else
     1820        {
     1821          setMaxDecPicBuffering(i, maxDecPicBufferingMinus1 + 1 );
     1822        }
     1823      }
     1824    }   
     1825  }
     1826#endif
     1827
     1828  Void setSpsExtensionPresentFlag( Bool flag ) { m_spsExtensionPresentFlag = flag; }
     1829  Bool getSpsExtensionPresentFlag( )           { return m_spsExtensionPresentFlag; }
     1830
     1831#if H_MV_HLS_8_SPS_NODOC_48
     1832  Void setSpsRangeExtensionsFlag( Bool flag )            { m_spsRangeExtensionsFlag = flag; }
     1833  Bool getSpsRangeExtensionsFlag(  )                     { return m_spsRangeExtensionsFlag; }
     1834
     1835  Void setSpsMultilayerExtensionFlag( Bool flag )        { m_spsMultilayerExtensionFlag = flag; }
     1836  Bool getSpsMultilayerExtensionFlag( )                  { return m_spsMultilayerExtensionFlag; }
     1837#if H_3D
     1838  Void setSps3dExtensionFlag( Bool flag )                { m_sps3dExtensionFlag = flag; }
     1839  Bool getSps3dExtensionFlag(  )                        { return m_sps3dExtensionFlag; }
     1840
     1841  Void setSpsExtension5bits( Int  val )                  { m_spsExtension5bits = val; }
     1842  Int  getSpsExtension5bits(  )                          { return m_spsExtension5bits; }
     1843#else
     1844  Void setSpsExtension6bits( Int  val )                  { m_spsExtension6bits = val; }
     1845  Int  getSpsExtension6bits(  )                          { return m_spsExtension6bits; }
     1846#endif
     1847#else
     1848  Void setSpsExtensionTypeFlag( Int i, Bool flag )       { m_spsExtensionTypeFlag[i] = flag; }
     1849  Bool getSpsExtensionTypeFlag( Int i )                  { return m_spsExtensionTypeFlag[i]; }
     1850#endif
     1851 
    16291852  Void      setVPS          ( TComVPS* pcVPS ) { m_pcVPS = pcVPS; }
    16301853  TComVPS*  getVPS          () { return m_pcVPS; }
     
    16651888
    16661889  Void inferScalingList( TComSPS* spsSrc );
     1890
     1891#if H_MV_HLS_8_RPS_Q0100_36
     1892  // others
     1893  Void checkRpsMaxNumPics( TComVPS* vps, Int currLayerId )
     1894  {
     1895    // In spec, when rps is in SPS, nuh_layer_id of SPS is used instead
     1896    // of nuh_layer_id of slice (currLayerId), this seems to be a bug.
     1897
     1898    for (Int i = 0; i < getRPSList()->getNumberOfReferencePictureSets(); i++ )
     1899    {
     1900      TComReferencePictureSet* rps = getRPSList()->getReferencePictureSet( i );
     1901      if ( !rps->getInterRPSPrediction() )
     1902      {
     1903        rps->checkMaxNumPics( vps->getVpsExtensionFlag(), vps->getMaxNumPics( currLayerId ),
     1904          getLayerId(), getMaxDecPicBuffering( getSpsMaxSubLayersMinus1() ) - 1 ); 
     1905      }
     1906    }
     1907  }
     1908#endif
     1909
    16671910#endif
    16681911#if H_3D_QTLPC
     
    17762019  Int  m_ppsScalingListRefLayerId;
    17772020
     2021#if H_MV_HLS_8_SPS_NODOC_48
     2022  Bool m_ppsRangeExtensionsFlag;
     2023  Bool m_ppsMultilayerExtensionFlag;
     2024#if !H_3D
     2025  Int  m_ppsExtension6bits;
     2026#else
     2027  Bool m_pps3dExtensionFlag;
     2028  Int  m_ppsExtension5bits;
     2029#endif
     2030
     2031#else
    17782032  Bool m_ppsExtensionTypeFlag[PS_EX_T_MAX_NUM];
     2033#endif
    17792034  Bool m_pocResetInfoPresentFlag;
    17802035#endif
     
    19202175  Int  getPpsScalingListRefLayerId(  ) { return m_ppsScalingListRefLayerId; }
    19212176
     2177#if H_MV_HLS_8_SPS_NODOC_48
     2178  Void setPpsRangeExtensionsFlag( Bool flag ) { m_ppsRangeExtensionsFlag = flag; }
     2179  Bool getPpsRangeExtensionsFlag(  ) { return m_ppsRangeExtensionsFlag; }
     2180
     2181  Void setPpsMultilayerExtensionFlag( Bool flag ) { m_ppsMultilayerExtensionFlag = flag; }
     2182  Bool getPpsMultilayerExtensionFlag(  ) { return m_ppsMultilayerExtensionFlag; }
     2183
     2184#if !H_3D
     2185  Void setPpsExtension6bits( Int  val ) { m_ppsExtension6bits = val; }
     2186  Int  getPpsExtension6bits(  ) { return m_ppsExtension6bits; }
     2187#else
     2188  Void setPps3dExtensionFlag( Bool flag ) { m_pps3dExtensionFlag = flag; }
     2189  Bool getPps3dExtensionFlag(  ) { return m_pps3dExtensionFlag; }
     2190
     2191  Void setPpsExtension5bits( Int  val ) { m_ppsExtension5bits = val; }
     2192  Int  getPpsExtension5bits(  ) { return m_ppsExtension5bits; }
     2193#endif
     2194#else
    19222195  Void setPpsExtensionTypeFlag( Int i, Bool flag ) { m_ppsExtensionTypeFlag[i] = flag; }
    19232196  Bool getPpsExtensionTypeFlag( Int i ) { return m_ppsExtensionTypeFlag[i]; }
     2197#endif
    19242198
    19252199  Void setPocResetInfoPresentFlag( Bool flag ) { m_pocResetInfoPresentFlag = flag; }
     
    19572231  Int         m_iPPSId;               ///< picture parameter set ID
    19582232  Bool        m_PicOutputFlag;        ///< pic_output_flag
     2233#if H_MV_HLS_8_POC_Q0142_32
     2234  Int         m_slicePicOrderCntLsb;   
     2235#endif 
    19592236  Int         m_iPOC;
    19602237#if H_MV
     
    20102287  UInt        m_colFromL0Flag;  // collocated picture from List0 flag
    20112288 
     2289#if SETTING_NO_OUT_PIC_PRIOR
     2290  Bool        m_noOutputPriorPicsFlag;
     2291  Bool        m_noRaslOutputFlag;
     2292  Bool        m_handleCraAsBlaFlag;
     2293#endif
     2294 
    20122295  UInt        m_colRefIdx;
    20132296  UInt        m_maxNumMergeCand;
     
    21312414  Void      setPicOutputFlag( Bool b )         { m_PicOutputFlag = b;    }
    21322415  Bool      getPicOutputFlag()                 { return m_PicOutputFlag; }
     2416#if H_MV_HLS_8_POC_Q0142_32
     2417  Void      setSlicePicOrderCntLsb( Int i ) { m_slicePicOrderCntLsb = i; };
     2418  Int       getSlicePicOrderCntLsb(  )      { return m_slicePicOrderCntLsb; };
     2419#endif
    21332420  Void      setSaoEnabledFlag(Bool s) {m_saoEnabledFlag =s; }
    21342421  Bool      getSaoEnabledFlag() { return m_saoEnabledFlag; }
     
    22812568  Void createInterLayerReferencePictureSet( TComPicLists* ivPicLists, std::vector<TComPic*>& refPicSetInterLayer0, std::vector<TComPic*>& refPicSetInterLayer1 );
    22822569  static Void markIvRefPicsAsShortTerm    ( std::vector<TComPic*> refPicSetInterLayer0, std::vector<TComPic*> refPicSetInterLayer1 );
    2283   static Void markCurrPic                 ( TComPic* currPic );;
     2570  static Void markCurrPic                 ( TComPic* currPic );
     2571#if !H_MV_HLS_8_DBP_NODOC_42
    22842572  static Void markIvRefPicsAsUnused       ( TComPicLists* ivPicLists, std::vector<Int> targetDecLayerIdSet, TComVPS* vps, Int curLayerId, Int curPoc  );
     2573#endif
    22852574  Void        printRefPicList();
    22862575#endif
    22872576  Bool isTemporalLayerSwitchingPoint( TComList<TComPic*>& rcListPic );
    22882577  Bool isStepwiseTemporalLayerSwitchingPointCandidate( TComList<TComPic*>& rcListPic );
     2578#if ALLOW_RECOVERY_POINT_AS_RAP
     2579  Int       checkThatAllRefPicsAreAvailable( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool printErrors, Int pocRandomAccess = 0, Bool bUseRecoveryPoint = false);
     2580  Void      createExplicitReferencePictureSetFromReference( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool isRAP, Int pocRandomAccess = 0, Bool bUseRecoveryPoint = false);
     2581#else
    22892582  Int       checkThatAllRefPicsAreAvailable( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool printErrors, Int pocRandomAccess = 0);
    22902583  Void      createExplicitReferencePictureSetFromReference( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool isRAP);
     2584#endif
    22912585
    22922586  Void setMaxNumMergeCand               (UInt val )         { m_maxNumMergeCand = val;                    }
    22932587  UInt getMaxNumMergeCand               ()                  { return m_maxNumMergeCand;                   }
     2588
     2589#if SETTING_NO_OUT_PIC_PRIOR
     2590  Void setNoOutputPriorPicsFlag              ( Bool val )         { m_noOutputPriorPicsFlag = val;                    }
     2591  Bool getNoOutputPriorPicsFlag              ()                   { return m_noOutputPriorPicsFlag;                   }
     2592
     2593  Void setNoRaslOutputFlag              ( Bool val )         { m_noRaslOutputFlag = val;                    }
     2594  Bool getNoRaslOutputFlag              ()                   { return m_noRaslOutputFlag;                   }
     2595
     2596  Void setHandleCraAsBlaFlag              ( Bool val )         { m_handleCraAsBlaFlag = val;                    }
     2597  Bool getHandleCraAsBlaFlag              ()                   { return m_handleCraAsBlaFlag;                   }
     2598#endif
    22942599
    22952600  Void setSliceMode                     ( UInt uiMode )     { m_sliceMode = uiMode;                     }
     
    24332738  Void setPocResetIdc( Int  val ) { m_pocResetIdc = val; }
    24342739  Int  getPocResetIdc(  ) { return m_pocResetIdc; }
    2435 
     2740#if H_MV_HLS_8_POC_Q0142_32
     2741  Void checkPocResetIdc( ) { assert( !(getVPS()->getPocLsbNotPresentFlag( getLayerIdInVps() ) )  || !(getSlicePicOrderCntLsb() > 0 ) || !( getPocResetIdc() == 2) ); } 
     2742#endif
    24362743  Void setPocResetPeriodId( Int  val ) { m_pocResetPeriodId = val; }
    24372744  Int  getPocResetPeriodId(  ) { return m_pocResetPeriodId; }
     
    24422749  Void setPocLsbVal( Int  val ) { m_pocLsbVal = val; }
    24432750  Int  getPocLsbVal(  ) { return m_pocLsbVal; }
     2751#if H_MV_HLS_8_POC_Q0142_32
     2752  Void checkPocLsbVal( ) { assert( !(getVPS()->getPocLsbNotPresentFlag( getLayerIdInVps() ) )  || !getFullPocResetFlag() || ( getPocLsbVal() == 0 ) ); } 
     2753#endif
    24442754
    24452755  Void setPocMsbValPresentFlag( Bool flag ) { m_pocMsbValPresentFlag = flag; }
     
    24662776
    24672777  // Additional variables derived in slice header semantics
     2778
    24682779  Int  getNumInterLayerRefPicsMinus1Len( ) { return gCeilLog2(  getVPS()->getNumDirectRefLayers( getLayerId() )); }
    24692780  Int  getInterLayerPredLayerIdcLen    ( ) { return gCeilLog2(  getVPS()->getNumDirectRefLayers( getLayerId() )); }
     
    24832794  TComPic* getPicFromRefPicSetInterLayer( Int setIdc, Int layerId );
    24842795
     2796
     2797#if H_MV_HLS_8_POC_Q0146_15
     2798// Inference
     2799  Bool inferPocMsbValPresentFlag()
     2800  {
     2801    Bool pocMsbValPresentFlag;
     2802    if( getSliceSegmentHeaderExtensionLength() == 0 )
     2803    {
     2804      pocMsbValPresentFlag = false;
     2805    }
     2806    else if ( getPocMsbValRequiredFlag() )
     2807    {
     2808      pocMsbValPresentFlag = true;
     2809    }
     2810    else
     2811    {
     2812      pocMsbValPresentFlag = false;
     2813    }
     2814
     2815    return pocMsbValPresentFlag;
     2816  } 
     2817#endif
    24852818#endif
    24862819#if H_3D_DDD
  • trunk/source/Lib/TLibCommon/TypeDef.h

    r950 r964  
    6666
    6767#define NTT_BUG_FIX_TK54    1
    68 
     68#define BUG_FIX_TK65        1
    6969
    7070/////////////////////////////////////////////////////////////////////////////////////////
     
    359359#define MPI_SUBPU_DEFAULT_MV_H0077_H0099_H0111_H0133    1
    360360#endif
     361
     362#if H_MV
     363#define H0044_POC_LSB_NOT_PRESENT        1      ///< JCT3V-H0044: Add constraint checking on the value of poc_reset_idc and poc_lsb_val
     364#define H0056_EOS_CHECKS                 1      ///< JCT3V-H0056: Put checks on handling EOS
     365#endif
    361366/////////////////////////////////////////////////////////////////////////////////////////
    362367///////////////////////////////////   TBD                  //////////////////////////////
    363368/////////////////////////////////////////////////////////////////////////////////////////
    364369
     370
     371#define H_MV_HLS_8                           1 // General changes
     372#define H_MV_HLS_7_VPS_P0300_27              1 // Output part only. (VPS/P0300/alt output layer flag) #27 Change alt output layer flag to be signalled within the loop of output layer sets, from JCTVC-P0300-v2. Decision: Adopt.
     373#define MV_FIX_DEP_TYPES                     1
     374
     375
     376#define H_MV_HLS7_GEN                        0  // General changes (not tested)
     377
     378// POC
    365379// #define H_MV_HLS_7_POC_P0041_3            0 // (POC/P0041/POC reset) #3 It was remarked that we should require each non-IRAP picture that has discardable_flag equal to 1 to have NUT value indicating that it is a sub-layer non-reference picture. This was agreed. Decision: Adopt (with constraint for discardable_flag as described above)
    366380// #define H_MV_HLS_7_POC_P0041_FIXES        0 // (POC/P0041/Fixes) For each non-IRAP picture that has discardable_flag equal to 1 to have NUT value indicating that it is a sub-layer non-reference picture.
    367381// #define H_MV_HLS_7_POC_P0056_4            0 // (POC/P0056/layer tree poc) #4 Proposal 1: If the POC reset approach is adopted as the basis for multi-layer POC derivation, it is proposed to derive the POC anchor picture from the previous TID0 picture (that is not a RASL picture, a RADL picture or a sub-layer non-reference picture and not with discardable_flag equal to 1) of  the current layer or any of its reference layer. This is asserted to improve loss resilience and reduce bit rate overhead. Decision: Adopt Proposal 1 (with the suggested modifications Ewith text provided as P0297).
    368382
    369 // #define H_MV_HLS_7_SEI_P0133_28           0 // (SEI/P0133/Recovery point SEI) #28 Decision: Adopt change to recover point semantics only (-v3)
    370 // #define H_MV_HLS_7_SEI_P0123_25           0 // (SEI/P0123/Alpha channel info) #25 Add alpha channel information SEI message Decision: Adopt. Constrain the bit depth indicated to be equal to the coded bit depth of the aux picture.
    371 
     383
     384// OTHERS
    372385// #define H_MV_HLS_7_HRD_P0138_6            0 // (HRD/P0138/HRD parameters for bitstreams excluding) #6 Decision: Adopt (as revised in updated contribution, with the specification of a flag in the BP SEI (HRD/P0192/sub-DPB) #12 Establish sub-DPBs based on the representation format indicated at the VPS level. It was suggested that the expressed shared capacity limit would need to be less than or equal to the sum of the individual capacity limits. Decision: Adopt as modified. Further study is encouraged on profile/level constraint selections.
    373 // #define H_MV_HLS_7_OTHER_P0187_1          0 // (OTHER/P0187/NoOutputOfPriorPicsFlag) #1 Inference of NoOutputOfPriorPicsFlag and proposes to take into account colour format and bit depth for the inference in addition to spatial resolution
    374 // #define H_MV_HLS_7_VPS_P0300_27           0 // Output part only. (VPS/P0300/alt output layer flag) #27 Change alt output layer flag to be signalled within the loop of output layer sets, from JCTVC-P0300-v2. Decision: Adopt.
    375 
    376 #define H_MV_HLS7_GEN                        0  // General changes (not tested)
     386
     387// SEI related
     388//#define H_MV_HLS_8_SEI_NODOC_53  0 // #53 (SEI    /NODOC/Added Multiview view position SEI message) Plain copy from AVC.
     389//#define H_MV_HLS_8_SEI_NODOC_52  0 // #52 (SEI    /NODOC/Added Multiview acquisition information SEI) Plain copy from AVC.
     390//#define H_MV_HLS_8_SEI_NODOC_51  0 // #51 (SEI    /NODOC/Added Multiview scene information SEI message)
     391//#define H_MV_HLS_8_SEI_Q0189_35  0 // #35 (SEI    /Q0189/SEI message for indicating constraints on TMVP) Proposal 2.3,  SEI message for indicating constraints on TMVP
     392//#define H_MV_HLS_8_EDF_Q0116_29  0 // #29 (ED.FIX /Q0116/Recovery point SEI) , consider adding a note regarding how random accessibility is affected by the recovery point SEI message
     393//#define H_MV_HLS_8_GEN_Q0183_23  0 // #23 (GEN    /Q0183/SEI clean-ups) numerous small clean-ups on SEI messages.
     394//#define H_MV_HLS_8_MIS_Q0247_49  0 // #49 (MISC   /Q0247/frame-field information SEI message)
     395//#define H_MV_HLS_8_MIS_Q0189_34  0 // #34 (MISC   /Q0189/slice temporal mvp enabled flag) Proposal 2.2, clarification of semantics of slice temporal mvp enabled flag
     396//#define H_MV_HLS_8_EDF_Q0081_01  0 // #1  (ED.FIX /Q0081/alpha channel persist) On reuse of alpha planes in auxiliary pictures. It was asked why there would not be a presumption that the alpha channel content would simply persist, without needing the flag to indicate it. Decision (Ed.): Delegated to editors to clarify, as necessary, that the alpha channel content persists until cancelled or updated in output order.
     397//#define H_MV_HLS_8_SEI_Q0253_37  0 // #37 (SEI    /Q0253/layer not present), modified semantics of layers not present SEI message to correct bug introduced during editing
     398//#define H_MV_HLS_8_SEI_Q0045_11  0 // #11 (SEI    /Q0045/Overlay) Proposal for an SEI message on selectable overlays. Decision: Adopt (modified for variable-length strings).
     399//#define H_MV_HLS_7_SEI_P0133_28  0 // (SEI/P0133/Recovery point SEI) #28 Decision: Adopt change to recover point semantics only (-v3)
     400//#define H_MV_HLS_7_SEI_P0123_25  0 // (SEI/P0123/Alpha channel info) #25 Add alpha channel information SEI message Decision: Adopt. Constrain the bit depth indicated to be equal to the coded bit depth of the aux picture.
     401
     402
     403// Auxiliary picture related
     404//#define H_MV_HLS_8_AUX_NODOC_40  0 // #40 (AUX    /NODOC/primary pic) Clarify that an auxiliary picture can be associated with more than one primary picture. Consider if the language associating an alpha auxiliary picture with a primary picture in the semantics of dimension_id[ ][ ] near the AuxId derivation could be moved to the alpha SEI message.
     405//#define H_MV_HLS_8_AUX_Q0081_2   0 // #2  (AUX    /Q0081/primary) Decision: Remove the constraint that an alpha picture must be accompanied by a primary picture.
     406//#define H_MV_HLS_8_AUX_Q0078_44  0 // #44 (AUX    /Q0078/concepts Auxiliary picture concepts:
     407//#define H_MV_HLS_8_AUX_Q0078_39  0 // #39 (AUX    /Q0078/conformance): mechanism for signaling a profile/tier/level conformance point for auxiliary pictures
     408
     409// Profiles
     410//#define H_MV_HLS_8_PRO_NODOC_50  0 // #50 (PROF   /NODOC/Monochrome) Add Monochrome 8-bit profile
     411//#define H_MV_HLS_8_PRO_NODOC_31  0 // #31 (PROF   /NODOC/Profile constraint) Add a profile constraint to the Scalable Main, Scalable Main 10, and Stereo Main profiles against allowing layers with duplicate values of DependencyId (or ViewOrderIdx) when AuxId equal to 0.
     412//#define H_MV_HLS_8_PRO_H0126_45  0 // #45 (PROF   /H0126/Stereo main) Phrasing used in specifying the Stereo Main profile.
     413//#define H_MV_HLS_8_PRO_Q0160_33  0 // #33 (PROF   /Q0160/alt_output_flag) v2: Add constraint to stereo main profile that it must contain exactly two texture views, and add a note to state that the constraint implies a restriction that alt_output_flag equal to 0.
     414
     415// DPB
     416//#define H_MV_HLS_8_HRD_Q0102_09  0 // #9  (HRD    /Q0102/NoOutputOfPriorPicsFlag) It was suggested that also the separate_colour_plane_flag should affect inference of NoOutputOfPriorPicsFlag. Decision (Ed.): Agreed (affects RExt text).
     417//#define H_MV_HLS_8_DBP_Q0154_38  0 // #38 (DBP    /Q0154/VPS DPB) Proposal in C.5.2.1: Add in the decoding process that when a new VPS is activated, all pictures in the DPB are marked as unused for reference
     418//#define H_MV_HLS_8_HRD_Q0154_10  0 // #10 (HRD    /Q0154/DPB Flushing and parameters) On picture flushing and DPB parameters Decision: Adopted (some details to be discussed further in BoG).
     419//#define H_MV_HLS_7_OTHER_P0187_1 0 // (OTHER/P0187/NoOutputOfPriorPicsFlag) #1 Inference of NoOutputOfPriorPicsFlag and proposes to take into account colour format and bit depth for the inference in addition to spatial resolution
     420
     421// Others
     422//#define H_MV_HLS_8_HSB_Q0041_03  0 // #3  (HS     /Q0041/hybrid scalability) The proposed text was endorsed, with non-editorial open issues considered as follows
     423:// #define H_MV_HLS_7_OTHER_P0187_1          0 // (OTHER/P0187/NoOutputOfPriorPicsFlag) #1 Inference of NoOutputOfPriorPicsFlag and proposes to take into account colour format and bit depth for the inference in addition to spatial resolution
     424//#define H_MV_HLS_8_MIS_Q0078_24  0 // #24 (MISC   /Q0078/scan and pic type) , Items 3 b,c and 4, clarifying which pictures in an output layer sets are applied the values of general_progressive_source_flag, general_interlaced_source_flag, general_non_packed_constraint_flag and general_frame_only_constraint_flag.
     425
     426
     427#define H_MV_HLS_8_SYN_Q0041_03    1   // #3  Syntax only (HS     /Q0041/hybrid scalability) The proposed text was endorsed, with non-editorial open issues considered as follows
     428:// #define H_MV_HLS_7_OTHER_P0187_1          0 // (OTHER/P0187/NoOutputOfPriorPicsFlag) #1 Inference of NoOutputOfPriorPicsFlag and proposes to take into account colour format and bit depth for the inference in addition to spatial resolution
     429#define H_MV_HLS_8_SYN_39_19       1   // #39 Syntax only + (PS/Q0165,Q0078/presence of num_add_output_layer_sets) proposal 2. change condition for presence of num_add_output_layer_sets to avoid sending it when there is only one layer set.
     430#define H_MV_HLS_8_HRD_Q0101_04    1   // #4  (HRD    /Q0101/Bitstream part buffer) On Bitstream Partition Buffer. Decision (BF/Cleanup): Adopt (sub-proposals 1–11, refined as described).
     431#define H_MV_HLS_8_PPS_NODOC_NN    1   // #NN (PPS    /NODOC/reserved flag): Add a flag in PPS for SHVC color gamut scalability
     432#define H_MV_HLS_8_MIS_Q0177_47    1   // #47 (MISC   /Q0177/EOS NAL) proposal 2: clarification of description of end of sequence NAL unit
     433#define H_MV_HLS_8_HRD_Q0182_05    1   // #5  (HRD    /Q0182/Bitstream part buffer) Decision (BF/Cleanup/Ed): Adopted (such that we use the main proposal for sub-proposal 1, and alternative 1 for sub-proposal 2). + #define H_MV_HLS_8_HRD_Q0182_06  0 // #6  (HRD    /Q0182/hrd_parameters) Sub-proposal 2 Alternative 1: Clarify that the VPS hrd_parameters( ) syntax structure that applies to the layer set which is associated with the bitstream partition initial arrival time SEI message is used to determine the lengths of the nal_initial_arrival_delay[ i ] and vcl_initial_arrival_delay[ i ] syntax elements. Decision (BF/Cleanup/Ed): Adopted alternative 1 for sub-proposal 2
     434#define H_MV_HLS_8_SPS_NODOC_48    1   // #48 (SPS    /NODOC/PPS extension cleanups) Alignment with RExt
     435#define H_MV_HLS_8_DBP_NODOC_42    1   // #42 (DBP    /NODOC/sharing) Remove sub-DPB sharing and processes that mark inter-layer reference pictures as "unused for reference"
     436#define H_MV_HLS_8_RPS_Q0100_36    1   // #36 (RPS    /Q0100/constraint to semantics) v3, add constraint to RPS semantics
     437#define H_MV_HLS_8_POC_Q0142_32    1   // #32 (POC    /Q0142/poc_lsb_not_present_flag) v2: Add semantic constraints to poc_lsb_not_present_flag.
     438#define H_MV_HLS_8_HRD_Q0102_08    1   // #8  (HRD    /Q0102/sps_max_dec_pic_buffering_minus1) Sub-proposal 2: A semantics bug fix is proposed for sps_max_dec_pic_buffering_minus1 as a bug-fix. In discussion, the first option was preferred. Decision (BF/Cleanup/Ed.): Adopt.
     439#define H_MV_HLS_8_MIS_Q0102_30    1   // #30 (MISC   /Q0102/loop index) proposal 3, change the max loop index for signaling bit rate and pic rate info to MaxSubLayersInLayerSetMinus1
     440#define H_MV_HLS_8_GEN_Q0108_13    1   // #13 (GEN    /Q0108/STSA TemporalId) Agreed to remove restriction from proposal 2, to allow STSA pics of non-base layers to have TemporalId equal to 0.
     441#define H_MV_HLS_8_PMS_Q0195_21    1   // #21 (PS     /Q0195/constraint update_ref_format_flag) proposal 2: add a semantic constraint on the value of update_ref_format_flag
     442#define H_MV_HLS_8_PMS_Q0195_20    1   // #20 (PS     /Q0195/syntax table rep format) proposal 1: restructure syntax table for sending of rep_format_idx_present_flag and vps_num_ref_formats_minus1
     443#define H_MV_HLS_8_MIS_Q0177_22    1   // #22 (MISC   /Q0177/inference sps_temporal_id_nesting_flag) proposal 1: modify inference rule for sps_temporal_id_nesting_flag when it is not present
     444#define H_MV_HLS_8_PMS_Q0165_18    1   // #18 (PS     /Q0165/disallow an empty layer set) proposal 1.a), add a constraint to disallow an empty layer set
     445#define H_MV_HLS_8_RPS_Q0060_17    1   // #17 (RPS    /Q0060/condition refLayerPicIdc) Proposal 2: Add a condition to the derivation of refLayerPicIdc of (TemporalId == 0)
     446#define H_MV_HLS_8_POC_Q0146_15    1   // #15 (POC    /Q0146/inference of poc_msb_val_present_flag) Proposal 1.1: Change inference rule in semantics of poc_msb_val_present_flag
     447
    377448
    378449
     
    380451///////////////////////////////////   HM RELATED DEFINES ////////////////////////////////
    381452/////////////////////////////////////////////////////////////////////////////////////////
    382 #define BUGFIX_INTRAPERIOD 1
     453#define HARMONIZE_GOP_FIRST_FIELD_COUPLE  1
     454#define FIX_FIELD_DEPTH                 1
     455#if H_MV
     456#define EFFICIENT_FIELD_IRAP            0
     457#else
     458#define EFFICIENT_FIELD_IRAP            1
     459#endif
     460#define ALLOW_RECOVERY_POINT_AS_RAP     1
     461#define BUGFIX_INTRAPERIOD              1
    383462#define SAO_ENCODE_ALLOW_USE_PREDEBLOCK 1
    384463
     464#define SAO_SGN_FUNC 1
     465
    385466#define FIX1172 1 ///< fix ticket #1172
     467
     468#define SETTING_PIC_OUTPUT_MARK     1
     469#define SETTING_NO_OUT_PIC_PRIOR    1
     470#define FIX_EMPTY_PAYLOAD_NAL       1
     471#define FIX_WRITING_OUTPUT          1
     472#define FIX_OUTPUT_EOS              1
     473
     474#define FIX_POC_CRA_NORASL_OUTPUT   1
    386475
    387476#define MAX_NUM_PICS_IN_SOP           1024
     
    9231012#if H_MV
    9241013
     1014#if !H_MV_HLS_8_SPS_NODOC_48
    9251015enum PpsExtensionTypes
    9261016{
     
    9441034    PS_EX_T_MAX_NUM = 8
    9451035  };
    946 
     1036#endif
    9471037/// scalability types
    9481038  enum ScalabilityType
Note: See TracChangeset for help on using the changeset viewer.