Ignore:
Timestamp:
26 May 2013, 16:22:23 (13 years ago)
Author:
tech
Message:

Added missing parts.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-0.2-dev/source/App/TAppEncoder/TAppEncTop.cpp

    r438 r446  
    7070Void TAppEncTop::xInitLibCfg()
    7171{
     72#if H_MV
     73  TComVPS& vps = m_vps;   
     74#else
    7275  TComVPS vps;
     76#endif
    7377 
    7478#if H_MV
     
    111115  }
    112116#endif
    113 
    114117#if H_MV
    115118  xSetLayerIds             ( vps );   
    116119  xSetDimensionIdAndLength ( vps );
    117120  xSetDirectDependencyFlags( vps );
     121#if H_3D
     122  vps.initViewIndex();
     123  m_ivPicLists.setVPS      ( &vps );
     124#endif
    118125
    119126  for(Int layer = 0; layer < m_numberOfLayers; layer++)
     
    128135    TEncTop& m_cTEncTop = *m_acTEncTopList[ layer ];  // It is not a member, but this name helps avoiding code duplication !!!
    129136   
    130     m_cTEncTop.setLayerIdInVps( layer );
    131     m_cTEncTop.setLayerId     ( vps.getLayerIdInNuh( layer ) );   
    132     m_cTEncTop.setViewId      ( vps.getViewId      ( layer ) );
     137    m_cTEncTop.setLayerIdInVps                 ( layer );
     138    m_cTEncTop.setLayerId                      ( vps.getLayerIdInNuh( layer ) );   
     139    m_cTEncTop.setViewId                       ( vps.getViewId      ( layer ) );
    133140#if H_3D
    134     m_cTEncTop.setIsDepth     ( vps.getDepthId     ( layer ) != 0 );
    135 #endif
    136     m_cTEncTop.setIvPicLists  ( &m_ivPicLists );
    137 #endif
    138 
     141    Bool isDepth = ( vps.getDepthId     ( layer ) != 0 ) ;
     142    m_cTEncTop.setViewIndex                    ( vps.getViewIndex   ( layer ) );
     143    m_cTEncTop.setIsDepth                      ( isDepth );
     144    //====== Camera Parameters =========
     145    m_cTEncTop.setCameraParameters             ( &m_cCameraData );     
     146    m_cTEncTop.setCamParPrecision              ( isDepth ? false : m_cCameraData.getCamParsCodedPrecision  () );
     147    m_cTEncTop.setCamParInSliceHeader          ( isDepth ? 0     : m_cCameraData.getVaryingCameraParameters() );
     148    m_cTEncTop.setCodedScale                   ( isDepth ? 0     : m_cCameraData.getCodedScale             () );
     149    m_cTEncTop.setCodedOffset                  ( isDepth ? 0     : m_cCameraData.getCodedOffset            () );
     150#if H_3D_VSO
     151    //====== VSO =========
     152    m_cTEncTop.setRenderModelParameters        ( &m_cRenModStrParser );
     153    m_cTEncTop.setForceLambdaScaleVSO          ( isDepth ? m_bForceLambdaScaleVSO : false );
     154    m_cTEncTop.setLambdaScaleVSO               ( isDepth ? m_dLambdaScaleVSO      : 1     );
     155    m_cTEncTop.setVSOMode                      ( isDepth ? m_uiVSOMode            : 0     );
     156
     157    m_cTEncTop.setAllowNegDist                 ( isDepth ? m_bAllowNegDist        : false );
     158
     159    // SAIT_VSO_EST_A0033
     160    m_cTEncTop.setUseEstimatedVSD              ( isDepth ? m_bUseEstimatedVSD     : false );
     161
     162    // LGE_WVSO_A0119
     163    m_cTEncTop.setUseWVSO                      ( isDepth ? m_bUseWVSO             : false );   
     164    m_cTEncTop.setVSOWeight                    ( isDepth ? m_iVSOWeight           : 0     );
     165    m_cTEncTop.setVSDWeight                    ( isDepth ? m_iVSDWeight           : 0     );
     166    m_cTEncTop.setDWeight                      ( isDepth ? m_iDWeight             : 0     );
     167#endif // H_3D_VSO
     168#endif // H_3D
     169
     170    m_cTEncTop.setIvPicLists                   ( &m_ivPicLists );
     171#endif // H_MV
    139172  m_cTEncTop.setVPS(&vps);
    140173
    141174  m_cTEncTop.setProfile(m_profile);
    142175  m_cTEncTop.setLevel(m_levelTier, m_level);
    143 
    144176#if L0046_CONSTRAINT_FLAGS
    145177  m_cTEncTop.setProgressiveSourceFlag(m_progressiveSourceFlag);
     
    186218  m_cTEncTop.setQP                           ( m_iQP );
    187219#endif
     220
    188221  m_cTEncTop.setPad                          ( m_aiPad );
    189    
     222
    190223#if H_MV
    191224  m_cTEncTop.setMaxTempLayer                 ( m_maxTempLayerMvc[layer] );
     
    207240  m_cTEncTop.setLoopFilterTcOffset           ( m_loopFilterTcOffsetDiv2    );
    208241  m_cTEncTop.setDeblockingFilterControlPresent( m_DeblockingFilterControlPresent);
     242#if L0386_DB_METRIC
     243  m_cTEncTop.setDeblockingFilterMetric       ( m_DeblockingFilterMetric );
     244#endif
    209245
    210246  //====== Motion search ========
     
    226262  Int lowestQP;
    227263  lowestQP =  - 6*(g_bitDepthY - 8); // XXX: check
     264
    228265#if H_MV
    229266  if ((m_iMaxDeltaQP == 0 ) && (m_iQP[layer] == lowestQP) && (m_useLossless == true))
     
    243280  m_cTEncTop.setUseHADME                     ( m_bUseHADME    );
    244281  m_cTEncTop.setUseLossless                  ( m_useLossless );
     282#if !L0034_COMBINED_LIST_CLEANUP
    245283  m_cTEncTop.setUseLComb                     ( m_bUseLComb    );
     284#endif
    246285#if H_MV
    247286  m_cTEncTop.setdQPs                         ( m_aidQP[layer]   );
     
    321360  m_cTEncTop.setBufferingPeriodSEIEnabled( m_bufferingPeriodSEIEnabled );
    322361  m_cTEncTop.setPictureTimingSEIEnabled( m_pictureTimingSEIEnabled );
     362#if J0149_TONE_MAPPING_SEI
     363  m_cTEncTop.setToneMappingInfoSEIEnabled                 ( m_toneMappingInfoSEIEnabled );
     364  m_cTEncTop.setTMISEIToneMapId                           ( m_toneMapId );
     365  m_cTEncTop.setTMISEIToneMapCancelFlag                   ( m_toneMapCancelFlag );
     366  m_cTEncTop.setTMISEIToneMapPersistenceFlag              ( m_toneMapPersistenceFlag );
     367  m_cTEncTop.setTMISEICodedDataBitDepth                   ( m_toneMapCodedDataBitDepth );
     368  m_cTEncTop.setTMISEITargetBitDepth                      ( m_toneMapTargetBitDepth );
     369  m_cTEncTop.setTMISEIModelID                             ( m_toneMapModelId );
     370  m_cTEncTop.setTMISEIMinValue                            ( m_toneMapMinValue );
     371  m_cTEncTop.setTMISEIMaxValue                            ( m_toneMapMaxValue );
     372  m_cTEncTop.setTMISEISigmoidMidpoint                     ( m_sigmoidMidpoint );
     373  m_cTEncTop.setTMISEISigmoidWidth                        ( m_sigmoidWidth );
     374  m_cTEncTop.setTMISEIStartOfCodedInterva                 ( m_startOfCodedInterval );
     375  m_cTEncTop.setTMISEINumPivots                           ( m_numPivots );
     376  m_cTEncTop.setTMISEICodedPivotValue                     ( m_codedPivotValue );
     377  m_cTEncTop.setTMISEITargetPivotValue                    ( m_targetPivotValue );
     378  m_cTEncTop.setTMISEICameraIsoSpeedIdc                   ( m_cameraIsoSpeedIdc );
     379  m_cTEncTop.setTMISEICameraIsoSpeedValue                 ( m_cameraIsoSpeedValue );
     380  m_cTEncTop.setTMISEIExposureCompensationValueSignFlag   ( m_exposureCompensationValueSignFlag );
     381  m_cTEncTop.setTMISEIExposureCompensationValueNumerator  ( m_exposureCompensationValueNumerator );
     382  m_cTEncTop.setTMISEIExposureCompensationValueDenomIdc   ( m_exposureCompensationValueDenomIdc );
     383  m_cTEncTop.setTMISEIRefScreenLuminanceWhite             ( m_refScreenLuminanceWhite );
     384  m_cTEncTop.setTMISEIExtendedRangeWhiteLevel             ( m_extendedRangeWhiteLevel );
     385  m_cTEncTop.setTMISEINominalBlackLevelLumaCodeValue      ( m_nominalBlackLevelLumaCodeValue );
     386  m_cTEncTop.setTMISEINominalWhiteLevelLumaCodeValue      ( m_nominalWhiteLevelLumaCodeValue );
     387  m_cTEncTop.setTMISEIExtendedWhiteLevelLumaCodeValue     ( m_extendedWhiteLevelLumaCodeValue );
     388#endif
    323389  m_cTEncTop.setFramePackingArrangementSEIEnabled( m_framePackingSEIEnabled );
    324390  m_cTEncTop.setFramePackingArrangementSEIType( m_framePackingSEIType );
     
    330396  m_cTEncTop.setGradualDecodingRefreshInfoEnabled( m_gradualDecodingRefreshInfoEnabled );
    331397  m_cTEncTop.setDecodingUnitInfoSEIEnabled( m_decodingUnitInfoSEIEnabled );
     398#if L0208_SOP_DESCRIPTION_SEI
     399  m_cTEncTop.setSOPDescriptionSEIEnabled( m_SOPDescriptionSEIEnabled );
     400#endif
     401#if K0180_SCALABLE_NESTING_SEI
     402  m_cTEncTop.setScalableNestingSEIEnabled( m_scalableNestingSEIEnabled );
     403#endif
    332404  m_cTEncTop.setUniformSpacingIdr          ( m_iUniformSpacingIdr );
    333405  m_cTEncTop.setNumColumnsMinus1           ( m_iNumColumnsMinus1 );
     
    424496  }
    425497#endif
    426 
    427 #if H_MV
    428   }
    429 #endif
    430 
     498#if H_MV
     499  }
     500#endif
     501#if H_3D_VSO
     502  if ( m_bUseVSO )
     503  {
     504    if ( m_uiVSOMode == 4 )
     505    {
     506#if H_3D_VSO_EARLY_SKIP
     507      m_cRendererModel.create( m_cRenModStrParser.getNumOfBaseViews(), m_cRenModStrParser.getNumOfModels(), m_iSourceWidth, g_uiMaxCUHeight , LOG2_DISP_PREC_LUT, 0, m_bVSOEarlySkip );
     508#else
     509      m_cRendererModel.create( m_cRenModStrParser.getNumOfBaseViews(), m_cRenModStrParser.getNumOfModels(), m_iSourceWidth, g_uiMaxCUHeight , LOG2_DISP_PREC_LUT, 0 );
     510#endif
     511      for ( Int layer = 0; layer < m_numberOfLayers ; layer++ )
     512      {
     513        TEncTop* pcEncTop =  m_acTEncTopList[ layer ];
     514        Int iViewNum      = pcEncTop->getViewIndex();
     515        Int iContent      = pcEncTop->getIsDepth() ? 1 : 0;
     516        Int iNumOfModels  = m_cRenModStrParser.getNumOfModelsForView(iViewNum, iContent);
     517
     518        Bool bUseVSO      = (iNumOfModels != 0);
     519
     520        pcEncTop->setUseVSO( bUseVSO );
     521        pcEncTop->getRdCost()->setRenModel( bUseVSO ? &m_cRendererModel : NULL );
     522
     523        for (Int iCurModel = 0; iCurModel < iNumOfModels; iCurModel++ )
     524        {
     525          Int iModelNum; Int iLeftViewNum; Int iRightViewNum; Int iDump; Int iOrgRefNum; Int iBlendMode;
     526
     527          m_cRenModStrParser.getSingleModelData  ( iViewNum, iContent, iCurModel, iModelNum, iBlendMode, iLeftViewNum, iRightViewNum, iOrgRefNum, iDump ) ;
     528          m_cRendererModel  .createSingleModel   ( iViewNum, iContent, iModelNum, iLeftViewNum, iRightViewNum, (iOrgRefNum != -1), iBlendMode );
     529        }           
     530      }
     531    }
     532    else
     533    {
     534      AOT(true);
     535    }
     536  }
     537#endif
    431538}
    432539
     
    579686
    580687        eos[layer] = (m_frameRcvd[layer] == m_framesToBeEncoded);
    581         allEos = allEos|eos[layer];
     688        allEos = allEos||eos[layer];
    582689
    583690        // if end of file (which is only detected on a read failure) flush the encoder of any queued pictures
     
    585692        {
    586693          flush          [layer] = true;
    587           eos            [layer]   = true;
     694          eos            [layer] = true;
    588695          m_frameRcvd    [layer]--;
    589696          m_acTEncTopList[layer]->setFramesToBeEncoded(m_frameRcvd[layer]);
     
    593700    for ( Int gopId=0; gopId < gopSize; gopId++ )
    594701    {
     702#if H_3D
     703      UInt iNextPoc = m_acTEncTopList[0] -> getFrameId( gopId );
     704      if ( iNextPoc < m_framesToBeEncoded )
     705      {
     706        m_cCameraData.update( iNextPoc );
     707      }
     708#endif
    595709      for(Int layer=0; layer < m_numberOfLayers; layer++ )
    596710      {
     711#if H_3D_VSO       
     712          if( m_bUseVSO && m_bUseEstimatedVSD && iNextPoc < m_framesToBeEncoded )
     713          {
     714            m_cCameraData.setDispCoeff( iNextPoc, m_acTEncTopList[layer]->getViewIndex() );
     715            m_acTEncTopList[layer]  ->setDispCoeff( m_cCameraData.getDispCoeff() );
     716          }
     717#endif
    597718        Int   iNumEncoded = 0;
    598719
     
    602723        outputAccessUnits.clear();
    603724      }
    604 
    605725    }
    606726    gopSize = maxGopSize;
     
    666786  return;
    667787}
    668 
    669 #if H_3D
    670 TEncTop* TAppEncTop::getTEncTopView( Int viewId, Bool isDepth )
    671 {
    672   TEncTop* encoder = NULL;
    673   for( Int layer = 0; layer < m_acTEncTopList.size(); layer++ )
    674   {
    675     if( m_acTEncTopList[layer]->getViewId()  == viewId &&
    676         m_acTEncTopList[layer]->getIsDepth() == isDepth )
    677     {
    678       encoder = m_acTEncTopList[layer];
    679       break;
    680     }
    681   }
    682   return encoder;
    683 }
    684 #endif
    685788
    686789// ====================================================================================================================
     
    694797 .
    695798 */
    696 
    697799#if H_MV
    698800Void TAppEncTop::xGetBuffer( TComPicYuv*& rpcPicYuvRec, UInt layer)
     
    722824
    723825  }
    724 
    725826#if H_MV
    726827  m_picYuvRec[layer]->pushBack( rpcPicYuvRec );
     
    732833Void TAppEncTop::xDeleteBuffer( )
    733834{
    734 
    735835#if H_MV
    736836  for(Int layer=0; layer<m_picYuvRec.size(); layer++)
     
    757857  }
    758858#endif 
    759 
    760859}
    761860
     
    787886  {
    788887    TComPicYuv*  pcPicYuvRec  = *(iterPicYuvRec++);
    789 
    790888#if H_MV
    791889      if (m_pchReconFileList[layerId])
     
    815913  }
    816914#endif
    817 
    818915}
    819916
     
    832929    case NAL_UNIT_CODED_SLICE_TRAIL_R:
    833930    case NAL_UNIT_CODED_SLICE_TRAIL_N:
    834     case NAL_UNIT_CODED_SLICE_TLA:
     931    case NAL_UNIT_CODED_SLICE_TLA_R:
    835932    case NAL_UNIT_CODED_SLICE_TSA_N:
    836933    case NAL_UNIT_CODED_SLICE_STSA_R:
    837934    case NAL_UNIT_CODED_SLICE_STSA_N:
    838     case NAL_UNIT_CODED_SLICE_BLA:
    839     case NAL_UNIT_CODED_SLICE_BLANT:
     935    case NAL_UNIT_CODED_SLICE_BLA_W_LP:
     936    case NAL_UNIT_CODED_SLICE_BLA_W_RADL:
    840937    case NAL_UNIT_CODED_SLICE_BLA_N_LP:
    841     case NAL_UNIT_CODED_SLICE_IDR:
     938    case NAL_UNIT_CODED_SLICE_IDR_W_RADL:
    842939    case NAL_UNIT_CODED_SLICE_IDR_N_LP:
    843940    case NAL_UNIT_CODED_SLICE_CRA:
    844941    case NAL_UNIT_CODED_SLICE_RADL_N:
    845     case NAL_UNIT_CODED_SLICE_DLP:
     942    case NAL_UNIT_CODED_SLICE_RADL_R:
    846943    case NAL_UNIT_CODED_SLICE_RASL_N:
    847     case NAL_UNIT_CODED_SLICE_TFD:
     944    case NAL_UNIT_CODED_SLICE_RASL_R:
    848945    case NAL_UNIT_VPS:
    849946    case NAL_UNIT_SPS:
     
    861958void TAppEncTop::printRateSummary()
    862959{
    863 
    864960#if H_MV
    865961  Double time = (Double) m_frameRcvd[0] / m_iFrameRate;
     
    868964  Double time = (Double) m_iFrameRcvd / m_iFrameRate;
    869965#endif
    870 
    871966  printf("Bytes written to file: %u (%.3f kbps)\n", m_totalBytes, 0.008 * m_totalBytes / time);
    872967#if VERBOSE_RATE
     
    881976  for( Int dim = 0; dim < m_dimIds.size(); dim++ )
    882977  {
    883       vps.setDimensionIdLen( dim, m_dimensionIdLen[ dim ] );
    884       for( Int layer = 1; layer < vps.getMaxLayers(); layer++ )
    885       {       
    886         vps.setDimensionId( layer, dim, m_dimIds[ dim ][ layer ] );       
    887      
     978    vps.setDimensionIdLen( dim, m_dimensionIdLen[ dim ] );
     979    for( Int layer = 0; layer < vps.getMaxLayers(); layer++ )
     980    {       
     981      vps.setDimensionId( layer, dim, m_dimIds[ dim ][ layer ] );       
     982   
    888983  }
    889984}
     
    9371032}
    9381033#endif
    939 
    9401034//! \}
Note: See TracChangeset for help on using the changeset viewer.