Changeset 696 in 3DVCSoftware for branches/HTM-8.2-dev2-Samsung/source


Ignore:
Timestamp:
15 Nov 2013, 01:35:16 (11 years ago)
Author:
samsung-htm
Message:

Integration of F0150: MPI candidate in depth merge mode list construction

Location:
branches/HTM-8.2-dev2-Samsung/source
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-8.2-dev2-Samsung/source/App/TAppEncoder/TAppEncCfg.cpp

    r669 r696  
    513513#if H_3D_INTER_SDC
    514514  ("InterSDC",                 m_bDepthInterSDCFlag,        true, "Enable depth inter SDC")
     515#endif
     516#if SEC_MPI_ENABLING_MERGE_F0150
     517  ("MPI",                      m_bMPIFlag,        true, "Enable MPI")
    515518#endif
    516519  // Coding tools
     
    24482451  printf( "interSDC: %d ", m_bDepthInterSDCFlag ? 1 : 0 );
    24492452#endif
     2453#if SEC_MPI_ENABLING_MERGE_F0150
     2454  printf( "MPI: %d ", m_bMPIFlag ? 1 : 0 );
     2455#endif
    24502456  printf("\n\n"); 
    24512457
  • branches/HTM-8.2-dev2-Samsung/source/App/TAppEncoder/TAppEncCfg.h

    r669 r696  
    476476  Bool m_bDepthInterSDCFlag;                                ///< flag for inter SDC of depth map coding
    477477#endif
     478#if SEC_MPI_ENABLING_MERGE_F0150
     479  Bool m_bMPIFlag;                                           ///< flag for MPI of depth map coding
     480#endif
    478481#endif
    479482  // internal member functions
  • branches/HTM-8.2-dev2-Samsung/source/App/TAppEncoder/TAppEncTop.cpp

    r669 r696  
    200200#if H_3D_INTER_SDC
    201201    m_cTEncTop.setInterSDCEnable               ( isDepth ? m_bDepthInterSDCFlag    : false );
     202#endif
     203#if SEC_MPI_ENABLING_MERGE_F0150
     204    m_cTEncTop.setUseMPI               ( isDepth ? m_bMPIFlag    : false );
    202205#endif
    203206#endif // H_3D
     
    16811684    vps.setInterSDCFlag( layer, !isLayerZero && isDepth && m_bDepthInterSDCFlag );
    16821685#endif
     1686#if SEC_MPI_ENABLING_MERGE_F0150
     1687    vps.setMPIFlag( layer, !isLayerZero && isDepth && m_bMPIFlag );
     1688#endif
    16831689  } 
    16841690#if H_3D
  • branches/HTM-8.2-dev2-Samsung/source/Lib/TLibCommon/TComDataCU.cpp

    r690 r696  
    35223522  deriveLeftRightTopIdxGeneral( uiAbsPartIdx, uiPUIdx, uiPartIdxLT, uiPartIdxRT );
    35233523  deriveLeftBottomIdxGeneral  ( uiAbsPartIdx, uiPUIdx, uiPartIdxLB );
     3524#if SEC_MPI_ENABLING_MERGE_F0150
     3525  Bool bMPIFlag   = getSlice()->getVPS()->getMPIFlag( getSlice()->getLayerIdInVps() );
     3526#endif
    35243527#if QC_DEPTH_IV_MRG_F0125
    35253528  Bool bIsDepth = getSlice()->getIsDepth();
     
    35423545  /////////////////////////////////////////////
    35433546
     3547#if SEC_MPI_ENABLING_MERGE_F0150
     3548  if( bMPIFlag)
     3549#else
    35443550  if( m_pcSlice->getIsDepth())
     3551#endif
    35453552  {
    35463553    UInt uiPartIdxCenter;
  • branches/HTM-8.2-dev2-Samsung/source/Lib/TLibCommon/TComSlice.cpp

    r669 r696  
    18351835#if H_3D_INTER_SDC
    18361836    m_bInterSDCFlag        [ i ] = false;
     1837#endif
     1838#if SEC_MPI_ENABLING_MERGE_F0150
     1839    m_bMPIFlag             [ i ] = false;
    18371840#endif
    18381841  } 
  • branches/HTM-8.2-dev2-Samsung/source/Lib/TLibCommon/TComSlice.h

    r669 r696  
    619619  Bool        m_bInterSDCFlag[MAX_NUM_LAYERS   ];
    620620#endif
     621#if SEC_MPI_ENABLING_MERGE_F0150
     622  Bool        m_bMPIFlag[MAX_NUM_LAYERS   ];
     623#endif
    621624
    622625#endif
     
    854857  Void    setInterSDCFlag      ( Int layerIdInVps, Bool bval ){ m_bInterSDCFlag[layerIdInVps] = bval; }
    855858#endif
    856 
     859#if SEC_MPI_ENABLING_MERGE_F0150
     860  Bool    getMPIFlag      ( Int layerIdInVps )           { return m_bMPIFlag[layerIdInVps]; }
     861  Void    setMPIFlag      ( Int layerIdInVps, Bool bval ){ m_bMPIFlag[layerIdInVps] = bval; }
     862#endif
    857863#endif 
    858864#endif
  • branches/HTM-8.2-dev2-Samsung/source/Lib/TLibCommon/TypeDef.h

    r690 r696  
    131131                                              // QC_AMVP_MRG_UNIFY_IVCAN_C0051     
    132132                                              // TEXTURE MERGING CANDIDATE     , JCT3V-C0137
    133                                               // QC_INRIA_MTK_MRG_E0126           
     133                                              // QC_INRIA_MTK_MRG_E0126
     134#define SEC_MPI_ENABLING_MERGE_F0150      1   // MPI flag in VPS and enabling in Merge mode
     135
    134136#define H_3D_TMVP                         1   // QC_TMVP_C0047
    135137                                              // Sony_M23639
  • branches/HTM-8.2-dev2-Samsung/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r669 r696  
    12711271        }
    12721272#endif
     1273#if SEC_MPI_ENABLING_MERGE_F0150
     1274        READ_FLAG( uiCode, "mpi_flag[i]" );             pcVPS->setMPIFlag( i, uiCode == 1 ? true : false );
     1275#endif
    12731276        READ_FLAG( uiCode, "vps_depth_modes_flag[i]" );             pcVPS->setVpsDepthModesFlag( i, uiCode == 1 ? true : false );
    12741277        //          READ_FLAG( uiCode, "lim_qt_pred_flag[i]");                  pcVPS->setLimQtPreFlag     ( i, uiCode == 1 ? true : false );
     
    18181821      READ_UVLC( uiCode, "five_minus_max_num_merge_cand");
    18191822#if H_3D_IV_MERGE
     1823#if SEC_MPI_ENABLING_MERGE_F0150
     1824      if(rpcSlice->getIsDepth())
     1825      {
     1826        Bool bMPIFlag = rpcSlice->getVPS()->getMPIFlag( rpcSlice->getLayerIdInVps() ) ;
     1827        Bool ivMvPredFlag = rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ;
     1828        rpcSlice->setMaxNumMergeCand(( ( bMPIFlag || ivMvPredFlag ) ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS) - uiCode);
     1829      }
     1830      else
     1831      {
     1832        Bool ivMvPredFlag = rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ;
     1833        rpcSlice->setMaxNumMergeCand(( ivMvPredFlag ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS) - uiCode);
     1834      }
     1835#else
    18201836      Bool ivMvPredFlag = rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ;
    18211837      rpcSlice->setMaxNumMergeCand(( ivMvPredFlag ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS) - uiCode);
     1838#endif
    18221839#else
    18231840      rpcSlice->setMaxNumMergeCand(MRG_MAX_NUM_CANDS - uiCode);
  • branches/HTM-8.2-dev2-Samsung/source/Lib/TLibEncoder/TEncCavlc.cpp

    r669 r696  
    10251025        }
    10261026#endif
     1027#if SEC_MPI_ENABLING_MERGE_F0150
     1028        WRITE_FLAG( pcVPS->getMPIFlag( i ) ? 1 : 0 ,          "mpi_flag[i]" );
     1029#endif
    10271030        WRITE_FLAG( pcVPS->getVpsDepthModesFlag( i ) ? 1 : 0 ,          "vps_depth_modes_flag[i]" );
    10281031        //WRITE_FLAG( pcVPS->getLimQtPredFlag    ( i ) ? 1 : 0 ,          "lim_qt_pred_flag[i]"     );
     
    14111414    {
    14121415#if H_3D_IV_MERGE
     1416#if SEC_MPI_ENABLING_MERGE_F0150
     1417      if(pcSlice->getIsDepth())
     1418      {
     1419        Bool bMPIFlag = pcSlice->getVPS()->getMPIFlag( pcSlice->getLayerIdInVps() ) ;
     1420        Bool ivMvPredFlag = pcSlice->getVPS()->getIvMvPredFlag( pcSlice->getLayerIdInVps() ) ;
     1421        WRITE_UVLC( ( ( bMPIFlag || ivMvPredFlag ) ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS ) - pcSlice->getMaxNumMergeCand(), "five_minus_max_num_merge_cand");
     1422      }
     1423      else
     1424      {
     1425        Bool ivMvPredFlag = pcSlice->getVPS()->getIvMvPredFlag( pcSlice->getLayerIdInVps() ) ;
     1426        WRITE_UVLC( ( ivMvPredFlag ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS ) - pcSlice->getMaxNumMergeCand(), "five_minus_max_num_merge_cand");
     1427      }
     1428#else
    14131429      Bool ivMvPredFlag = pcSlice->getVPS()->getIvMvPredFlag( pcSlice->getLayerIdInVps() ) ;
    14141430      WRITE_UVLC( ( ivMvPredFlag ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS ) - pcSlice->getMaxNumMergeCand(), "five_minus_max_num_merge_cand");
     1431#endif
    14151432#else
    14161433      WRITE_UVLC(MRG_MAX_NUM_CANDS - pcSlice->getMaxNumMergeCand(), "five_minus_max_num_merge_cand");
  • branches/HTM-8.2-dev2-Samsung/source/Lib/TLibEncoder/TEncCfg.h

    r655 r696  
    415415  Bool      m_useSDC;
    416416  Bool      m_useDLT;
     417#endif
     418#if SEC_MPI_ENABLING_MERGE_F0150
     419  Bool      m_useMPI;
    417420#endif
    418421#if H_3D_QTLPC
     
    993996  Bool      getUsePC                        ()         { return m_bUsePC;  }
    994997#endif
     998#if SEC_MPI_ENABLING_MERGE_F0150
     999  Void      setUseMPI                       ( Bool b ) { m_useMPI = b;    }
     1000  Bool      getUseMPI                       ()         { return m_useMPI; }
     1001#endif
    9951002#endif // H_3D
    9961003};
  • branches/HTM-8.2-dev2-Samsung/source/Lib/TLibEncoder/TEncSlice.cpp

    r655 r696  
    556556  rpcSlice->setSliceSegmentArgument ( m_pcCfg->getSliceSegmentArgument() );
    557557#if H_3D_IV_MERGE
     558#if SEC_MPI_ENABLING_MERGE_F0150
     559  if(rpcSlice->getIsDepth())
     560  {
     561    rpcSlice->setMaxNumMergeCand      ( m_pcCfg->getMaxNumMergeCand()   + ( ( rpcSlice->getVPS()->getMPIFlag( rpcSlice->getLayerIdInVps() ) || rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ) ? 1 : 0 ) );
     562  }
     563  else
     564  {
     565    rpcSlice->setMaxNumMergeCand      ( m_pcCfg->getMaxNumMergeCand()   + ( rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ? 1 : 0 ) );
     566  }
     567#else
    558568   rpcSlice->setMaxNumMergeCand      ( m_pcCfg->getMaxNumMergeCand()   + ( rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ? 1 : 0 ) );
     569#endif
    559570#else
    560571  rpcSlice->setMaxNumMergeCand        ( m_pcCfg->getMaxNumMergeCand()        );
Note: See TracChangeset for help on using the changeset viewer.