Changeset 902 in 3DVCSoftware


Ignore:
Timestamp:
9 Apr 2014, 09:39:39 (10 years ago)
Author:
mediatek-htm
Message:

Integration of low-latency IC encoding as proposed in JCT3V-H0086.
The MACRO is "MTK_LOW_LATENCY_IC_ENCODING_H0086"
The configuration files are modified by adding one additional control parameter "IlluCompLowLatencyEnc" which is set to 0 for CTC.

By Yi-Wen Chen (yiwen.chen@…)

Location:
branches/HTM-10.2-dev3-MediaTek
Files:
2 added
16 edited

Legend:

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

    r872 r902  
    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-dev3-MediaTek/cfg/3D-HEVC/baseCfg_2view.cfg

    r872 r902  
    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-dev3-MediaTek/cfg/3D-HEVC/baseCfg_3view+depth.cfg

    r872 r902  
    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-dev3-MediaTek/cfg/3D-HEVC/baseCfg_3view.cfg

    r872 r902  
    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-dev3-MediaTek/cfg/3D-HEVC/fullCfg.cfg

    r872 r902  
    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-dev3-MediaTek/source/App/TAppEncoder/TAppEncCfg.cpp

    r884 r902  
    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-dev3-MediaTek/source/App/TAppEncoder/TAppEncCfg.h

    r884 r902  
    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-dev3-MediaTek/source/App/TAppEncoder/TAppEncTop.cpp

    r884 r902  
    189189#if H_3D_IC
    190190    m_cTEncTop.setUseIC                        ( vps.getViewIndex( layerId ) == 0 || isDepth ? false : m_abUseIC );
     191#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     192    m_cTEncTop.setUseICLowLatencyEnc           ( m_bUseLowLatencyICEnc );
     193#endif
    191194#endif
    192195  //========== Depth intra modes ==========
  • branches/HTM-10.2-dev3-MediaTek/source/Lib/TLibCommon/TComRom.cpp

    r872 r902  
    359359
    360360Char  g_aucConvertToBit  [ MAX_CU_SIZE+1 ];
    361 
     361#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     362UInt g_aICEnableCANDIDATE[10] = { 0, };
     363UInt g_aICEnableNUM[ 10 ] = { 0, };
     364Int g_lastlayer=0;
     365#endif
    362366#if ENC_DEC_TRACE
    363367FILE*  g_hTrace = NULL;
  • branches/HTM-10.2-dev3-MediaTek/source/Lib/TLibCommon/TComRom.h

    r872 r902  
    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-dev3-MediaTek/source/Lib/TLibCommon/TComSlice.cpp

    r884 r902  
    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-dev3-MediaTek/source/Lib/TLibCommon/TComSlice.h

    r884 r902  
    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-dev3-MediaTek/source/Lib/TLibCommon/TypeDef.h

    r888 r902  
    118118                                              // MTK_IC_FLAG_CABAC_SIMP_G0061
    119119                                              // SEC_IC_ARP_SIG_G0072, Disabling IC when ARP is enabled, option 1 in JCT3V-G0072, part 2 in JCT3V-G0121
     120
     121#define MTK_LOW_LATENCY_IC_ENCODING_H0086   1 // Low-latency IC encoding in JCT3V-H0086
     122#if MTK_LOW_LATENCY_IC_ENCODING_H0086
     123#define MTK_LOW_LATENCY_IC_ENCODING_THRESHOLD_H0086    0.1 // Threshold for low-latency IC encoding in JCT3V-H0086
     124#endif
    120125
    121126#if H_3D_NBDV
  • branches/HTM-10.2-dev3-MediaTek/source/Lib/TLibEncoder/TEncCfg.h

    r884 r902  
    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-dev3-MediaTek/source/Lib/TLibEncoder/TEncEntropy.cpp

    r884 r902  
    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 );
  • branches/HTM-10.2-dev3-MediaTek/source/Lib/TLibEncoder/TEncSlice.cpp

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