Changeset 443 in 3DVCSoftware for trunk/source/App/TAppEncoder


Ignore:
Timestamp:
26 May 2013, 15:41:34 (11 years ago)
Author:
tech
Message:
  • Reintegrated branch 6.2-dev0 rev. 442.
  • Changed version number.
  • Added coding results.
Location:
trunk/source/App/TAppEncoder
Files:
4 edited

Legend:

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

    r332 r443  
    383383#endif
    384384#if H3D_IVRP
     385#if QC_ARP_D0177
     386  ("MultiviewResPred", m_nUseAdvResPred,           (UInt)0, "usage of Advanced residual prediction" )
     387#else
    385388  ("MultiviewResPred", m_uiMultiviewResPredMode,   (UInt)0, "usage of inter-view residual prediction" )
     389#endif
     390#endif
     391#if MTK_D0156
     392  ("UseVSPCompensation", m_bUseVSPCompensation,   true, "Depth dependent tools: BVSP" )
     393  ("UseDVPRefine", m_bUseDVPRefine,   true, "Depth dependent tools: DoNBDV" )
    386394#endif
    387395
     
    392400  ("SAO", m_abUseSAO, std::vector<Bool>(1, true), "SAO")
    393401  ("MaxNumOffsetsPerPic", m_maxNumOffsetsPerPic, 2048, "2048: default")   
     402#if LGE_SAO_MIGRATION_D0091
     403  ("SAOLcuBoundary",          m_saoLcuBoundary,          false, "0: right/bottom LCU boundary areas skipped from SAO parameter estimation, 1: non-deblocked pixels are used for those areas")
     404  ("SAOLcuBasedOptimization", m_saoLcuBasedOptimization, true, "0: SAO picture-based optimization, 1: SAO LCU-based optimization ")
     405#else
    394406  ("SAOInterleaving", m_saoInterleavingFlag, false, "0: SAO Picture Mode, 1: SAO Interleaving ")   
     407#endif
    395408
    396409  ("ALFEncodePassReduction", m_iALFEncodePassReduction, 0, "0:Original 16-pass, 1: 1-pass, 2: 2-pass encoding")
     
    917930#endif
    918931#if H3D_IVRP
     932#if QC_ARP_D0177
     933#if QC_ARP_WARNING_FIX
     934  xConfirmPara    ( m_nUseAdvResPred > 1 , "0<=ARP<=1" );
     935#else
     936  xConfirmPara    ( m_nUseAdvResPred < 0 || m_nUseAdvResPred > 1 , "0<=ARP<=1" );
     937#endif
     938#else
    919939  xConfirmPara    ( m_uiMultiviewResPredMode > 1,                                     "MultiviewResPred must be less than or equal to 1" );
    920940  xConfirmPara    ( m_uiMultiviewResPredMode > 0 && m_uiPredDepthMapGeneration == 0 , "MultiviewResPred > 0 requires PredDepthMapGen > 0" );
     941#endif
    921942#endif
    922943  if( m_bUsingDepthMaps )
     
    16251646  printf("CIP:%d ", m_bUseConstrainedIntraPred);
    16261647  printf("PCM:%d ", (m_usePCM && (1<<m_uiPCMLog2MinSize) <= m_uiMaxCUWidth)? 1 : 0);
     1648#if LGE_SAO_MIGRATION_D0091
     1649  printf("SAOLcuBasedOptimization:%d ", (m_saoLcuBasedOptimization)?(1):(0));
     1650#else
    16271651  printf("SAOInterleaving:%d ", (m_saoInterleavingFlag)?(1):(0));
     1652#endif
    16281653#if LOSSLESS_CODING
    16291654  printf("LosslessCuEnabled:%d ", (m_useLossless)? 1:0 );
     
    16721697  printf("IVSEnable: %d ", m_bUseIVS);
    16731698#endif
     1699#if QC_ARP_D0177
     1700  printf(" ARP:%d  " , m_nUseAdvResPred  );
     1701#endif
    16741702  printf("\n");
    16751703
     
    17081736  printf("DLT:%d ", m_bUseDLT ? 1 : 0 );
    17091737#endif
     1738
     1739#if MTK_D0156
     1740  printf("BVSP:%d ", m_bUseVSPCompensation ? 1 : 0 );
     1741  printf("DoNBDV:%d ",  m_bUseDVPRefine ? 1 : 0 );
     1742#endif
     1743
    17101744#if LGE_WVSO_A0119
    17111745  if ( m_bUseWVSO )
  • trunk/source/App/TAppEncoder/TAppEncCfg.h

    r332 r443  
    165165#endif
    166166  Int       m_maxNumOffsetsPerPic;                            ///< SAO maximun number of offset per picture
     167#if LGE_SAO_MIGRATION_D0091
     168  Bool      m_saoLcuBoundary;                                 ///< SAO parameter estimation using non-deblocked pixels for LCU bottom and right boundary areas
     169  Bool      m_saoLcuBasedOptimization;                        ///< SAO LCU-based optimization
     170#else
    167171  Bool      m_saoInterleavingFlag;                            ///< SAO interleaving flag
     172#endif
    168173  // coding tools (loop filter)
    169174  vector<Bool> m_abUseALF;                                    ///< flag for using adaptive loop filter [0] - video, [1] - depth
     
    217222  Double    m_dMultiviewMvRegLambdaScale;                     ///< lambda scale for multiview motion vectors regularization
    218223#endif
    219 #if H3D_IVRP
     224#if H3D_IVRP
     225#if QC_ARP_D0177
     226  UInt      m_nUseAdvResPred;
     227#else
    220228  UInt      m_uiMultiviewResPredMode;          ///< using multiview residual prediction
     229#endif
    221230#endif
    222231
     
    317326#endif
    318327
     328#if MTK_D0156
     329
     330#if MERL_VSP_COMPENSATION_C0152
     331  Bool      m_bUseVSPCompensation;
     332#endif
     333
     334  Bool      m_bUseDVPRefine;
     335#endif
     336
    319337  // internal member functions
    320338  Void  xSetGlobal      ();                                   ///< set global variables
  • trunk/source/App/TAppEncoder/TAppEncTop.cpp

    r332 r443  
    223223#endif
    224224#if H3D_IVRP
     225#if QC_ARP_D0177
     226    m_acTEncTopList[iViewIdx]->setUseAdvRP                     ( iViewIdx ? m_nUseAdvResPred             : 0   );
     227    m_acTEncTopList[iViewIdx]->setARPStepNum                   ( iViewIdx ? QC_ARP_WFNR                  : 1   );
     228#else
    225229    m_acTEncTopList[iViewIdx]->setMultiviewResPredMode         ( m_uiMultiviewResPredMode );
     230#endif
     231#endif
     232#if MTK_D0156
     233#if MERL_VSP_COMPENSATION_C0152
     234    m_acTEncTopList[iViewIdx]->setUseVSPCompensation           ( iViewIdx ? m_bUseVSPCompensation : 0 );
     235#endif
     236    m_acTEncTopList[iViewIdx]->setUseDVPRefine                  ( iViewIdx ? m_bUseDVPRefine : 0 );
    226237#endif
    227238
     
    303314#endif
    304315    m_acTEncTopList[iViewIdx]->setMaxNumOffsetsPerPic (m_maxNumOffsetsPerPic);
     316#if LGE_SAO_MIGRATION_D0091
     317    m_acTEncTopList[iViewIdx]->setSaoLcuBoundary (m_saoLcuBoundary);
     318    m_acTEncTopList[iViewIdx]->setSaoLcuBasedOptimization (m_saoLcuBasedOptimization);
     319#else
    305320    m_acTEncTopList[iViewIdx]->setSaoInterleavingFlag (m_saoInterleavingFlag);
     321#endif
    306322    m_acTEncTopList[iViewIdx]->setPCMInputBitDepthFlag  ( m_bPCMInputBitDepthFlag);
    307323    m_acTEncTopList[iViewIdx]->setPCMFilterDisableFlag  ( m_bPCMFilterDisableFlag);
     
    560576      m_acTEncDepthTopList[iViewIdx]->setMultiviewMvRegLambdaScale    ( 0.0 );
    561577#endif
    562 #if H3D_IVRP
    563       m_acTEncDepthTopList[iViewIdx]->setMultiviewResPredMode         ( 0 );
     578#if H3D_IVRP
     579#if QC_ARP_D0177
     580    m_acTEncDepthTopList[iViewIdx]->setUseAdvRP                          ( 0 );
     581    m_acTEncDepthTopList[iViewIdx]->setARPStepNum                        ( 1 );
     582#else
     583    m_acTEncDepthTopList[iViewIdx]->setMultiviewResPredMode         ( 0 );
     584#endif
     585#endif
     586#if MTK_D0156
     587
     588#if MERL_VSP_COMPENSATION_C0152
     589      m_acTEncDepthTopList[iViewIdx]->setUseVSPCompensation           ( iViewIdx ? true : false );
     590#endif
     591
     592      m_acTEncDepthTopList[iViewIdx]->setUseDVPRefine                 ( iViewIdx ? true : false );
    564593#endif
    565594
     
    605634#endif
    606635      m_acTEncDepthTopList[iViewIdx]->setMaxNumOffsetsPerPic (m_maxNumOffsetsPerPic);
     636#if LGE_SAO_MIGRATION_D0091
     637      m_acTEncDepthTopList[iViewIdx]->setSaoLcuBoundary (m_saoLcuBoundary);
     638      m_acTEncDepthTopList[iViewIdx]->setSaoLcuBasedOptimization (m_saoLcuBasedOptimization);
     639#else
    607640      m_acTEncDepthTopList[iViewIdx]->setSaoInterleavingFlag (m_saoInterleavingFlag);
     641#endif
    608642      m_acTEncDepthTopList[iViewIdx]->setPCMInputBitDepthFlag  ( m_bPCMInputBitDepthFlag);
    609643      m_acTEncDepthTopList[iViewIdx]->setPCMFilterDisableFlag  ( m_bPCMFilterDisableFlag);
     
    10761110#if MERL_VSP_C0152
    10771111#if MERL_VSP_C0152_BugFix_ForNoDepthCase
    1078         if(m_bUsingDepthMaps) //VSP can be used only when depth is available as input
     1112        if(m_bUsingDepthMaps) // VSP can be used only when depth is available as input
    10791113        {
    10801114#endif
     
    10871121          pEncSlice->setRefPicBaseTxt(pcBaseTxtPic);
    10881122          pEncSlice->setRefPicBaseDepth(pcBaseDepthPic);
     1123#if MERL_VSP_NBDV_RefVId_Fix_D0166
     1124          for (Int refViewId=0; refViewId < iViewIdx; refViewId++ )
     1125          {
     1126            pEncSlice->setListDepthPic(m_acTEncDepthTopList[refViewId]->getListPic(), refViewId ); // The list will store only the depth pictures
     1127            setBWVSPLUT(refViewId, iViewIdx, gopId, false);
     1128          }
     1129#endif
    10891130        }
     1131#if !MERL_VSP_NBDV_RefVId_Fix_D0166
    10901132        setBWVSPLUT( iViewIdx, gopId, false);
     1133#endif
     1134#endif
     1135
    10911136#if MERL_VSP_C0152_BugFix_ForNoDepthCase
    10921137        }
     
    11031148#endif
    11041149
    1105 #endif
    11061150        // call encoding function for one frame
    11071151        m_acTEncTopList[iViewIdx]->encode( eos[iViewIdx], pcPicYuvOrg, *m_picYuvRec[iViewIdx], outputAccessUnits, iNumEncoded, gopId );
     
    11181162          TEncSlice* pcSlice = (TEncSlice*) m_acTEncDepthTopList[iViewIdx]->getSliceEncoder();
    11191163          pcSlice->setRefPicBaseDepth(pcBaseDepthPic);
     1164#if  MERL_VSP_NBDV_RefVId_Fix_D0166
     1165          for (Int refViewId=0; refViewId < iViewIdx; refViewId++ )
     1166          {
     1167            pcSlice->setListDepthPic(m_acTEncDepthTopList[refViewId]->getListPic(), refViewId ); // The list will store only the depth pictures
     1168            setBWVSPLUT( refViewId, iViewIdx, gopId, true);
     1169          }
     1170#endif
    11201171        }
     1172#if !MERL_VSP_NBDV_RefVId_Fix_D0166
    11211173        setBWVSPLUT( iViewIdx, gopId, true);
     1174#endif
    11221175#endif
    11231176
     
    16361689
    16371690#if MERL_VSP_C0152
    1638 Void TAppEncTop::setBWVSPLUT(Int iCodedViewIdx, Int gopId, Bool isDepth)
     1691
     1692Void TAppEncTop::setBWVSPLUT(
     1693#if MERL_VSP_NBDV_RefVId_Fix_D0166
     1694        Int iNeighborViewId,
     1695#endif
     1696        Int iCodedViewIdx, Int gopId, Bool isDepth)
    16391697{
    16401698  //first view does not have VSP
     
    16431701  AOT( iCodedViewIdx <= 0);
    16441702  AOT( iCodedViewIdx >= m_iNumberOfViews );
    1645 
     1703#if !MERL_VSP_NBDV_RefVId_Fix_D0166
    16461704  Int iNeighborViewId = 0;
     1705#endif
    16471706  //setting look-up table
    16481707  Int* piShiftLUT = m_cCameraData.getBaseViewShiftLUTI()[iNeighborViewId][iCodedViewIdx][0];
     
    16511710  {
    16521711    TEncSlice* pcEncSlice = (TEncSlice*) m_acTEncDepthTopList[iCodedViewIdx]->getSliceEncoder();
     1712#if MERL_VSP_NBDV_RefVId_Fix_D0166
     1713    pcEncSlice->setBWVSPLUTParam(  piShiftLUT, LOG2_DISP_PREC_LUT, iNeighborViewId );
     1714#else
    16531715    pcEncSlice->setBWVSPLUTParam(  piShiftLUT, LOG2_DISP_PREC_LUT );
     1716#endif
    16541717  }
    16551718  else
    16561719  {
    16571720    TEncSlice* pcEncSlice = (TEncSlice*) m_acTEncTopList[iCodedViewIdx]->getSliceEncoder();
     1721#if MERL_VSP_NBDV_RefVId_Fix_D0166
     1722    pcEncSlice->setBWVSPLUTParam(  piShiftLUT, LOG2_DISP_PREC_LUT, iNeighborViewId );
     1723#else
    16581724    pcEncSlice->setBWVSPLUTParam(  piShiftLUT, LOG2_DISP_PREC_LUT );
     1725#endif
    16591726  }
    16601727
  • trunk/source/App/TAppEncoder/TAppEncTop.h

    r296 r443  
    167167
    168168#if MERL_VSP_C0152
     169#if MERL_VSP_NBDV_RefVId_Fix_D0166
     170  Void setBWVSPLUT( Int refViewIdx, Int iCodedViewIdx, Int gopId, Bool isDepth);
     171#else
    169172  Void setBWVSPLUT( Int iCodedViewIdx, Int gopId, Bool isDepth);
     173#endif
    170174#endif
    171175};// END CLASS DEFINITION TAppEncTop
Note: See TracChangeset for help on using the changeset viewer.