Changeset 189 in 3DVCSoftware for trunk/source/App/TAppEncoder/TAppEncTop.cpp


Ignore:
Timestamp:
18 Nov 2012, 22:11:37 (12 years ago)
Author:
tech
Message:

Reintegrated branch 4.1-dev0 Rev. 188.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/App/TAppEncoder/TAppEncTop.cpp

    r124 r189  
    300300    m_acTEncTopList[iViewIdx]->setLFCrossSliceBoundaryFlag( m_bLFCrossSliceBoundaryFlag );
    301301    m_acTEncTopList[iViewIdx]->setUseSAO               ( m_abUseSAO[0]     );
     302#if LGE_ILLUCOMP_B0045
     303    m_acTEncTopList[iViewIdx]->setUseIC                ( m_bUseIC          );
     304#endif
    302305#if SAO_UNIT_INTERLEAVING
    303306    m_acTEncTopList[iViewIdx]->setMaxNumOffsetsPerPic (m_maxNumOffsetsPerPic);
     
    342345    m_acTEncTopList[iViewIdx]->setWaveFrontFlush             ( m_iWaveFrontFlush );
    343346    m_acTEncTopList[iViewIdx]->setWaveFrontSubstreams        ( m_iWaveFrontSubstreams );
     347#if TMVP_DEPTH_SWITCH
     348    m_acTEncTopList[iViewIdx]->setEnableTMVP                 ( m_enableTMVP[0] );
     349#else
    344350    m_acTEncTopList[iViewIdx]->setEnableTMVP ( m_enableTMVP );
     351#endif
    345352    m_acTEncTopList[iViewIdx]->setUseScalingListId           ( m_useScalingListId  );
    346353    m_acTEncTopList[iViewIdx]->setScalingListFile            ( m_scalingListFile   );
     
    364371    m_acTEncTopList[iViewIdx]->setUseDMM                     ( false );
    365372#endif
    366 #if OL_DEPTHLIMIT_A0044
    367     m_acTEncTopList[iViewIdx]->setUseDPL                     ( false );
     373#if OL_QTLIMIT_PREDCODING_B0068
     374    m_acTEncTopList[iViewIdx]->setUseQTLPC                   ( false );
    368375#endif
    369376#if HHI_MPI
    370377    m_acTEncTopList[iViewIdx]->setUseMVI( false );
     378#endif
     379#if RWTH_SDC_DLT_B0036
     380    m_acTEncTopList[iViewIdx]->setUseDLT                      ( false );
     381    m_acTEncTopList[iViewIdx]->setUseSDC                      ( false );
    371382#endif
    372383  }
     
    579590      m_acTEncDepthTopList[iViewIdx]->setLFCrossSliceBoundaryFlag( m_bLFCrossSliceBoundaryFlag );
    580591      m_acTEncDepthTopList[iViewIdx]->setUseSAO               ( m_abUseSAO[1]     );
     592#if LGE_ILLUCOMP_B0045
     593      m_acTEncDepthTopList[iViewIdx]->setUseIC                ( false     );
     594#endif
    581595#if SAO_UNIT_INTERLEAVING
    582596      m_acTEncDepthTopList[iViewIdx]->setMaxNumOffsetsPerPic (m_maxNumOffsetsPerPic);
     
    621635      m_acTEncDepthTopList[iViewIdx]->setWaveFrontFlush             ( m_iWaveFrontFlush );
    622636      m_acTEncDepthTopList[iViewIdx]->setWaveFrontSubstreams        ( m_iWaveFrontSubstreams );
     637#if TMVP_DEPTH_SWITCH
     638      m_acTEncDepthTopList[iViewIdx]->setEnableTMVP                 ( m_enableTMVP[1] );
     639#else
    623640      m_acTEncDepthTopList[iViewIdx]->setEnableTMVP ( m_enableTMVP );
     641#endif
    624642      m_acTEncDepthTopList[iViewIdx]->setUseScalingListId           ( m_useScalingListId  );
    625643      m_acTEncDepthTopList[iViewIdx]->setScalingListFile            ( m_scalingListFile   );
     
    643661    m_acTEncDepthTopList[iViewIdx]->setUseDMM                     ( m_bUseDMM );
    644662#endif
    645 #if OL_DEPTHLIMIT_A0044
    646     m_acTEncDepthTopList[iViewIdx]->setUseDPL                      (m_bDepthPartitionLimiting);
     663#if OL_QTLIMIT_PREDCODING_B0068
     664    m_acTEncDepthTopList[iViewIdx]->setUseQTLPC                   (m_bUseQTLPC);
    647665#endif
    648666#if HHI_MPI
    649667     m_acTEncDepthTopList[iViewIdx]->setUseMVI( m_bUseMVI );
    650668#endif
     669#if RWTH_SDC_DLT_B0036
     670      m_acTEncDepthTopList[iViewIdx]->setUseDLT                   ( m_bUseDLT );
     671      m_acTEncDepthTopList[iViewIdx]->setUseSDC                   ( m_bUseSDC );
     672#endif
    651673    }
    652674  }
     
    667689    if ( m_uiVSOMode == 4 )
    668690    {
    669 #if HHI_VSO_SPEEDUP_A0033
    670691#if LGE_VSO_EARLY_SKIP_A0093
    671692      m_cRendererModel.create( m_cRenModStrParser.getNumOfBaseViews(), m_cRenModStrParser.getNumOfModels(), m_iSourceWidth, g_uiMaxCUHeight , LOG2_DISP_PREC_LUT, 0, m_bVSOEarlySkip );
    672693#else
    673694      m_cRendererModel.create( m_cRenModStrParser.getNumOfBaseViews(), m_cRenModStrParser.getNumOfModels(), m_iSourceWidth, g_uiMaxCUHeight , LOG2_DISP_PREC_LUT, 0 );
    674 #endif
    675 #else
    676       m_cRendererModel.create( m_cRenModStrParser.getNumOfBaseViews(), m_cRenModStrParser.getNumOfModels(), m_iSourceWidth, m_iSourceHeight, LOG2_DISP_PREC_LUT, 0 );
    677695#endif
    678696
     
    867885    eos.push_back( false );
    868886    depthEos.push_back( false );
     887   
     888#if RWTH_SDC_DLT_B0036
     889    if( m_bUsingDepthMaps && m_bUseDLT )
     890      xAnalyzeInputBaseDepth(iViewIdx, m_iIntraPeriod);
     891#endif
    869892  }
    870893
     
    10001023  pcDepthPicYuvOrg = NULL;
    10011024 
    1002 #if FIX_MEM_LEAKS
    10031025  if ( pcPdmDepthOrg != NULL )
    10041026  {
     
    10071029    pcPdmDepthOrg = NULL;
    10081030  };
    1009 #endif
    10101031
    10111032 
     
    12661287#endif
    12671288#if HHI_VSO
    1268 #if HHI_VSO_SPEEDUP_A0033
    12691289Void TAppEncTop::setupRenModel( Int iPoc, Int iEncViewIdx, Int iEncContent, Int iHorOffset )
    12701290{
    1271 #if FIX_VSO_SETUP
    12721291  m_cRendererModel.setupPart( iHorOffset, Min( g_uiMaxCUHeight, m_iSourceHeight - iHorOffset ) );
    1273 #else
    1274   m_cRendererModel.setHorOffset( iHorOffset );
    1275 #endif
    1276 #else
    1277 Void TAppEncTop::setupRenModel( Int iPoc, Int iEncViewIdx, Int iEncContent )
    1278 {
    1279 #endif
    12801292  Int iEncViewSIdx = m_cCameraData.getBaseId2SortedId()[ iEncViewIdx ];
    12811293
     
    14151427  return pcPic;
    14161428};
     1429 
     1430#if RWTH_SDC_DLT_B0036
     1431Void TAppEncTop::xAnalyzeInputBaseDepth(Int iViewIdx, UInt uiNumFrames)
     1432{
     1433  TComPicYuv*       pcDepthPicYuvOrg = new TComPicYuv;
     1434  // allocate original YUV buffer
     1435  pcDepthPicYuvOrg->create( m_iSourceWidth, m_iSourceHeight, m_uiMaxCUWidth, m_uiMaxCUHeight, m_uiMaxCUDepth );
     1436 
     1437  TVideoIOYuv* depthVideoFile = new TVideoIOYuv;
     1438 
     1439  UInt uiMaxDepthValue = g_uiIBDI_MAX;
     1440 
     1441  Bool abValidDepths[256];
     1442 
     1443  depthVideoFile->open( m_pchDepthInputFileList[iViewIdx], false, m_uiInputBitDepth, m_uiInternalBitDepth );  // read  mode
     1444 
     1445  // initialize boolean array
     1446  for(Int p=0; p<=uiMaxDepthValue; p++)
     1447    abValidDepths[p] = false;
     1448 
     1449  Int iHeight   = pcDepthPicYuvOrg->getHeight();
     1450  Int iWidth    = pcDepthPicYuvOrg->getWidth();
     1451  Int iStride   = pcDepthPicYuvOrg->getStride();
     1452 
     1453  Pel* pInDM    = pcDepthPicYuvOrg->getLumaAddr();
     1454 
     1455  for(Int uiFrame=0; uiFrame < uiNumFrames; uiFrame++ )
     1456  {
     1457    depthVideoFile->read( pcDepthPicYuvOrg, m_aiPad, false );
     1458   
     1459    // check all pixel values
     1460    for (Int i=0; i<iHeight; i++)
     1461    {
     1462      Int rowOffset = i*iStride;
     1463     
     1464      for (Int j=0; j<iWidth; j++)
     1465      {
     1466        Pel depthValue = pInDM[rowOffset+j];
     1467        abValidDepths[depthValue] = true;
     1468      }
     1469    }
     1470  }
     1471 
     1472  depthVideoFile->close();
     1473 
     1474  pcDepthPicYuvOrg->destroy();
     1475  delete pcDepthPicYuvOrg;
     1476 
     1477  // convert boolean array to idx2Depth LUT
     1478  UInt* auiIdx2DepthValue = (UInt*) calloc(uiMaxDepthValue, sizeof(UInt));
     1479  UInt uiNumDepthValues = 0;
     1480  for(UInt p=0; p<=uiMaxDepthValue; p++)
     1481  {
     1482    if( abValidDepths[p] == true)
     1483    {
     1484      auiIdx2DepthValue[uiNumDepthValues++] = p;
     1485    }
     1486  }
     1487 
     1488  if( uiNumFrames == 0 || ceil(Log2(uiNumDepthValues)) == ceil(Log2(g_uiIBDI_MAX)) )
     1489  {
     1490    // don't use DLT
     1491    m_acTEncDepthTopList[iViewIdx]->setUseDLT(false);
     1492    m_acTEncDepthTopList[iViewIdx]->getSPS()->setUseDLT(false);
     1493  }
     1494 
     1495  // assign LUT
     1496  if( m_acTEncDepthTopList[iViewIdx]->getUseDLT() )
     1497    m_acTEncDepthTopList[iViewIdx]->getSPS()->setDepthLUTs(auiIdx2DepthValue, uiNumDepthValues);
     1498  else
     1499    m_acTEncDepthTopList[iViewIdx]->getSPS()->setDepthLUTs();
     1500 
     1501  // free temporary memory
     1502  free(auiIdx2DepthValue);
     1503}
     1504#endif
    14171505
    14181506//! \}
Note: See TracChangeset for help on using the changeset viewer.