Changeset 950 in 3DVCSoftware for trunk/source/Lib/TLibEncoder


Ignore:
Timestamp:
25 Apr 2014, 12:38:00 (11 years ago)
Author:
tech
Message:

Merged 10.2-dev0@949.

Location:
trunk/source/Lib/TLibEncoder
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibEncoder/TEncCavlc.cpp

    r884 r950  
    272272  WRITE_FLAG( pcPPS->getSliceHeaderExtensionPresentFlag() ? 1 : 0, "slice_segment_header_extension_present_flag");
    273273
     274  #if MTK_DLT_CODING_FIX_H0091
     275    if(( !pcPPS->getSPS()->getVPS()->getDepthId( pcPPS->getSPS()->getLayerId() ) )||
     276        pcPPS->getLayerId() != 1  )
     277    {
     278        pcPPS->setPpsExtensionTypeFlag( PPS_EX_T_3D, false );
     279    }
     280  #endif
     281
    274282#if !H_MV
    275283  WRITE_FLAG( 0, "pps_extension_flag" );
  • trunk/source/Lib/TLibEncoder/TEncCfg.h

    r884 r950  
    401401#if H_3D_IC
    402402  Bool      m_bUseIC;
     403#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     404  Bool      m_bUseICLowLatencyEnc;
     405#endif
    403406#endif
    404407#if H_3D_INTER_SDC
     
    511514  Void       setUseIC                       ( Bool bVal )    { m_bUseIC = bVal; }
    512515  Bool       getUseIC                       ()               { return m_bUseIC; }
     516#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     517  Void       setUseICLowLatencyEnc          ( Bool bVal )    { m_bUseICLowLatencyEnc = bVal; }
     518  Bool       getUseICLowLatencyEnc          ()               { return m_bUseICLowLatencyEnc; }
     519#endif
    513520#endif
    514521#if H_3D_INTER_SDC
  • trunk/source/Lib/TLibEncoder/TEncCu.cpp

    r884 r950  
    18141814    rpcTempCU->initAvailableFlags();
    18151815    rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand );
    1816     rpcTempCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag,inheritedVSPDisInfo
     1816    rpcTempCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours
     1817#if !ETRIKHU_CLEANUP_H0083
     1818      , vspFlag
     1819#endif
     1820      , inheritedVSPDisInfo
    18171821#if H_3D_SPIVMP
    1818       , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP
     1822#if !ETRIKHU_CLEANUP_H0083_MISSING
     1823      , bSPIVMPFlag
     1824#endif
     1825      , pcMvFieldSP, puhInterDirSP
    18191826#endif
    18201827      , numValidMergeCand
    18211828      );
     1829
     1830#if ETRIKHU_CLEANUP_H0083
     1831    rpcTempCU->buildMCL( cMvFieldNeighbours,uhInterDirNeighbours, vspFlag
     1832#if H_3D_SPIVMP
     1833      , bSPIVMPFlag
     1834#endif
     1835      , numValidMergeCand
     1836      );
     1837#endif
     1838
    18221839#else
    18231840    rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, numValidMergeCand );
     
    23832400    pDBBPTmpData->auhMergeIndex[uiSegment] = rpcTempCU->getMergeIndex(0);
    23842401   
     2402#if RWTH_DBBP_NO_SPU_H0057
     2403    AOF( rpcTempCU->getSPIVMPFlag(0) == false );
     2404    AOF( rpcTempCU->getVSPFlag(0) == 0 );
     2405#else
    23852406    pDBBPTmpData->ahVSPFlag[uiSegment] = rpcTempCU->getVSPFlag(0);
    23862407    pDBBPTmpData->acDvInfo[uiSegment] = rpcTempCU->getDvInfo(0);
     2408#endif
    23872409   
    23882410    for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ )
     
    24162438    rpcTempCU->setMergeIndexSubParts(pDBBPTmpData->auhMergeIndex[uiSegment], uiPartAddr, uiSegment, uhDepth);
    24172439   
     2440#if !RWTH_DBBP_NO_SPU_H0057
    24182441    rpcTempCU->setVSPFlagSubParts(pDBBPTmpData->ahVSPFlag[uiSegment], uiPartAddr, uiSegment, uhDepth);
    24192442    rpcTempCU->setDvInfoSubParts(pDBBPTmpData->acDvInfo[uiSegment], uiPartAddr, uiSegment, uhDepth);
     2443#endif
    24202444   
    24212445    for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ )
  • trunk/source/Lib/TLibEncoder/TEncEntropy.cpp

    r884 r950  
    163163    uiAbsPartIdx = 0;
    164164  }
    165 
     165#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     166  else
     167  {
     168    g_aICEnableCANDIDATE[pcCU->getSlice()->getDepth()]++;
     169    if(pcCU->getICFlag(uiAbsPartIdx))
     170    {
     171      g_aICEnableNUM[pcCU->getSlice()->getDepth()]++;
     172    }
     173  }
     174#endif
    166175  if( pcCU->isICFlagRequired( uiAbsPartIdx ) )
    167176    m_pcEntropyCoderIf->codeICFlag( pcCU, uiAbsPartIdx );
     
    246255 
    247256#if H_3D_DBBP
     257
     258#if MTK_DBBP_SIGNALING_H0094
     259  if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) )
     260#else
    248261  if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && pcCU->getPartitionSize(uiAbsPartIdx) == RWTH_DBBP_PACK_MODE )
     262#endif
    249263  {
    250264    encodeDBBPFlag(pcCU, uiAbsPartIdx, bRD);
     
    252266    if( pcCU->getDBBPFlag(uiAbsPartIdx) )
    253267    {
     268#if !MTK_DBBP_SIGNALING_H0094
    254269      AOF( pcCU->getPartitionSize(uiAbsPartIdx) == RWTH_DBBP_PACK_MODE );
     270#endif
    255271      // restore virtual partition size for DBBP blocks
    256272      pcCU->setPartSizeSubParts(eVirtualPartSize, uiAbsPartIdx, uiDepth);
     
    274290    return;
    275291  }
     292#if !MTK_SDC_FLAG_FIX_H0095
    276293#if H_3D_DIM_SDC
    277294  if( pcCU->getSDCFlag(uiAbsPartIdx) )
     
    279296    return;
    280297  }
     298#endif
    281299#endif
    282300 
  • trunk/source/Lib/TLibEncoder/TEncSbac.cpp

    r884 r950  
    9393, m_cDdcDataSCModel           ( 1,             1,               NUM_DDC_DATA_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    9494, m_cAngleFlagSCModel         ( 1,             1,               NUM_ANGLE_FLAG_CTX            , m_contextModels + m_numContextModels, m_numContextModels)
    95 #if H_3D_DIM_DMM
     95#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
    9696, m_cDmm1DataSCModel          ( 1,             1,               NUM_DMM1_DATA_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
    9797#endif
     
    169169  m_cDdcDataSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DDC_DATA );
    170170  m_cAngleFlagSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_ANGLE_FLAG );
    171 #if H_3D_DIM_DMM
     171#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
    172172  m_cDmm1DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA );
    173173#endif
     
    255255      curCost += m_cDdcDataSCModel.calcCost           ( curSliceType, qp, (UChar*)INIT_DDC_DATA );
    256256      curCost += m_cAngleFlagSCModel.calcCost         ( curSliceType, qp, (UChar*)INIT_ANGLE_FLAG ); 
    257 #if H_3D_DIM_DMM
     257#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
    258258      curCost += m_cDmm1DataSCModel.calcCost          ( curSliceType, qp, (UChar*)INIT_DMM1_DATA );
    259259#endif
     
    319319  m_cDdcDataSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DDC_DATA );
    320320  m_cAngleFlagSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_ANGLE_FLAG );
    321 #if H_3D_DIM_DMM
     321#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
    322322  m_cDmm1DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA );
    323323#endif
     
    482482    m_pcBinIf->encodeBin( 1, rcSCModel );
    483483    UInt uiCount = 0;
     484#if QC_SIMP_DELTADC_CODING_H0131
     485    Bool bNoExGo = ( uiSymbol < 3 );
     486
     487    while( --uiSymbol && ++uiCount < 3 )
     488#else
    484489    Bool bNoExGo = (uiSymbol < 13);
    485490
    486491    while( --uiSymbol && ++uiCount < 13 )
     492#endif
    487493    {
    488494      m_pcBinIf->encodeBin( 1, rcSCModel );
     
    520526  for ( Int i = 0; i < iNumBit; i++ )
    521527  {
     528#if MTK_DMM_SIMP_CODE_H0092
     529      m_pcBinIf->encodeBinEP( ( uiTabIdx >> i ) & 1 );
     530#else
    522531    m_pcBinIf->encodeBin( ( uiTabIdx >> i ) & 1, m_cDmm1DataSCModel.get(0, 0, 0) );
     532#endif
    523533  }
    524534}
     
    12331243  if( ( pcCU->getSlice()->getSPS()->getMaxCUWidth() >> pcCU->getDepth( absPartIdx ) ) < 64 ) //DMM and HEVC intra modes are both allowed
    12341244  {
     1245#if LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135
     1246    m_pcBinIf->encodeBin( isDimMode( dir ) ? 0 : 1, m_cAngleFlagSCModel.get( 0, 0, 0 ) );
     1247#else
    12351248    m_pcBinIf->encodeBin( isDimMode( dir ) ? 0 : 1, m_cAngleFlagSCModel.get( 0, 0, pcCU->getCtxAngleFlag( absPartIdx ) ) );
     1249#endif
    12361250  }
    12371251  if( isDimMode( dir ) )
     
    23132327      dimDeltaDC = isDimDeltaDC( dir );
    23142328    }
    2315 
     2329#if MTK_DELTA_DC_FLAG_ONE_CONTEXT_H0084_H0100_H0113
     2330    m_pcBinIf->encodeBin( dimDeltaDC, m_cDdcFlagSCModel.get( 0, 0, 0 ) );
     2331#else
    23162332    m_pcBinIf->encodeBin( dimDeltaDC, m_cDdcFlagSCModel.get( 0, 0, uiNumSegments-1 ) );
     2333#endif
    23172334  }
    23182335  else //all-zero inter SDC is not allowed
     
    23562373Void TEncSbac::codeDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx )
    23572374{
     2375#if !MTK_DBBP_SIGNALING_H0094
    23582376  PartSize ePartSize = pcCU->getPartitionSize( uiAbsPartIdx );
    23592377  AOF( ePartSize == RWTH_DBBP_PACK_MODE );
     2378#endif
    23602379  AOF( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) );
    23612380  AOF( !pcCU->getSlice()->getIsDepth() );
  • trunk/source/Lib/TLibEncoder/TEncSbac.h

    r884 r950  
    258258  ContextModel3DBuffer m_cDdcDataSCModel;
    259259  ContextModel3DBuffer m_cAngleFlagSCModel;
    260 #if H_3D_DIM_DMM
     260#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
    261261  ContextModel3DBuffer m_cDmm1DataSCModel;
    262262#endif
  • trunk/source/Lib/TLibEncoder/TEncSearch.cpp

    r884 r950  
    11461146        for( UInt uiX = 0; uiX < uiWidth; uiX++ )
    11471147        {
    1148 #if H_3D_DIM
     1148#if H_3D_DIM && !SEC_NO_RESI_DLT_H0105
    11491149          if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getPPS()->getDLT()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) )
    11501150          {
     
    12211221      for( UInt uiX = 0; uiX < uiWidth; uiX++ )
    12221222      {
    1223 #if H_3D_DIM
     1223#if H_3D_DIM && !SEC_NO_RESI_DLT_H0105
    12241224        if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getPPS()->getDLT()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) )
    12251225        {
     
    19891989  // get DC prediction for each segment
    19901990  Pel apDCPredValues[2];
     1991#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
     1992  if ( getDimType( uiLumaPredMode ) == DMM1_IDX || getDimType( uiLumaPredMode ) == DMM4_IDX )
     1993  {
     1994    apDCPredValues[0] = pcCU->getDmmPredictor( 0 );
     1995    apDCPredValues[1] = pcCU->getDmmPredictor( 1 );
     1996  }
     1997  else
     1998#endif
    19911999  analyzeSegmentsSDC(piPred, uiStride, uiWidth, apDCPredValues, uiNumSegments, pbMask, uiMaskStride, uiLumaPredMode );
    19922000
     
    36663674      pcCU->setInterDirSubParts(pDBBPTmpData->auhInterDir[0], 0, 0, pcCU->getDepth(0)); // interprets depth relative to LCU level
    36673675     
     3676#if !RWTH_DBBP_NO_SPU_H0057
    36683677      pcCU->setVSPFlagSubParts(pDBBPTmpData->ahVSPFlag[0], 0, 0, pcCU->getDepth(0));
    36693678      pcCU->setDvInfoSubParts(pDBBPTmpData->acDvInfo[0], 0, 0, pcCU->getDepth(0));
     3679#endif
    36703680     
    36713681      for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ )
     
    36973707      pcCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours
    36983708#if H_3D_VSP
     3709#if !ETRIKHU_CLEANUP_H0083
    36993710                                        , vspFlag
     3711#endif
    37003712                                        , inheritedVSPDisInfo
    37013713#endif
    37023714#if H_3D_SPIVMP
    3703                                         , pbSPIVMPFlag, pcMvFieldSP, puhInterDirSP
     3715#if !ETRIKHU_CLEANUP_H0083_MISSING
     3716        , pbSPIVMPFlag
     3717#endif
     3718        , pcMvFieldSP, puhInterDirSP
     3719#endif
     3720        , numValidMergeCand
     3721        );
     3722
     3723#if ETRIKHU_CLEANUP_H0083
     3724      pcCU->buildMCL( cMvFieldNeighbours,uhInterDirNeighbours
     3725#if H_3D_VSP
     3726        , vspFlag
     3727#endif
     3728#if H_3D_SPIVMP
     3729        , pbSPIVMPFlag
    37043730#endif
    37053731                                        , numValidMergeCand
    37063732        );
     3733#endif
    37073734#else
    37083735      pcCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand );
     
    37183745    pcCU->xGetInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours
    37193746#if H_3D_VSP
     3747#if !ETRIKHU_CLEANUP_H0083
    37203748                                      , vspFlag
     3749#endif
    37213750                                      , inheritedVSPDisInfo
    37223751#endif
    37233752#if H_3D_SPIVMP
    3724                                       , pbSPIVMPFlag, pcMvFieldSP, puhInterDirSP
     3753#if !ETRIKHU_CLEANUP_H0083_MISSING
     3754      , pbSPIVMPFlag
     3755#endif
     3756      , pcMvFieldSP, puhInterDirSP
     3757#endif
     3758      , numValidMergeCand
     3759      );
     3760
     3761#if ETRIKHU_CLEANUP_H0083
     3762    pcCU->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours
     3763#if H_3D_VSP
     3764      , vspFlag
     3765#endif
     3766#if H_3D_SPIVMP
     3767      , pbSPIVMPFlag
    37253768#endif
    37263769                                      , numValidMergeCand
    37273770      );
     3771#endif
    37283772#else
    37293773    pcCU->getInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand
  • trunk/source/Lib/TLibEncoder/TEncSlice.cpp

    r872 r950  
    866866     )
    867867  {
     868#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     869    pcSlice ->xSetApplyIC(pcEncTop->getUseICLowLatencyEnc());
     870#else
    868871    pcSlice ->xSetApplyIC();
     872#endif
    869873    if ( pcSlice->getApplyIC() )
    870874    {
Note: See TracChangeset for help on using the changeset viewer.