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


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

Merged 10.2-dev0@949.

Location:
trunk/source/Lib/TLibDecoder
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r884 r950  
    440440
    441441            READ_FLAG(uiCode, "inter_view_dlt_pred_enable_flag[ i ]");
     442
     443#if  MTK_DLT_CODING_FIX_H0091
     444            if( uiCode )
     445            {
     446                assert( pcDLT->getUseDLTFlag( 1 ));
     447            }
     448#endif
     449
    442450            pcDLT->setInterViewDltPredEnableFlag( i, (uiCode == 1) ? true : false );
    443451
     
    17511759#if H_3D_IV_MERGE
    17521760        READ_FLAG( uiCode, "iv_mv_pred_flag[i]");          pcVPS->setIvMvPredFlag         ( i, uiCode == 1 ? true : false );
     1761#if QC_IV_PRED_CONSTRAINT_H0137
     1762        if( !pcVPS->getNumDirectRefLayers(i) )
     1763        {
     1764          assert( !uiCode );         
     1765        }
     1766#endif
    17531767#if H_3D_SPIVMP
    17541768        READ_UVLC (uiCode, "log2_sub_PU_size_minus3[i]");     pcVPS->setSubPULog2Size(i, uiCode+3);
     
    17571771#if H_3D_ARP
    17581772        READ_FLAG( uiCode, "iv_res_pred_flag[i]"  );       pcVPS->setUseAdvRP  ( i, uiCode ); pcVPS->setARPStepNum( i, uiCode ? H_3D_ARP_WFNR : 1 );
    1759 
     1773#if QC_IV_PRED_CONSTRAINT_H0137
     1774        if( !pcVPS->getNumDirectRefLayers(i) )
     1775        {
     1776          assert( !uiCode );         
     1777        }
     1778#endif
    17601779#endif
    17611780#if H_3D_NBDV_REF
     
    17641783#if H_3D_VSP
    17651784        READ_FLAG( uiCode, "view_synthesis_pred_flag[i]"); pcVPS->setViewSynthesisPredFlag( i, uiCode == 1 ? true : false );
     1785#if QC_IV_PRED_CONSTRAINT_H0137
     1786        if( !pcVPS->getNumDirectRefLayers(i) )
     1787        {
     1788          assert( !uiCode );         
     1789        }
     1790#endif
    17661791#endif
    17671792#if H_3D_DBBP
     
    17751800        {
    17761801          READ_FLAG( uiCode, "iv_mv_pred_flag[i]");          pcVPS->setIvMvPredFlag         ( i, uiCode == 1 ? true : false );
     1802#if QC_IV_PRED_CONSTRAINT_H0137
     1803          if( !pcVPS->getNumDirectRefLayers(i) )
     1804          {
     1805            assert( !uiCode );         
     1806          }
     1807#endif
    17771808        }
    17781809#endif
  • trunk/source/Lib/TLibDecoder/TDecCu.cpp

    r884 r950  
    431431    m_ppcCU[uiDepth]->initAvailableFlags();
    432432    m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex );
    433     m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo
     433    m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours
     434#if !ETRIKHU_CLEANUP_H0083
     435      ,vspFlag
     436#endif
     437      , inheritedVSPDisInfo
    434438#if H_3D_SPIVMP
    435       , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP
     439#if !ETRIKHU_CLEANUP_H0083_MISSING
     440      , bSPIVMPFlag
     441#endif
     442      , pcMvFieldSP, puhInterDirSP
    436443#endif
    437444      , numValidMergeCand, uiMergeIndex );
     445
     446#if ETRIKHU_CLEANUP_H0083
     447    m_ppcCU[uiDepth]->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours, vspFlag
     448#if H_3D_SPIVMP
     449      , bSPIVMPFlag
     450#endif
     451      , numValidMergeCand );
     452#endif
    438453    pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiAbsPartIdx, 0, uiDepth );
    439454#else
     
    782797    }
    783798   
     799#if RWTH_DBBP_NO_SPU_H0057
     800    AOF( pcCU->getARPW(uiPartAddr) == 0 );
     801    AOF( pcCU->getICFlag(uiPartAddr) == false );
     802    AOF( pcCU->getSPIVMPFlag(uiPartAddr) == false );
     803    AOF( pcCU->getVSPFlag(uiPartAddr) == 0 );
     804#else
    784805    pDBBPTmpData->ahVSPFlag[uiSegment] = pcCU->getVSPFlag( uiPartAddr );
    785806    pDBBPTmpData->acDvInfo[uiSegment] = pcCU->getDvInfo( uiPartAddr );
     807#endif
    786808  }
    787809 
     
    793815    pcCU->setInterDirSubParts( pDBBPTmpData->auhInterDir[uiSegment], 0, 0, uiDepth );
    794816   
     817#if !RWTH_DBBP_NO_SPU_H0057
    795818    pcCU->setVSPFlagSubParts( pDBBPTmpData->ahVSPFlag[uiSegment], 0, 0, uiDepth );
    796819    pcCU->setDvInfoSubParts( pDBBPTmpData->acDvInfo[uiSegment], 0, 0, uiDepth );
     820#endif
    797821   
    798822    for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ )
     
    816840    pcCU->setDBBPFlagSubParts(true, uiPartAddr, uiSegment, uiDepth);
    817841   
     842#if !RWTH_DBBP_NO_SPU_H0057
    818843    pcCU->setVSPFlagSubParts( pDBBPTmpData->ahVSPFlag[uiSegment], uiPartAddr, uiSegment, uiDepth );
    819844    pcCU->setDvInfoSubParts( pDBBPTmpData->acDvInfo[uiSegment], uiPartAddr, uiSegment, uiDepth );
     845#endif
    820846   
    821847    pcCU->setInterDirSubParts(pDBBPTmpData->auhInterDir[uiSegment], uiPartAddr, uiSegment, uiDepth); // interprets depth relative to LCU level
     
    920946    for( UInt uiX = 0; uiX < uiWidth; uiX++ )
    921947    {
    922 #if H_3D
     948#if H_3D && !SEC_NO_RESI_DLT_H0105
    923949      if ( useDltFlag )
    924950      {
     
    12311257  // get DC prediction for each segment
    12321258  Pel apDCPredValues[2];
     1259#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
     1260  if ( getDimType( uiLumaPredMode ) == DMM1_IDX || getDimType( uiLumaPredMode ) == DMM4_IDX )
     1261  {
     1262    apDCPredValues[0] = pcCU->getDmmPredictor( 0 );
     1263    apDCPredValues[1] = pcCU->getDmmPredictor( 1 );
     1264  }
     1265  else
     1266#endif
    12331267  m_pcPrediction->analyzeSegmentsSDC(piPred, uiStride, uiWidth, apDCPredValues, uiNumSegments, pbMask, uiMaskStride, uiLumaPredMode);
    12341268 
  • trunk/source/Lib/TLibDecoder/TDecEntropy.cpp

    r884 r950  
    139139 
    140140#if H_3D_DBBP
     141
     142#if MTK_DBBP_SIGNALING_H0094
     143  if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) )
     144#else
    141145  if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && pcCU->getPartitionSize(uiAbsPartIdx) == RWTH_DBBP_PACK_MODE )
     146#endif
    142147  {
    143148    decodeDBBPFlag(pcCU, uiAbsPartIdx, uiDepth);
     
    145150    if( pcCU->getDBBPFlag(uiAbsPartIdx) )
    146151    {
     152#if !MTK_DBBP_SIGNALING_H0094
    147153      AOF( pcCU->getPartitionSize(uiAbsPartIdx) == RWTH_DBBP_PACK_MODE );
     154#endif
    148155     
    149156      // get collocated depth block
     
    161168     
    162169      pcCU->setPartSizeSubParts(eVirtualPartSize, uiAbsPartIdx, uiDepth);
     170     
     171#if RWTH_DBBP_NO_SPU_H0057
     172      // make sure that DBBP flag is set for both segments
     173      UInt uiPUOffset = ( g_auiPUOffset[UInt( eVirtualPartSize )] << ( ( pcCU->getSlice()->getSPS()->getMaxCUDepth() - uiDepth ) << 1 ) ) >> 4;
     174      pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx, 0, uiDepth);
     175      pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx+uiPUOffset, 1, uiDepth);
     176#endif
    163177    }
    164178  }
     
    196210    return;
    197211  }
     212#if !MTK_SDC_FLAG_FIX_H0095
    198213#if H_3D_DIM_SDC
    199214  if( pcCU->getSDCFlag(uiAbsPartIdx) )
     
    201216    return;
    202217  }
     218#endif
    203219#endif
    204220 
     
    292308          pcSubCU->initAvailableFlags();
    293309          pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand);
    294           pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo
     310          pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours
     311#if !ETRIKHU_CLEANUP_H0083
     312            ,vspFlag
     313#endif
     314            , inheritedVSPDisInfo
    295315#if H_3D_SPIVMP
    296             , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP
     316#if !ETRIKHU_CLEANUP_H0083_MISSING
     317            , bSPIVMPFlag
     318#endif
     319            , pcMvFieldSP, puhInterDirSP
    297320#endif
    298321            , numValidMergeCand );
     322
     323#if ETRIKHU_CLEANUP_H0083
     324          pcSubCU->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours, vspFlag
     325#if H_3D_SPIVMP
     326            , bSPIVMPFlag
     327#endif
     328            , numValidMergeCand );
     329#endif
    299330          pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth );
    300331
     
    329360        pcSubCU->initAvailableFlags();
    330361        pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex );
    331         pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo
     362        pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours
     363#if !ETRIKHU_CLEANUP_H0083
     364          , vspFlag
     365#endif
     366          , inheritedVSPDisInfo
    332367#if H_3D_SPIVMP
    333           , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP
     368#if !ETRIKHU_CLEANUP_H0083_MISSING
     369            , bSPIVMPFlag
     370#endif
     371          , pcMvFieldSP, puhInterDirSP
    334372#endif
    335373          ,numValidMergeCand, uiMergeIndex );
     374
     375#if ETRIKHU_CLEANUP_H0083
     376        pcSubCU->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours, vspFlag
     377#if H_3D_SPIVMP
     378          , bSPIVMPFlag
     379#endif
     380          ,numValidMergeCand );
     381#endif
    336382        pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth );
    337383        if(vspFlag[uiMergeIndex])
  • trunk/source/Lib/TLibDecoder/TDecSbac.cpp

    r884 r950  
    8787, m_cDdcDataSCModel           ( 1,             1,               NUM_DDC_DATA_CTX              , m_contextModels + m_numContextModels, m_numContextModels)
    8888, m_cAngleFlagSCModel         ( 1,             1,               NUM_ANGLE_FLAG_CTX            , m_contextModels + m_numContextModels, m_numContextModels)
    89 #if H_3D_DIM_DMM
     89#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
    9090, m_cDmm1DataSCModel          ( 1,             1,               NUM_DMM1_DATA_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
    9191#endif
     
    171171  m_cDdcDataSCModel.initBuffer           ( sliceType, qp, (UChar*)INIT_DDC_DATA );
    172172  m_cAngleFlagSCModel.initBuffer         ( sliceType, qp, (UChar*)INIT_ANGLE_FLAG );
    173 #if H_3D_DIM_DMM
     173#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
    174174  m_cDmm1DataSCModel.initBuffer          ( sliceType, qp, (UChar*)INIT_DMM1_DATA );
    175175#endif
     
    241241  m_cDdcDataSCModel.initBuffer           ( eSliceType, iQp, (UChar*)INIT_DDC_DATA );
    242242  m_cAngleFlagSCModel.initBuffer         ( eSliceType, iQp, (UChar*)INIT_ANGLE_FLAG );
    243 #if H_3D_DIM_DMM
     243#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
    244244  m_cDmm1DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA );
    245245#endif
     
    386386    uiCount++;
    387387  }
     388#if QC_SIMP_DELTADC_CODING_H0131
     389  while( uiSymbol && ( uiCount != 3 ) );
     390#else
    388391  while( uiSymbol && ( uiCount != 13 ) );
    389 
     392#endif
    390393  ruiSymbol = uiCount - 1;
    391394
     
    423426  for( Int i = 0; i < iNumBit; i++ )
    424427  {
     428#if MTK_DMM_SIMP_CODE_H0092
     429      m_pcTDecBinIf->decodeBinEP( uiSymbol );
     430#else
    425431    m_pcTDecBinIf->decodeBin( uiSymbol, m_cDmm1DataSCModel.get(0, 0, 0) );
     432#endif
    426433    uiIdx += uiSymbol << i;
    427434  }
     
    11281135  if( ( pcCU->getSlice()->getSPS()->getMaxCUWidth() >> pcCU->getDepth( absPartIdx ) ) < 64 ) //DMM and HEVC intra modes are both allowed
    11291136  {
     1137#if LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135
     1138    m_pcTDecBinIf->decodeBin( uiSymbol, m_cAngleFlagSCModel.get( 0, 0, 0 ) );
     1139#else
    11301140    m_pcTDecBinIf->decodeBin( uiSymbol, m_cAngleFlagSCModel.get( 0, 0, pcCU->getCtxAngleFlag( absPartIdx ) ) );
     1141#endif
    11311142  }
    11321143  else
     
    20682079    UInt dir     = pcCU->getLumaIntraDir( absPartIdx );
    20692080    uiNumSegments = isDimMode( dir ) ? 2 : 1;
    2070 
     2081#if MTK_DELTA_DC_FLAG_ONE_CONTEXT_H0084_H0100_H0113
     2082    m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get( 0, 0, 0 ) );
     2083#else
    20712084    m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get( 0, 0, uiNumSegments-1 ) );
    2072 
     2085#endif
    20732086    if( pcCU->getSDCFlag( absPartIdx ) )
    20742087    {
     
    21412154Void TDecSbac::parseDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    21422155{
     2156#if !MTK_DBBP_SIGNALING_H0094
    21432157  PartSize ePartSize = pcCU->getPartitionSize( uiAbsPartIdx );
     2158#endif
    21442159  AOF( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) );
    21452160  AOF( !pcCU->getSlice()->getIsDepth() );
     2161#if !MTK_DBBP_SIGNALING_H0094
    21462162  AOF( ePartSize == RWTH_DBBP_PACK_MODE );
     2163#endif
    21472164 
    21482165  UInt uiSymbol = 0;
     
    21532170  {
    21542171    pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx, 0, uiDepth);
     2172#if MTK_DIS_SPBIP8X4_H0205
     2173    UInt uiCurrPartNumQ = (pcCU->getPic()->getNumPartInCU() >> (2 * uiDepth)) >> 2;
     2174    pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx + 2*uiCurrPartNumQ, 1, uiDepth);
     2175#endif
    21552176  }
    21562177}
  • trunk/source/Lib/TLibDecoder/TDecSbac.h

    r884 r950  
    214214  ContextModel3DBuffer m_cDdcDataSCModel;
    215215  ContextModel3DBuffer m_cAngleFlagSCModel;
    216 #if H_3D_DIM_DMM
     216#if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092
    217217  ContextModel3DBuffer m_cDmm1DataSCModel;
    218218#endif
  • trunk/source/Lib/TLibDecoder/TDecSlice.cpp

    r872 r950  
    221221    }
    222222  }
     223#if  MTK_DLT_CODING_FIX_H0091
     224  if( pcSlice->getPPS()->getDLT() != NULL )
     225  {
     226      assert( pcSlice->getSPS()->getBitDepthY() == pcSlice->getPPS()->getDLT()->getDepthViewBitDepth() );
     227  }
     228#endif
    223229  for( Int iCUAddr = iStartCUAddr; !uiIsLast && iCUAddr < rpcPic->getNumCUsInFrame(); iCUAddr = rpcPic->getPicSym()->xCalculateNxtCUAddr(iCUAddr) )
    224230  {
Note: See TracChangeset for help on using the changeset viewer.