Changeset 939 in 3DVCSoftware


Ignore:
Timestamp:
22 Apr 2014, 17:08:54 (10 years ago)
Author:
tech
Message:

Merged 10.2-dev3-HiSilicon@928.

Location:
branches/HTM-10.2-dev0
Files:
28 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-10.2-dev0/cfg/3D-HEVC/baseCfg_2view+depth.cfg

    r872 r939  
    198198AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
    199199IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )   (v/d)
     200IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
    200201ViewSynthesisPred                   : 1                # View synthesis prediction
    201202DepthRefinement                     : 1                # Dispary refined by depth DoNBDV
  • branches/HTM-10.2-dev0/cfg/3D-HEVC/baseCfg_2view.cfg

    r872 r939  
    173173AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
    174174IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on ) (v/d)
     175IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
    175176ViewSynthesisPred                   : 1                # View synthesis prediction
    176177DepthRefinement                     : 1                # Dispary refined by depth DoNBDV
  • branches/HTM-10.2-dev0/cfg/3D-HEVC/baseCfg_3view+depth.cfg

    r872 r939  
    229229AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
    230230IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )  (v/d)
     231IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
    231232ViewSynthesisPred                   : 1                # View synthesis prediction
    232233DepthRefinement                     : 1                # Dispary refined by depth DoNBDV
  • branches/HTM-10.2-dev0/cfg/3D-HEVC/baseCfg_3view.cfg

    r872 r939  
    188188AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
    189189IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on )   (v/d)
     190IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
    190191ViewSynthesisPred                   : 0                # View synthesis prediction
    191192DepthRefinement                     : 0                # Dispary refined by depth DoNBDV
  • branches/HTM-10.2-dev0/cfg/3D-HEVC/fullCfg.cfg

    r872 r939  
    253253AdvMultiviewResPred                 : 1                # Advanced inter-view residual prediction (0:off, 1:on)
    254254IlluCompEnable                      : 1                # Enable Illumination compensation ( 0: off, 1: on ) (v/d)
     255IlluCompLowLatencyEnc               : 0                # Enable low-latency Illumination compensation encoding( 0: off, 1: on )
    255256ViewSynthesisPred                   : 1                # View synthesis prediction
    256257DepthRefinement                     : 1                # Dispary refined by depth DoNBDV
  • branches/HTM-10.2-dev0/source/App/TAppEncoder/TAppEncCfg.cpp

    r884 r939  
    517517#if H_3D_IC
    518518  ("IlluCompEnable",           m_abUseIC, true, "Enable illumination compensation")
     519#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     520  ("IlluCompLowLatencyEnc",    m_bUseLowLatencyICEnc, false, "Enable low-latency illumination compensation encoding")
     521#endif
    519522#endif
    520523#if H_3D_INTER_SDC
     
    24792482#if H_3D_IC
    24802483  printf( "IlluCompEnable:%d ", m_abUseIC);
     2484#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     2485  printf ("IlluCompLowLatencyEnc:%d ",  m_bUseLowLatencyICEnc);
     2486#endif
    24812487#endif
    24822488#if H_3D_NBDV_REF
  • branches/HTM-10.2-dev0/source/App/TAppEncoder/TAppEncCfg.h

    r884 r939  
    137137#if H_3D_IC
    138138  Bool   m_abUseIC;
     139#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     140  Bool  m_bUseLowLatencyICEnc;
     141#endif
    139142#endif
    140143#if H_3D_NBDV_REF
  • branches/HTM-10.2-dev0/source/App/TAppEncoder/TAppEncTop.cpp

    r884 r939  
    178178    m_cTEncTop.setDWeight                      ( isDepth ? m_iDWeight             : 0     );
    179179#endif // H_3D_VSO
    180 #if H_3D_ARP
    181180    //====== Advanced Inter-view Residual Prediction =========
    182181    m_cTEncTop.setUseAdvRP                     ( ( isDepth || 0==layerIdInVps ) ? 0 : m_uiUseAdvResPred );
     
    189188#if H_3D_IC
    190189    m_cTEncTop.setUseIC                        ( vps.getViewIndex( layerId ) == 0 || isDepth ? false : m_abUseIC );
     190#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     191    m_cTEncTop.setUseICLowLatencyEnc           ( m_bUseLowLatencyICEnc );
     192#endif
    191193#endif
    192194  //========== Depth intra modes ==========
     
    17931795
    17941796#if H_3D_ARP
     1797#if QC_IV_PRED_CONSTRAINT_H0137
     1798    vps.setUseAdvRP        ( layer, ( isDepth || isLayerZero || !vps.getNumDirectRefLayers(layer) ) ? 0 : m_uiUseAdvResPred );
     1799    vps.setARPStepNum      ( layer, ( isDepth || isLayerZero || !vps.getNumDirectRefLayers(layer) ) ? 1 : H_3D_ARP_WFNR     );
     1800#else
    17951801    vps.setUseAdvRP        ( layer, ( isDepth || isLayerZero ) ? 0 : m_uiUseAdvResPred );
    17961802    vps.setARPStepNum      ( layer, ( isDepth || isLayerZero ) ? 1 : H_3D_ARP_WFNR     );
    17971803#endif 
     1804#endif 
    17981805#if H_3D_SPIVMP
    17991806    if( isDepth )
     
    18121819
    18131820#if H_3D_IV_MERGE
     1821#if QC_IV_PRED_CONSTRAINT_H0137
     1822    if( !vps.getNumDirectRefLayers(layer) )
     1823    {
     1824      vps.setIvMvPredFlag    (layer, false);
     1825    }
     1826    else
     1827    {
     1828#endif
    18141829    if( isDepth )
    18151830    {
     
    18201835      vps.setIvMvPredFlag         ( layer, !isLayerZero && m_ivMvPredFlag[0] );
    18211836    }
     1837#if QC_IV_PRED_CONSTRAINT_H0137
     1838    }
     1839#endif
    18221840#endif
    18231841#if H_3D_NBDV_REF
     
    18251843#endif
    18261844#if H_3D_VSP
     1845#if QC_IV_PRED_CONSTRAINT_H0137
     1846    vps.setViewSynthesisPredFlag( layer, !isLayerZero && !isDepth && vps.getNumDirectRefLayers(layer) && m_viewSynthesisPredFlag );         
     1847#else
    18271848    vps.setViewSynthesisPredFlag( layer, !isLayerZero && !isDepth && m_viewSynthesisPredFlag );         
     1849#endif
    18281850#endif
    18291851#if H_3D_DBBP
  • branches/HTM-10.2-dev0/source/Lib/TLibCommon/ContextTables.h

    r936 r939  
    110110#define NUM_DMM1_DATA_CTX             1       ///< number of context models for DMM1 data
    111111#endif
     112#if LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135
     113#define NUM_ANGLE_FLAG_CTX            1
     114#else
    112115#define NUM_ANGLE_FLAG_CTX            3
     116#endif
    113117#endif
    114118
     
    368372};
    369373
     374#if LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135
     375static const UChar
     376INIT_ANGLE_FLAG[3][NUM_ANGLE_FLAG_CTX] =
     377{
     378  { 154 },
     379  { 141 },
     380  { 155 },
     381};
     382#else
    370383static const UChar
    371384INIT_ANGLE_FLAG[3][NUM_ANGLE_FLAG_CTX] =
     
    375388  { 155, 170, 157 },
    376389};
     390#endif
    377391
    378392static const UChar
  • branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComDataCU.cpp

    r936 r939  
    610610    memset( m_apSegmentDCOffset[1]  + firstElement,     0,                numElements * sizeof( *m_apSegmentDCOffset[1] ) );
    611611#endif
     612#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
     613    m_apDmmPredictor[0] = 0;
     614    m_apDmmPredictor[1] = 0;
     615#endif
    612616#endif
    613617#if H_3D_DBBP
     
    784788      m_apSegmentDCOffset[1][ui] = 0;
    785789#endif
     790#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
     791      m_apDmmPredictor[0] = 0;
     792      m_apDmmPredictor[1] = 0;
     793#endif
    786794#endif
    787795#if H_3D_DBBP
     
    898906  memset( m_apSegmentDCOffset[0], 0, sizeof(Pel) * m_uiNumPartition   );
    899907  memset( m_apSegmentDCOffset[1], 0, sizeof(Pel) * m_uiNumPartition   );
     908#endif
     909#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
     910  m_apDmmPredictor[0] = 0;
     911  m_apDmmPredictor[1] = 0;
    900912#endif
    901913#endif
     
    23892401UInt TComDataCU::getCtxAngleFlag( UInt uiAbsPartIdx )
    23902402{
     2403#if LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135
     2404  return 0;
     2405#else
    23912406  TComDataCU* pcTempCU;
    23922407  UInt        uiTempPartIdx;
     
    24022417
    24032418  return uiCtx;
     2419#endif
    24042420}
    24052421#endif
  • branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComDataCU.h

    r936 r939  
    195195  Bool*         m_pbSDCFlag;
    196196  Pel*          m_apSegmentDCOffset[2];
     197#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
     198  Pel          m_apDmmPredictor[2];
     199#endif
    197200#endif
    198201#endif
     
    580583  Pel           getSDCSegmentDCOffset( UInt uiSeg, UInt uiPartIdx ) { return m_apSegmentDCOffset[uiSeg][uiPartIdx]; }
    581584  Void          setSDCSegmentDCOffset( Pel pOffset, UInt uiSeg, UInt uiPartIdx) { m_apSegmentDCOffset[uiSeg][uiPartIdx] = pOffset; }
     585#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
     586  Void          setDmmPredictor ( Pel pOffset, UInt uiSeg) { m_apDmmPredictor[uiSeg] = pOffset; }
     587  Pel           getDmmPredictor ( UInt uiSeg) { return m_apDmmPredictor[uiSeg]; }
     588#endif
    582589  UInt          getCtxSDCFlag          ( UInt   uiAbsPartIdx );
    583590  UInt          getCtxAngleFlag        ( UInt   uiAbsPartIdx );
  • branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComPrediction.cpp

    r936 r939  
    500500  Pel* pDst = piPred;
    501501  xAssignBiSegDCs( pDst, uiStride, biSegPattern, patternStride, segDC1, segDC2 );
     502#if HS_DMM_SDC_PREDICTOR_UNIFY_H0108
     503  pcCU->setDmmPredictor(segDC1, 0);
     504  pcCU->setDmmPredictor(segDC2, 1);
     505#endif
    502506
    503507#if H_3D_DIM_DMM
     
    23242328  if (orgDC == false)
    23252329  {
     2330#if !HS_DMM_SDC_PREDICTOR_UNIFY_H0108
    23262331    if ( getDimType(uiIntraMode) == DMM1_IDX )
    23272332    {
     
    23692374    }
    23702375    else
     2376#endif
    23712377    {
    23722378      Pel* pLeftTop = pOrig;
  • branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComRom.cpp

    r872 r939  
    360360Char  g_aucConvertToBit  [ MAX_CU_SIZE+1 ];
    361361
     362#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     363UInt g_aICEnableCANDIDATE[10] = { 0, };
     364UInt g_aICEnableNUM[ 10 ] = { 0, };
     365Int g_lastlayer=0;
     366#endif
    362367#if ENC_DEC_TRACE
    363368FILE*  g_hTrace = NULL;
  • branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComRom.h

    r872 r939  
    189189extern       Char   g_aucConvertToBit  [ MAX_CU_SIZE+1 ];   // from width to log2(width)-2
    190190
     191#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     192extern UInt g_aICEnableCANDIDATE[10];
     193extern UInt g_aICEnableNUM[ 10 ]; //10 layers
     194extern Int g_lastlayer;
     195#endif
     196
    191197#ifndef ENC_DEC_TRACE
    192198#define ENC_DEC_TRACE   0
  • branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComSlice.cpp

    r884 r939  
    32203220#endif
    32213221#if H_3D_IC
     3222#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     3223Void TComSlice::xSetApplyIC(Bool bUseLowLatencyICEnc)
     3224#else
    32223225Void TComSlice::xSetApplyIC()
    3223 {
     3226#endif
     3227{
     3228#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     3229  if(bUseLowLatencyICEnc)
     3230  {
     3231    Bool existInterViewRef=false;
     3232    TComPic* pcCurrPic = getPic();
     3233    TComPic* pcRefPic = NULL;
     3234    for ( Int i = 0; (i < getNumRefIdx( REF_PIC_LIST_0 )) && !existInterViewRef; i++ )
     3235    {
     3236      pcRefPic = getRefPic( REF_PIC_LIST_0, i );
     3237      if ( pcRefPic != NULL )
     3238      {
     3239        if ( pcCurrPic->getViewIndex() != pcRefPic->getViewIndex() )
     3240        {
     3241          existInterViewRef = true;       
     3242        }
     3243      }
     3244    }
     3245
     3246    for ( Int i = 0; (i < getNumRefIdx( REF_PIC_LIST_1 )) && !existInterViewRef; i++ )
     3247    {
     3248      pcRefPic = getRefPic( REF_PIC_LIST_1, i );
     3249      if ( pcRefPic != NULL )
     3250      {
     3251        if ( pcCurrPic->getViewIndex() != pcRefPic->getViewIndex() )
     3252        {
     3253          existInterViewRef = true;       
     3254        }
     3255      }
     3256    }
     3257
     3258    if(!existInterViewRef)
     3259    {
     3260      m_bApplyIC = false;
     3261    }
     3262    else
     3263    {
     3264      Int curLayer=getDepth();
     3265      if( curLayer>9) curLayer=9; // Max layer is 10
     3266
     3267      m_bApplyIC = true;
     3268      Int refLayer = curLayer-1;
     3269      if( (refLayer>=0) && (g_aICEnableCANDIDATE[refLayer]>0) )
     3270      {   
     3271        Double ratio=Double(g_aICEnableNUM[refLayer])/Double(g_aICEnableCANDIDATE[refLayer]);
     3272
     3273        if( ratio > MTK_LOW_LATENCY_IC_ENCODING_THRESHOLD_H0086)
     3274{
     3275          m_bApplyIC=true;
     3276        }
     3277        else
     3278        {
     3279          m_bApplyIC=false;
     3280        }
     3281      }
     3282      g_aICEnableNUM[curLayer]=0;
     3283      g_aICEnableCANDIDATE[curLayer]=0;
     3284      g_lastlayer=getDepth();
     3285    }
     3286  }
     3287  else
     3288  {
     3289#endif
    32243290  Int iMaxPelValue = ( 1 << g_bitDepthY );
    32253291  Int *aiRefOrgHist;
     
    32953361  aiCurrHist = NULL;
    32963362  aiRefOrgHist = NULL;
     3363#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     3364  }//if(bUseLowLatencyICEnc)
     3365#endif
    32973366}
    32983367#endif
  • branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComSlice.h

    r884 r939  
    21792179  Bool      getApplyIC()                                        { return m_bApplyIC; }
    21802180  Void      xSetApplyIC();
     2181#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     2182  Void      xSetApplyIC(Bool bUseLowLatencyICEnc);
     2183#endif
    21812184  Void      setIcSkipParseFlag( Bool b )                        { m_icSkipParseFlag = b; }
    21822185  Bool      getIcSkipParseFlag()                                { return m_icSkipParseFlag; }
  • branches/HTM-10.2-dev0/source/Lib/TLibCommon/TypeDef.h

    r937 r939  
    120120                                              // SEC_IC_ARP_SIG_G0072, Disabling IC when ARP is enabled, option 1 in JCT3V-G0072, part 2 in JCT3V-G0121
    121121
     122#define MTK_LOW_LATENCY_IC_ENCODING_H0086   1 // Low-latency IC encoding in JCT3V-H0086
     123#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     124#define MTK_LOW_LATENCY_IC_ENCODING_THRESHOLD_H0086    0.1 // Threshold for low-latency IC encoding in JCT3V-H0086
     125#endif
     126
    122127#if H_3D_NBDV
    123128#define H_3D_NBDV_REF                     1   // Depth oriented neighboring block disparity derivation
     
    196201                                              // HS_TSINGHUA_SDC_SPLIT_G0111
    197202                                              // QC_PKU_SDC_SPLIT_G0123 Intra SDC Split
    198 
    199 
     203#define MTK_DELTA_DC_FLAG_ONE_CONTEXT_H0084_H0100_H0113     1 // Use only one context for CABAC of delta_dc_flag as in JCTVC-H0084, JCTVC-H0100 and JCTVC-H0113
     204#define MTK_SDC_FLAG_FIX_H0095            1   // Remove conditional check of PCM flag based on SDC flag, JCTVC-H0095
     205
     206
     207#define MTK_DMM_SIMP_CODE_H0092           1   // Remove CABAC context for DMM1 mode coding
    200208
    201209#define H_3D_INTER_SDC                    1   // INTER SDC, Inter simplified depth coding
     
    222230#define H_3D_FAST_TEXTURE_ENCODING        1   // Fast merge mode decision and early CU determination for texture component of dependent view, JCT3V-E0173
    223231                                              // MTK_FAST_TEXTURE_ENCODING_E0173
     232#define QC_IV_PRED_CONSTRAINT_H0137       1   // Constraint on inter-view (motion) prediction tools
    224233#if H_3D_DIM
    225234#define H_3D_FAST_DEPTH_INTRA             1   // Fast DMM and RBC Mode Selection
     
    275284#define H_3D_DIM_DLT                      1   // Depth Lookup Table
    276285
     286#define HS_DMM_SDC_PREDICTOR_UNIFY_H0108  1   // Unification of DMM and SDC predictor derivation
     287#define LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135  1 // Use only one context for CABAC of dim_not_present_flag
     288#define QC_SIMP_DELTADC_CODING_H0131      1   // Simplify detaDC entropy coding
    277289#if H_3D_DIM_DLT
    278290#define H_3D_DELTA_DLT                    1
  • branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r936 r939  
    17591759#if H_3D_IV_MERGE
    17601760        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
    17611767#if H_3D_SPIVMP
    17621768        READ_UVLC (uiCode, "log2_sub_PU_size_minus3[i]");     pcVPS->setSubPULog2Size(i, uiCode+3);
     
    17651771#if H_3D_ARP
    17661772        READ_FLAG( uiCode, "iv_res_pred_flag[i]"  );       pcVPS->setUseAdvRP  ( i, uiCode ); pcVPS->setARPStepNum( i, uiCode ? H_3D_ARP_WFNR : 1 );
    1767 
     1773#if QC_IV_PRED_CONSTRAINT_H0137
     1774        if( !pcVPS->getNumDirectRefLayers(i) )
     1775        {
     1776          assert( !uiCode );         
     1777        }
     1778#endif
    17681779#endif
    17691780#if H_3D_NBDV_REF
     
    17721783#if H_3D_VSP
    17731784        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
    17741791#endif
    17751792#if H_3D_DBBP
     
    17831800        {
    17841801          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
    17851808        }
    17861809#endif
  • branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecCu.cpp

    r937 r939  
    12571257  // get DC prediction for each segment
    12581258  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
    12591267  m_pcPrediction->analyzeSegmentsSDC(piPred, uiStride, uiWidth, apDCPredValues, uiNumSegments, pbMask, uiMaskStride, uiLumaPredMode);
    12601268 
  • branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecEntropy.cpp

    r938 r939  
    210210    return;
    211211  }
     212#if !MTK_SDC_FLAG_FIX_H0095
    212213#if H_3D_DIM_SDC
    213214  if( pcCU->getSDCFlag(uiAbsPartIdx) )
     
    215216    return;
    216217  }
     218#endif
    217219#endif
    218220 
  • branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecSbac.cpp

    r936 r939  
    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    {
  • branches/HTM-10.2-dev0/source/Lib/TLibDecoder/TDecSbac.h

    r884 r939  
    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
  • branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncCfg.h

    r884 r939  
    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
  • branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp

    r936 r939  
    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 );
     
    281290    return;
    282291  }
     292#if !MTK_SDC_FLAG_FIX_H0095
    283293#if H_3D_DIM_SDC
    284294  if( pcCU->getSDCFlag(uiAbsPartIdx) )
     
    286296    return;
    287297  }
     298#endif
    288299#endif
    289300 
  • branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSbac.cpp

    r936 r939  
    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
  • branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSbac.h

    r884 r939  
    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
  • branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSearch.cpp

    r937 r939  
    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
  • branches/HTM-10.2-dev0/source/Lib/TLibEncoder/TEncSlice.cpp

    r872 r939  
    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.