Changeset 1386 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TComSlice.cpp


Ignore:
Timestamp:
13 Nov 2015, 16:29:39 (9 years ago)
Author:
tech
Message:

Merged 15.1-dev1@1381.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibCommon/TComSlice.cpp

    r1321 r1386  
    118118, m_viewId                        (0)
    119119, m_viewIndex                     (0)
    120 #if NH_3D
     120#if NH_3D_VSO
    121121, m_isDepth                       (false)
    122122#endif
     
    452452Void TComSlice::setRefPicList( TComList<TComPic*>& rcListPic, Bool checkNumPocTotalCurr )
    453453{
    454   if (!checkNumPocTotalCurr)
    455   {
    456454    if (m_eSliceType == I_SLICE)
    457455    {
     
    459457      ::memset( m_aiNumRefIdx,   0, sizeof ( m_aiNumRefIdx ));
    460458
     459    if (!checkNumPocTotalCurr)
     460    {
    461461      return;
    462462    }
    463 
    464     m_aiNumRefIdx[REF_PIC_LIST_0] = getNumRefIdx(REF_PIC_LIST_0);
    465     m_aiNumRefIdx[REF_PIC_LIST_1] = getNumRefIdx(REF_PIC_LIST_1);
    466463  }
    467464
     
    536533    if (m_eSliceType == I_SLICE)
    537534    {
    538       ::memset( m_apcRefPicList, 0, sizeof (m_apcRefPicList));
    539       ::memset( m_aiNumRefIdx,   0, sizeof ( m_aiNumRefIdx ));
    540 
    541535      return;
    542536    }
     
    545539    // general tier and level limit:
    546540    assert(numPicTotalCurr <= 8);
    547 
    548     m_aiNumRefIdx[0] = getNumRefIdx(REF_PIC_LIST_0);
    549     m_aiNumRefIdx[1] = getNumRefIdx(REF_PIC_LIST_1);
    550541  }
    551542
     
    19321923  for ( Int i = 0; i < MAX_VPS_OUTPUTLAYER_SETS; i++)
    19331924  {
     1925#if !NH_3D_FIX_TICKET_107
    19341926    m_layerSetIdxForOlsMinus1[i]  = -1;
     1927#endif
    19351928    for ( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++)
    19361929    {
     
    21912184}
    21922185
    2193 #if NH_3D
    2194 Int TComVPS::getLayerIdInNuh( Int viewIndex, Bool depthFlag ) const
     2186#if NH_3D_VSO
     2187Int TComVPS::getLayerIdInNuh( Int viewIndex, Bool depthFlag, Int auxId ) const
    21952188{
    21962189  Int foundLayerIdinNuh = -1;
     
    21992192  {
    22002193    Int layerIdInNuh = getLayerIdInNuh( layerIdInVps );
     2194#if !NH_3D
     2195    if( ( getViewIndex( layerIdInNuh ) == viewIndex ) && ( getAuxId( layerIdInNuh ) == ( depthFlag ? 2 : 0 ) )  )
     2196#else
    22012197    if( ( getViewIndex( layerIdInNuh ) == viewIndex ) && ( getDepthId( layerIdInNuh ) == ( depthFlag ? 1 : 0 ) )  )
     2198#endif
    22022199    {
    22032200      foundLayerIdinNuh = layerIdInNuh;
     
    22072204  return foundLayerIdinNuh;
    22082205}
    2209 
     2206#endif
     2207#if NH_3D
    22102208Void TComVPS::createCamPars(Int iNumViews)
    22112209{
     
    27672765    m_uiSpsMaxLatencyIncreasePlus1[i] = 0;
    27682766#else
    2769     m_uiMaxLatencyIncrease[i] = 0;
     2767    m_uiMaxLatencyIncreasePlus1[i] = 0;
    27702768#endif
    27712769    m_uiMaxDecPicBuffering[i] = 1;
     
    36763674    }
    36773675    tempRefPicInListsFlag = (getFirstTRefIdx(REF_PIC_LIST_0) >= 0 || getFirstTRefIdx(REF_PIC_LIST_1) >= 0) && getDefaultRefViewIdxAvailableFlag();
    3678     m_nARPStepNum = tempRefPicInListsFlag ?  H_3D_ARP_WFNR : 0;
     3676    m_nARPStepNum = tempRefPicInListsFlag ? 3 : 0;
    36793677  }
    36803678
     
    38663864}
    38673865#endif
    3868 #if NH_3D
     3866#if NH_3D_QTL
    38693867Void TComSlice::setIvPicLists( TComPicLists* m_ivPicLists )
    38703868
     
    38733871    for ( Int depthId = 0; depthId < 2; depthId++ )
    38743872    {
    3875       m_ivPicsCurrPoc[ depthId ][ i ] = ( i <= m_viewIndex ) ? m_ivPicLists->getPic( i, ( depthId == 1) , getPOC() ) : NULL;
     3873      m_ivPicsCurrPoc[ depthId ][ i ] = ( i <= m_viewIndex ) ? m_ivPicLists->getPic( i, ( depthId == 1) , 0, getPOC() ) : NULL;
    38763874    }       
    38773875  } 
    38783876}
     3877#endif
     3878#if NH_3D
    38793879Void TComSlice::setDepthToDisparityLUTs()
    38803880{
     
    39373937  {
    39383938    Int iInVoi = vps->getVoiInVps( i );
    3939 #if ENC_DEC_TRACE && H_MV_ENC_DEC_TRAC
     3939#if ENC_DEC_TRACE && NH_MV_ENC_DEC_TRAC
    39403940    if ( g_traceCameraParameters )
    39413941    {
     
    43204320  const TComSps3dExtension* sps3dExt = getSPS()->getSps3dExtension();
    43214321
    4322   m_ivMvPredFlag           = sps3dExt->getIvMvPredFlag         ( depthFlag ) && nRLLG0                       ;                             
    4323   m_ivMvScalingFlag        = sps3dExt->getIvMvScalingFlag      ( depthFlag )                                 ;                             
    4324   m_ivResPredFlag          = sps3dExt->getIvResPredFlag        ( depthFlag ) && nRLLG0                       ;                               
    4325   m_depthRefinementFlag    = sps3dExt->getDepthRefinementFlag  ( depthFlag )           && getInCompPredFlag() && m_cpAvailableFlag;
    4326   m_viewSynthesisPredFlag  = sps3dExt->getViewSynthesisPredFlag( depthFlag ) && nRLLG0 && getInCompPredFlag() && m_cpAvailableFlag;
    4327   m_depthBasedBlkPartFlag  = sps3dExt->getDepthBasedBlkPartFlag( depthFlag )           && getInCompPredFlag();                         
    4328   m_mpiFlag                = sps3dExt->getMpiFlag              ( depthFlag )           && getInCompPredFlag();
    4329   m_intraContourFlag       = sps3dExt->getIntraContourFlag     ( depthFlag )           && getInCompPredFlag();
    4330   m_intraSdcWedgeFlag      = sps3dExt->getIntraSdcWedgeFlag    ( depthFlag )                                 ;                         
    4331   m_qtPredFlag             = sps3dExt->getQtPredFlag           ( depthFlag )           && getInCompPredFlag();
    4332   m_interSdcFlag           = sps3dExt->getInterSdcFlag         ( depthFlag )                                 ; 
    4333   m_depthIntraSkipFlag     = sps3dExt->getDepthIntraSkipFlag   ( depthFlag )                                 ;                         
    4334 
    4335   m_subPbSize              =  1 << ( sps3dExt->getLog2SubPbSizeMinus3  ( depthFlag ) + 3 ); 
    4336   m_mpiSubPbSize           =  1 << ( sps3dExt->getLog2MpiSubPbSizeMinus3( depthFlag ) + 3 );
    4337 
    4338 
    4339 #if H_3D_OUTPUT_ACTIVE_TOOLS
     4322  m_ivMvPredFlag           = sps3dExt->getIvDiMcEnabledFlag          ( depthFlag ) && nRLLG0                       ;                             
     4323  m_ivMvScalingFlag        = sps3dExt->getIvMvScalEnabledFlag        ( depthFlag )                                 ;                             
     4324  m_ivResPredFlag          = sps3dExt->getIvResPredEnabledFlag       ( depthFlag ) && nRLLG0                       ;                               
     4325  m_depthRefinementFlag    = sps3dExt->getDepthRefEnabledFlag        ( depthFlag )           && getInCompPredFlag() && m_cpAvailableFlag;
     4326  m_viewSynthesisPredFlag  = sps3dExt->getVspMcEnabledFlag           ( depthFlag ) && nRLLG0 && getInCompPredFlag() && m_cpAvailableFlag;
     4327  m_depthBasedBlkPartFlag  = sps3dExt->getDbbpEnabledFlag            ( depthFlag )           && getInCompPredFlag();                         
     4328  m_mpiFlag                = sps3dExt->getTexMcEnabledFlag           ( depthFlag )           && getInCompPredFlag();
     4329  m_intraContourFlag       = sps3dExt->getIntraContourEnabledFlag    ( depthFlag )           && getInCompPredFlag();
     4330  m_intraSdcWedgeFlag      = sps3dExt->getIntraDcOnlyWedgeEnabledFlag( depthFlag )                                 ;                         
     4331  m_qtPredFlag             = sps3dExt->getCqtCuPartPredEnabledFlag   ( depthFlag )           && getInCompPredFlag();
     4332  m_interSdcFlag           = sps3dExt->getInterDcOnlyEnabledFlag     ( depthFlag )                                 ; 
     4333  m_depthIntraSkipFlag     = sps3dExt->getSkipIntraEnabledFlag       ( depthFlag )                                 ;                         
     4334
     4335  m_subPbSize              =  1 << ( sps3dExt->getLog2IvmcSubPbSizeMinus3 ( depthFlag ) + 3 ); 
     4336  m_mpiSubPbSize           =  1 << ( sps3dExt->getLog2TexmcSubPbSizeMinus3( depthFlag ) + 3 );
     4337
     4338
     4339#if NH_3D_OUTPUT_ACTIVE_TOOLS
    43404340  std::cout << "Layer:                  :" << getLayerId()             << std::endl;
    43414341  std::cout << "DepthFlag:              :" << getIsDepth()             << std::endl;
     
    44154415    if( !getIsDepth() )
    44164416    {
    4417       m_inCmpPredAvailFlag = sps3dExt->getViewSynthesisPredFlag( getIsDepth() ) ||
    4418         sps3dExt->getDepthBasedBlkPartFlag( getIsDepth() ) ||
    4419         sps3dExt->getDepthRefinementFlag  ( getIsDepth() );                           
     4417      m_inCmpPredAvailFlag = sps3dExt->getVspMcEnabledFlag( getIsDepth() ) ||
     4418        sps3dExt->getDbbpEnabledFlag( getIsDepth() ) ||
     4419        sps3dExt->getDepthRefEnabledFlag  ( getIsDepth() );                           
    44204420    }
    44214421    else
    44224422    {
    4423       m_inCmpPredAvailFlag = sps3dExt->getIntraContourFlag( getIsDepth() ) ||
    4424         sps3dExt->getQtPredFlag( getIsDepth() ) ||
    4425         sps3dExt->getMpiFlag( getIsDepth() );                                 
     4423      m_inCmpPredAvailFlag = sps3dExt->getIntraContourEnabledFlag( getIsDepth() ) ||
     4424        sps3dExt->getCqtCuPartPredEnabledFlag( getIsDepth() ) ||
     4425        sps3dExt->getTexMcEnabledFlag( getIsDepth() );                                 
    44264426    }
    44274427  }
     
    45454545}
    45464546
    4547 Bool TComScalingList::xParseScalingList(Char* pchFile)
     4547Bool TComScalingList::xParseScalingList(const std::string &fileName)
    45484548{
    45494549  static const Int LINE_SIZE=1024;
    45504550  FILE *fp = NULL;
    4551   Char line[LINE_SIZE];
    4552 
    4553   if (pchFile == NULL)
     4551  TChar line[LINE_SIZE];
     4552
     4553  if (fileName.empty())
    45544554  {
    45554555    fprintf(stderr, "Error: no scaling list file specified. Help on scaling lists being output\n");
     
    45604560    return true;
    45614561  }
    4562   else if ((fp = fopen(pchFile,"r")) == (FILE*)NULL)
    4563   {
    4564     fprintf(stderr, "Error: cannot open scaling list file %s for reading\n",pchFile);
     4562  else if ((fp = fopen(fileName.c_str(),"r")) == (FILE*)NULL)
     4563  {
     4564    fprintf(stderr, "Error: cannot open scaling list file %s for reading\n", fileName.c_str());
    45654565    return true;
    45664566  }
     
    45904590          while ((!feof(fp)) && (!bFound))
    45914591          {
    4592             Char *ret = fgets(line, LINE_SIZE, fp);
    4593             Char *findNamePosition= ret==NULL ? NULL : strstr(line, MatrixType[sizeIdc][listIdc]);
     4592            TChar *ret = fgets(line, LINE_SIZE, fp);
     4593            TChar *findNamePosition= ret==NULL ? NULL : strstr(line, MatrixType[sizeIdc][listIdc]);
    45944594            // This could be a match against the DC string as well, so verify it isn't
    45954595            if (findNamePosition!= NULL && (MatrixType_DC[sizeIdc][listIdc]==NULL || strstr(line, MatrixType_DC[sizeIdc][listIdc])==NULL))
     
    46004600          if (!bFound)
    46014601          {
    4602             fprintf(stderr, "Error: cannot find Matrix %s from scaling list file %s\n", MatrixType[sizeIdc][listIdc], pchFile);
     4602            fprintf(stderr, "Error: cannot find Matrix %s from scaling list file %s\n", MatrixType[sizeIdc][listIdc], fileName.c_str());
    46034603            return true;
    46044604          }
     
    46094609          if (fscanf(fp, "%d,", &data)!=1)
    46104610          {
    4611             fprintf(stderr, "Error: cannot read value #%d for Matrix %s from scaling list file %s at file position %ld\n", i, MatrixType[sizeIdc][listIdc], pchFile, ftell(fp));
     4611            fprintf(stderr, "Error: cannot read value #%d for Matrix %s from scaling list file %s at file position %ld\n", i, MatrixType[sizeIdc][listIdc], fileName.c_str(), ftell(fp));
    46124612            return true;
    46134613          }
    46144614          if (data<0 || data>255)
    46154615          {
    4616             fprintf(stderr, "Error: QMatrix entry #%d of value %d for Matrix %s from scaling list file %s at file position %ld is out of range (0 to 255)\n", i, data, MatrixType[sizeIdc][listIdc], pchFile, ftell(fp));
     4616            fprintf(stderr, "Error: QMatrix entry #%d of value %d for Matrix %s from scaling list file %s at file position %ld is out of range (0 to 255)\n", i, data, MatrixType[sizeIdc][listIdc], fileName.c_str(), ftell(fp));
    46174617            return true;
    46184618          }
     
    46304630            while ((!feof(fp)) && (!bFound))
    46314631            {
    4632               Char *ret = fgets(line, LINE_SIZE, fp);
    4633               Char *findNamePosition= ret==NULL ? NULL : strstr(line, MatrixType_DC[sizeIdc][listIdc]);
     4632              TChar *ret = fgets(line, LINE_SIZE, fp);
     4633              TChar *findNamePosition= ret==NULL ? NULL : strstr(line, MatrixType_DC[sizeIdc][listIdc]);
    46344634              if (findNamePosition!= NULL)
    46354635              {
     
    46404640            if (!bFound)
    46414641            {
    4642               fprintf(stderr, "Error: cannot find DC Matrix %s from scaling list file %s\n", MatrixType_DC[sizeIdc][listIdc], pchFile);
     4642              fprintf(stderr, "Error: cannot find DC Matrix %s from scaling list file %s\n", MatrixType_DC[sizeIdc][listIdc], fileName.c_str());
    46434643              return true;
    46444644            }
     
    46474647          if (fscanf(fp, "%d,", &data)!=1)
    46484648          {
    4649             fprintf(stderr, "Error: cannot read DC %s from scaling list file %s at file position %ld\n", MatrixType_DC[sizeIdc][listIdc], pchFile, ftell(fp));
     4649            fprintf(stderr, "Error: cannot read DC %s from scaling list file %s at file position %ld\n", MatrixType_DC[sizeIdc][listIdc], fileName.c_str(), ftell(fp));
    46504650            return true;
    46514651          }
    46524652          if (data<0 || data>255)
    46534653          {
    4654             fprintf(stderr, "Error: DC value %d for Matrix %s from scaling list file %s at file position %ld is out of range (0 to 255)\n", data, MatrixType[sizeIdc][listIdc], pchFile, ftell(fp));
     4654            fprintf(stderr, "Error: DC value %d for Matrix %s from scaling list file %s at file position %ld is out of range (0 to 255)\n", data, MatrixType[sizeIdc][listIdc], fileName.c_str(), ftell(fp));
    46554655            return true;
    46564656          }
Note: See TracChangeset for help on using the changeset viewer.