Ignore:
Timestamp:
9 Apr 2014, 09:39:39 (11 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/source/Lib/TLibCommon
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.