Changeset 1170 in 3DVCSoftware for branches/HTM-13.1-dev0/source/Lib


Ignore:
Timestamp:
5 Apr 2015, 22:49:22 (10 years ago)
Author:
tech
Message:

K0050: Signaling of inter-component prediction.

Location:
branches/HTM-13.1-dev0/source/Lib
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-13.1-dev0/source/Lib/TLibCommon/TComSlice.cpp

    r1163 r1170  
    137137#endif
    138138#if H_3D
     139#if HHI_INTER_COMP_PRED_K0052
     140, m_inCmpPredFlag                 ( false )
     141#endif
    139142, m_depthToDisparityB             ( NULL )
    140143, m_depthToDisparityF             ( NULL )
     
    185188  m_iDefaultRefViewIdx = -1;
    186189  m_bDefaultRefViewIdxAvailableFlag = false;
     190#if HHI_INTER_COMP_PRED_K0052
     191  m_ivMvPredFlag           = false;
     192  m_ivMvScalingFlag        = false;
     193  m_ivResPredFlag          = false; 
     194  m_depthRefinementFlag    = false;
     195  m_viewSynthesisPredFlag  = false;
     196  m_depthBasedBlkPartFlag  = false;
     197  m_mpiFlag                = false;
     198  m_intraContourFlag       = false;
     199  m_intraSdcWedgeFlag      = false;
     200  m_qtPredFlag             = false;
     201  m_interSdcFlag           = false;
     202  m_depthIntraSkipFlag     = false;
     203  m_subPbSize              =  1 << 6;
     204  m_mpiSubPbSize           =  1 << 6;
     205#endif
    187206}
    188207
     
    21552174{
    21562175  m_numViews = 1;
    2157 #if HHI_VIEW_ID_LIST_I5_J0107
     2176#if HHI_VIEW_ID_LIST_I5_J0107 || HHI_INTER_COMP_PRED_K0052
    21582177#if H_3D
    21592178  AOF( m_viewOIdxList.size() == 0 );
     2179 
    21602180  m_viewOIdxList.push_back( 0 );       
    21612181#endif
     
    21782198      {
    21792199        m_numViews++;
    2180 #if HHI_VIEW_ID_LIST_I5_J0107
     2200#if HHI_VIEW_ID_LIST_I5_J0107  || HHI_INTER_COMP_PRED_K0052
    21812201#if H_3D
    21822202        m_viewOIdxList.push_back( getViewOrderIdx( lId ) );       
     
    40314051
    40324052#if H_3D
    4033 
    40344053Void TComSlice::init3dToolParameters()
    40354054{
    40364055  Bool depthFlag = getIsDepth();
    40374056
     4057#if !HHI_INTER_COMP_PRED_K0052
    40384058  Bool depthOfRefViewsAvailFlag = false;
    40394059  Bool textOfCurViewAvailFlag = false;
    4040 
     4060#endif
     4061
     4062 
     4063
     4064#if !HHI_INTER_COMP_PRED_K0052
    40414065  TComVPS* vps = getVPS();
    40424066
     
    40804104    }
    40814105  }
     4106
    40824107
    40834108  Bool lidG0  = ( getLayerId() > 0 );
     
    41054130  m_subPbSize              = lidG0 ? ( 1 << ( sps3dExt->getLog2SubPbSizeMinus3   ( depthFlag ) + 3 ) ) : getSPS()->getMaxCUWidth(); 
    41064131  m_mpiSubPbSize           = 1 << ( sps3dExt->getLog2MpiSubPbSizeMinus3( depthFlag ) + 3 );
     4132#else
     4133  Bool nRLLG0 =  ( getVPS()->getNumRefListLayers( getLayerId() ) > 0 );     
     4134
     4135  TComSps3dExtension* sps3dExt = getSPS()->getSps3dExtension();
     4136
     4137  m_ivMvPredFlag           = sps3dExt->getIvMvPredFlag         ( depthFlag ) && nRLLG0                       ;                             
     4138  m_ivMvScalingFlag        = sps3dExt->getIvMvScalingFlag      ( depthFlag )                                 ;                             
     4139  m_ivResPredFlag          = sps3dExt->getIvResPredFlag        ( depthFlag ) && nRLLG0                       ;                               
     4140  m_depthRefinementFlag    = sps3dExt->getDepthRefinementFlag  ( depthFlag )           && getInCompPredFlag();                           
     4141  m_viewSynthesisPredFlag  = sps3dExt->getViewSynthesisPredFlag( depthFlag ) && nRLLG0 && getInCompPredFlag();                         
     4142  m_depthBasedBlkPartFlag  = sps3dExt->getDepthBasedBlkPartFlag( depthFlag )           && getInCompPredFlag();                         
     4143  m_mpiFlag                = sps3dExt->getMpiFlag              ( depthFlag )           && getInCompPredFlag();
     4144  m_intraContourFlag       = sps3dExt->getIntraContourFlag     ( depthFlag )           && getInCompPredFlag();
     4145  m_intraSdcWedgeFlag      = sps3dExt->getIntraSdcWedgeFlag    ( depthFlag )                                 ;                         
     4146  m_qtPredFlag             = sps3dExt->getQtPredFlag           ( depthFlag )           && getInCompPredFlag();
     4147  m_interSdcFlag           = sps3dExt->getInterSdcFlag         ( depthFlag )                                 ; 
     4148  m_depthIntraSkipFlag     = sps3dExt->getDepthIntraSkipFlag   ( depthFlag )                                 ;                         
     4149
     4150  m_subPbSize              =  1 << ( sps3dExt->getLog2SubPbSizeMinus3   ( depthFlag ) + 3 ); 
     4151  m_mpiSubPbSize           =  1 << ( sps3dExt->getLog2MpiSubPbSizeMinus3( depthFlag ) + 3 );
     4152
     4153#endif
    41074154
    41084155#if H_3D_OUTPUT_ACTIVE_TOOLS
     
    41104157  std::cout << "DepthFlag:              :" << getIsDepth()             << std::endl;
    41114158  std::cout << "ViewOrderIdx:           :" << getViewIndex()           << std::endl;
     4159#if HHI_INTER_COMP_PRED_K0052
     4160  std::cout << "InterCmpPredAvailableFlag:" << getInCmpPredAvailFlag() << std::endl;
     4161  std::cout << "InterCompPredFlag       :"  << getInCompPredFlag()     << std::endl;
     4162  //std::cout << "TextOfCurViewAvailFlag  :" << textOfCurViewAvailFlag   << std::endl;
     4163#else
    41124164  std::cout << "DepthOfRefViewsAvailFlag:" << depthOfRefViewsAvailFlag << std::endl;
    41134165  std::cout << "TextOfCurViewAvailFlag  :" << textOfCurViewAvailFlag   << std::endl;
     4166#endif
    41144167 
    41154168  std::cout << "ivMvPredFlag            :" << m_ivMvPredFlag           << std::endl;
  • branches/HTM-13.1-dev0/source/Lib/TLibCommon/TComSlice.h

    r1169 r1170  
    920920  Int         ***m_aaaiCodedOffset;
    921921
    922 #if HHI_VIEW_ID_LIST_I5_J0107
     922#if HHI_VIEW_ID_LIST_I5_J0107 ||  HHI_INTER_COMP_PRED_K0052
    923923  std::vector<Int>  m_viewOIdxList;
    924924#endif
    925 
     925#if HHI_INTER_COMP_PRED_K0052
     926  std::vector< std::vector<Bool> > m_viewCompLayerPresentFlag;
     927  std::vector< std::vector<Int>  > m_viewCompLayerId;
     928#endif
    926929#endif
    927930
     
    11521155  Int     getNumViews()                                                    { return m_numViews; }
    11531156  Void    initNumViews();
    1154 #if HHI_VIEW_ID_LIST_I5_J0107
     1157#if HHI_INTER_COMP_PRED_K0052
     1158#if H_3D
     1159  Void   initViewCompLayer( )
     1160  {
     1161    assert( m_viewCompLayerId.size() == 0 && m_viewCompLayerPresentFlag.size() == 0  );
     1162    for( Int i = 0; i < getNumViews(); i++ )
     1163    {
     1164      m_viewCompLayerId         .push_back( std::vector<Int>(0)  );
     1165      m_viewCompLayerPresentFlag.push_back( std::vector<Bool>(0) );     
     1166
     1167      for( Int depFlag = 0; depFlag  <=  1; depFlag++ )
     1168      {
     1169        Int iViewOIdx = getViewOIdxList( i );
     1170        Int layerId = -1;
     1171        for( Int j = 0; j  <=  getMaxLayersMinus1(); j++ )
     1172        {
     1173          Int jNuhLId = getLayerIdInNuh( j );
     1174          if( getVpsDepthFlag( jNuhLId ) == ( (Bool) depFlag )  &&  getViewOrderIdx( jNuhLId )  ==  iViewOIdx 
     1175            &&  getDependencyId( jNuhLId )  ==  0  &&  getAuxId( jNuhLId )  ==  0 )
     1176          {
     1177            layerId = jNuhLId;
     1178          }
     1179        }
     1180        m_viewCompLayerPresentFlag[ i ].push_back( layerId  !=  -1 );
     1181        m_viewCompLayerId         [ i ].push_back( layerId );       
     1182      }
     1183    }
     1184  };
     1185#endif
     1186#endif
     1187
     1188#if HHI_VIEW_ID_LIST_I5_J0107 || HHI_INTER_COMP_PRED_K0052
    11551189  Int     getViewOIdxList( Int i )                                         { return m_viewOIdxList[i]; }
    11561190#endif
    1157 
     1191#if HHI_INTER_COMP_PRED_K0052
     1192  Int     getInvViewOIdxList( Int viewOIdx )                                     
     1193  {   
     1194    for ( Int i = 0; i < m_viewOIdxList.size(); i++ )
     1195    {
     1196      if  ( m_viewOIdxList[ i ] == viewOIdx )
     1197      {
     1198        return i;
     1199      }
     1200    }
     1201    assert( 0 );   
     1202    return -1;
     1203  };
     1204  Bool    getViewCompLayerPresentFlag (Int i, Bool d ) { return  m_viewCompLayerPresentFlag[ getInvViewOIdxList(i) ][d]; }
     1205  Bool    getViewCompLayerId          (Int i, Bool d ) { return  m_viewCompLayerId         [ getInvViewOIdxList(i) ][d]; }
     1206#endif
    11581207  Bool    getDependencyFlag( Int i, Int j )                                { return m_dependencyFlag[i][j]; }
    11591208  Int     getNumDirectRefLayers( Int layerIdInNuh )                        { return m_numDirectRefLayers[ layerIdInNuh ];  };                               
     
    23902439#endif
    23912440#if H_3D
     2441#if HHI_INTER_COMP_PRED_K0052
     2442  std::vector<Int> m_inCmpRefViewIdcs;
     2443  Bool       m_inCmpPredAvailFlag;
     2444  Bool       m_inCmpPredFlag;
     2445#endif
    23922446  TComPic*   m_ivPicsCurrPoc [2][MAX_NUM_LAYERS]; 
    23932447  Int**      m_depthToDisparityB;
     
    24922546  Int       getRefPOC           ( RefPicList e, Int iRefIdx)    { return  m_aiRefPOCList[e][iRefIdx];   }
    24932547#if H_3D
     2548#if HHI_INTER_COMP_PRED_K0052
     2549  Bool      getInCmpPredAvailFlag( )                             { return m_inCmpPredAvailFlag;    }
     2550  Bool      getInCompPredFlag( )                                 { return m_inCmpPredFlag;         }   
     2551  Void      setInCompPredFlag( Bool b )                          { m_inCmpPredFlag = b;            }   
     2552  Int       getInCmpRefViewIdcs( Int i )                         { return m_inCmpRefViewIdcs  [i]; }
     2553  Int       getNumCurCmpLIds( )                                  { return (Int) m_inCmpRefViewIdcs.size(); }
     2554#endif
    24942555  TComPic*  getIvPic            ( Bool depthFlag, Int viewIndex){ return  m_ivPicsCurrPoc[ depthFlag ? 1 : 0 ][ viewIndex ]; }
    24952556#endif
     
    25932654  UInt getTLayer             ()                            { return m_uiTLayer;                      }
    25942655  Void setTLayer             ( UInt uiTLayer )             { m_uiTLayer = uiTLayer;                  }
     2656#if H_MV
     2657  Int getTemporalId          ( )                           { return (Int) m_uiTLayer;                }
     2658#endif
    25952659
    25962660  Void setTLayerInfo( UInt uiTLayer );
     
    28352899#if H_3D
    28362900  // 3D-HEVC tool parameters
     2901#if HHI_INTER_COMP_PRED_K0052
     2902  Void deriveInCmpPredAndCpAvailFlag()
     2903  {
     2904    Int numCurCmpLIds = getIsDepth() ? 1 : getNumActiveRefLayerPics();
     2905    std::vector<Int> curCmpLIds;
     2906    if ( getIsDepth() )
     2907    {
     2908      curCmpLIds.push_back( getLayerId() );
     2909    }
     2910    else
     2911    {
     2912      for (Int i = 0; i < numCurCmpLIds; i++)
     2913      {
     2914        curCmpLIds.push_back( getRefPicLayerId( i ) );
     2915      }
     2916    }
     2917
     2918    // m_cpAvailableFlag = true;
     2919    Bool allRefCmpLayersAvailFlag = true;
     2920
     2921    for( Int i = 0; i <= numCurCmpLIds - 1; i++ )
     2922    {
     2923      m_inCmpRefViewIdcs.push_back( getVPS()->getViewOrderIdx( curCmpLIds[ i ] ));
     2924      //if( !getVPS()->getCpPresentFlag( getViewIdx(),  inCmpRefViewIdcs( i ) ) )
     2925      //{
     2926      //  m_cpAvailableFlag = false;
     2927      //}
     2928      Bool refCmpCurLIdAvailFlag = false;
     2929      if( getVPS()->getViewCompLayerPresentFlag( m_inCmpRefViewIdcs[ i ], !getIsDepth() ) )
     2930      {
     2931        Int j = getVPS()->getLayerIdInVps( getVPS()->getViewCompLayerId( m_inCmpRefViewIdcs[ i ],  !getIsDepth() ) );
     2932        if  ( getVPS()->getDirectDependencyFlag( getVPS()->getLayerIdInVps( getLayerId() ) ,  j ) &&
     2933          getVPS()->getSubLayersVpsMaxMinus1( j ) >= getTemporalId()   &&
     2934          ( getTemporalId() == 0 || getVPS()->getMaxTidIlRefPicsPlus1( j , getVPS()->getLayerIdInVps( getLayerId() ) ) > getTemporalId() )       
     2935          )
     2936        {
     2937          refCmpCurLIdAvailFlag = true;
     2938        }
     2939      }
     2940      if( !refCmpCurLIdAvailFlag )
     2941      {
     2942        allRefCmpLayersAvailFlag = false;
     2943      }
     2944    }
     2945
     2946    if( !allRefCmpLayersAvailFlag )
     2947    {
     2948      m_inCmpPredAvailFlag = false;
     2949    } 
     2950    else
     2951    {
     2952      TComSps3dExtension* sps3dExt = getSPS()->getSps3dExtension();
     2953      if( !getIsDepth() )
     2954      {
     2955        m_inCmpPredAvailFlag = sps3dExt->getViewSynthesisPredFlag( getIsDepth() ) ||
     2956          sps3dExt->getDepthBasedBlkPartFlag( getIsDepth() ) ||
     2957          sps3dExt->getDepthRefinementFlag  ( getIsDepth() );                           
     2958      }
     2959      else
     2960      {
     2961        m_inCmpPredAvailFlag = sps3dExt->getIntraContourFlag( getIsDepth() ) ||
     2962          sps3dExt->getQtPredFlag( getIsDepth() ) ||
     2963          sps3dExt->getMpiFlag( getIsDepth() );                                 
     2964      }
     2965    } 
     2966  };
     2967
     2968#endif
     2969
    28372970  Void init3dToolParameters();   
     2971#if HHI_INTER_COMP_PRED_K0052
     2972  Void checkInCompPredRefLayers()
     2973  {
     2974    if ( getInCompPredFlag() )
     2975    {
     2976      for (Int i = 0; i < getNumCurCmpLIds(); i++ )
     2977      {
     2978        assert( getIvPic(!getIsDepth(), getInCmpRefViewIdcs( i ) ) != NULL );       
     2979        // It is a requirement of bitstream conformance that there
     2980        // is a picture in the DPB with PicOrderCntVal equal to the PicOrderCntVal of the current picture,
     2981        // and a nuh_layer_id value equal to ViewCompLayerId[ inCmpRefViewIdcs[ i ] ][ !DepthFlag ].
     2982      }
     2983    }
     2984  };
     2985
     2986#endif
    28382987  Bool getIvMvPredFlag           ( ) { return m_ivMvPredFlag           ; };
    28392988  Bool getIvMvScalingFlag        ( ) { return m_ivMvScalingFlag        ; };
  • branches/HTM-13.1-dev0/source/Lib/TLibCommon/TypeDef.h

    r1169 r1170  
    8181
    8282#if H_MV
    83 #define H_MV_ENC_DEC_TRAC                 0  //< CU/PU level tracking
     83#define H_MV_ENC_DEC_TRAC                 1  //< CU/PU level tracking
    8484#endif
    8585
    8686#if H_3D
    8787#define SEC_DEPTH_INTRA_SKIP_MODE_K0033   1   // Depth intra skip mode
     88
    8889#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
    8990#define NEIGHBORING_PIX_AVAILABILITY_FIX  1
     
    331332#if H_3D
    332333#define HHI_VIEW_ID_LIST_I5_J0107              0
     334#define HHI_INTER_COMP_PRED_K0052              1
     335#define H_3D_ANNEX_SELECTION_FIX               1
     336
    333337#endif
    334338#define H_MV_FIX_REF_LAYER_PIC_FLAG            1
  • branches/HTM-13.1-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r1169 r1170  
    3939#include "SEIread.h"
    4040#include "TDecSlice.h"
    41 
     41#if H_3D_ANNEX_SELECTION_FIX
     42#include "TDecTop.h"
     43#endif
    4244//! \ingroup TLibDecoder
    4345//! \{
     
    13301332  }
    13311333
     1334#if HHI_INTER_COMP_PRED_K0052
     1335#if H_3D
     1336  pcVPS->initViewCompLayer( );
     1337#endif
     1338#endif
    13321339
    13331340  for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ )
     
    20282035#endif
    20292036  rpcSlice->setSPS(sps);
     2037#if !HHI_INTER_COMP_PRED_K0052
    20302038#if H_3D
    20312039  rpcSlice->init3dToolParameters();
     2040#endif
    20322041#endif
    20332042  rpcSlice->setPPS(pps);
     
    24242433      }
    24252434    }
     2435#if HHI_INTER_COMP_PRED_K0052
     2436#if H_3D
     2437    if ( getDecTop()->decProcAnnexI() )
     2438    {   
     2439      rpcSlice->deriveInCmpPredAndCpAvailFlag();
     2440      if ( rpcSlice->getInCmpPredAvailFlag() )
     2441      {
     2442        READ_FLAG(uiCode, "in_comp_pred_flag");  rpcSlice->setInCompPredFlag((Bool)uiCode);     
     2443      }
     2444      rpcSlice->init3dToolParameters();
     2445    }
     2446#endif
     2447#endif
    24262448#endif
    24272449    if(sps->getUseSAO())
     
    26052627    }
    26062628#if H_3D_IC
     2629#if H_3D_ANNEX_SELECTION_FIX
     2630    else if(    rpcSlice->getViewIndex() && ( rpcSlice->getSliceType() == P_SLICE || rpcSlice->getSliceType() == B_SLICE )
     2631             && !rpcSlice->getIsDepth() && vps->getNumRefListLayers( layerId ) > 0
     2632             && getDecTop()->decProcAnnexI()
     2633           )
     2634#else
    26072635    else if( rpcSlice->getViewIndex() && ( rpcSlice->getSliceType() == P_SLICE || rpcSlice->getSliceType() == B_SLICE ) && !rpcSlice->getIsDepth() && vps->getNumRefListLayers( layerId ) > 0 )
     2636#endif
    26082637    {
    26092638      UInt uiCodeTmp = 0;
  • branches/HTM-13.1-dev0/source/Lib/TLibDecoder/TDecCAVLC.h

    r1163 r1170  
    5252// Class definition
    5353// ====================================================================================================================
     54#if H_3D_ANNEX_SELECTION_FIX
     55class TDecTop;
     56#endif
    5457
    5558/// CAVLC decoder class
     
    6770  Int**    m_aaiTempOffset;
    6871#endif
     72#if H_3D_ANNEX_SELECTION_FIX
     73  TDecTop*  m_decTop;
     74#endif
     75
    6976
    7077public:
     
    108115  Void  parsePPS            ( TComPPS* pcPPS);
    109116#endif
    110 
     117#if H_3D_ANNEX_SELECTION_FIX
     118  Void  setDecTop           ( TDecTop* decTop ) { m_decTop = decTop; };
     119#endif
    111120  Void  parseVUI            ( TComVUI* pcVUI, TComSPS* pcSPS );
    112121  Void  parseSEI            ( SEIMessages& );
     
    170179  Void  parseScalingList               ( TComScalingList* scalingList );
    171180  Void xDecodeScalingList    ( TComScalingList *scalingList, UInt sizeId, UInt listId);
     181
     182#if H_3D_ANNEX_SELECTION_FIX
     183  TDecTop*  getDecTop()      { return m_decTop; };
     184#endif
     185
    172186protected:
    173187  Bool  xMoreRbspData();
  • branches/HTM-13.1-dev0/source/Lib/TLibDecoder/TDecEntropy.cpp

    r1169 r1170  
    547547
    548548#if H_MV_ENC_DEC_TRAC
     549#if ENC_DEC_TRACE
    549550  UInt uiLPelX   = pcCU->getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[uiAbsPartIdx] ];
    550551  UInt uiTPelY   = pcCU->getCUPelY() + g_auiRasterToPelY[ g_auiZscanToRaster[uiAbsPartIdx] ];
     
    555556  DTRACE_TU("log2TrafoSize", g_uiMaxCUWidth>>uiDepth)
    556557  DTRACE_TU("trafoDepth"  , uiDepth)
     558#endif
    557559#endif
    558560
  • branches/HTM-13.1-dev0/source/Lib/TLibDecoder/TDecGop.cpp

    r1084 r1170  
    9292  m_pcSliceDecoder        = pcSliceDecoder;
    9393  m_pcLoopFilter          = pcLoopFilter;
    94   m_pcSAO  = pcSAO;
     94  m_pcSAO  = pcSAO; 
    9595}
    9696
  • branches/HTM-13.1-dev0/source/Lib/TLibDecoder/TDecGop.h

    r872 r1170  
    5656#include "TDecBinCoderCABAC.h"
    5757
     58
    5859//! \ingroup TLibDecoder
    5960//! \{
     
    6263// Class definition
    6364// ====================================================================================================================
     65#if H_3D_ANNEX_SELECTION_FIX
     66class TDecTop;
     67#endif
     68
    6469
    6570/// GOP decoder class
     
    7883  TDecSlice*            m_pcSliceDecoder;
    7984  TComLoopFilter*       m_pcLoopFilter;
     85#if H_3D_ANNEX_SELECTION_FIX
     86  TDecTop*              m_decTop;
     87#endif
    8088 
    8189  TComSampleAdaptiveOffset*     m_pcSAO;
  • branches/HTM-13.1-dev0/source/Lib/TLibDecoder/TDecTop.cpp

    r1164 r1170  
    418418  initROM();
    419419#endif
     420#if H_3D_ANNEX_SELECTION_FIX
     421  m_cCavlcDecoder.setDecTop( this );
     422#endif
    420423  m_cGopDecoder.init( &m_cEntropyDecoder, &m_cSbacDecoder, &m_cBinCABAC, &m_cCavlcDecoder, &m_cSliceDecoder, &m_cLoopFilter, &m_cSAO );
    421424  m_cSliceDecoder.init( &m_cEntropyDecoder, &m_cCuDecoder );
     
    727730#endif
    728731#if H_3D
     732#if !HHI_INTER_COMP_PRED_K0052
    729733  m_apcSlicePilot->init3dToolParameters();
     734#endif
    730735#endif
    731736  pps->setSPS(sps);
     
    11251130#if H_3D
    11261131    pcSlice->setIvPicLists( m_ivPicLists );         
     1132
     1133#if HHI_INTER_COMP_PRED_K0052
     1134    pcSlice->checkInCompPredRefLayers();
    11271135#if H_3D_IV_MERGE
    11281136#if H_3D_FCO
     
    11321140#endif
    11331141#endif   
     1142#else
     1143#if H_3D_IV_MERGE
     1144#if H_3D_FCO
     1145    //assert( !getIsDepth() );
     1146#else
     1147    assert( !getIsDepth() || ( pcSlice->getTexturePic() != 0 ) );
     1148#endif
     1149#endif   
     1150#endif
    11341151#endif
    11351152#if H_MV
  • branches/HTM-13.1-dev0/source/Lib/TLibDecoder/TDecTop.h

    r1133 r1170  
    243243  CamParsCollector*       m_pcCamParsCollector;
    244244#endif
     245#if H_3D_ANNEX_SELECTION_FIX
     246  Int                     m_profileIdc;
     247#endif
    245248#endif
    246249
     
    301304  Void                    setCamParsCollector( CamParsCollector* pcCamParsCollector ) { m_pcCamParsCollector = pcCamParsCollector; }
    302305#endif
     306#if H_3D_ANNEX_SELECTION_FIX
     307  Void                    setProfileIdc()
     308  {       
     309    if (m_targetOptLayerSetIdx != -1 )
     310    {   
     311      TComVPS* vps = getPrefetchedVPS();
     312      Int lsIdx = vps->olsIdxToLsIdx( m_targetOptLayerSetIdx );
     313      Int lIdx = -1;
     314      for (Int j = 0; j < vps->getNumLayersInIdList( lsIdx ); j++ )
     315      {
     316        if ( vps->getLayerSetLayerIdList( lsIdx, j ) == getLayerId() )
     317        {
     318          lIdx = j;
     319          break;
     320        }       
     321      }
     322      assert( lIdx != -1 );
     323
     324      Int profileIdc = vps->getPTL( vps->getProfileTierLevelIdx( m_targetOptLayerSetIdx, lIdx ) )->getGeneralPTL()->getProfileIdc();
     325      assert( profileIdc == 1 || profileIdc == 6 || profileIdc == 8 );
     326      m_profileIdc = profileIdc;   
     327    };
     328  }
     329  Bool                    decProcAnnexI()           { assert( m_profileIdc != -1 ); return ( m_profileIdc == 8); }   
     330#endif
     331
    303332#endif
    304333protected:
  • branches/HTM-13.1-dev0/source/Lib/TLibEncoder/TEncCavlc.cpp

    r1169 r1170  
    4040#include "SEIwrite.h"
    4141#include "../TLibCommon/TypeDef.h"
    42 
     42#if H_3D_ANNEX_SELECTION_FIX
     43#include "TEncTop.h"
     44#endif
    4345//! \ingroup TLibEncoder
    4446//! \{
     47
    4548
    4649#if ENC_DEC_TRACE
     
    899902      WRITE_FLAG( sps3dExt->getInterSdcFlag( d ) ? 1 : 0 , "inter_sdc_flag" );
    900903#if SEC_DEPTH_INTRA_SKIP_MODE_K0033
    901       WRITE_FLAG( sps3dExt->getDepthIntraSkipFlag( d ) ? 1 : 0 , "depth_intra_skip_flag" );
     904      WRITE_FLAG( sps3dExt->getDepthIntraSkipFlag( d ) ? 1 : 0 , "intra_skip_flag" );
    902905#else
    903906      WRITE_FLAG( sps3dExt->getIntraSingleFlag( d ) ? 1 : 0 , "intra_single_flag" );
     
    19131916    }
    19141917#endif
     1918
     1919#if HHI_INTER_COMP_PRED_K0052
     1920#if H_3D     
     1921  if( getEncTop()->decProcAnnexI() )
     1922  {
     1923      if ( pcSlice->getInCmpPredAvailFlag() )
     1924      {
     1925        WRITE_FLAG( pcSlice->getInCompPredFlag(), "in_comp_pred_flag" );
     1926      }
     1927  }
     1928#endif
     1929#endif
    19151930    if(pcSlice->getSPS()->getUseSAO())
    19161931    {
     
    20432058    }
    20442059#if H_3D_IC
     2060#if H_3D_ANNEX_SELECTION_FIX
     2061    else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE )
     2062      && !pcSlice->getIsDepth() && vps->getNumRefListLayers( layerId ) > 0
     2063      && getEncTop()->decProcAnnexI()       
     2064      )
     2065#else
    20452066    else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE ) && !pcSlice->getIsDepth() && vps->getNumRefListLayers( layerId ) > 0 )
     2067#endif
    20462068    {
    20472069      WRITE_FLAG( pcSlice->getApplyIC() ? 1 : 0, "slice_ic_enable_flag" );
  • branches/HTM-13.1-dev0/source/Lib/TLibEncoder/TEncCavlc.h

    r1163 r1170  
    6868  TComSlice*    m_pcSlice;
    6969  UInt          m_uiCoeffCost;
    70 
     70#if H_3D_ANNEX_SELECTION_FIX
     71  TEncTop*      m_encTop;
     72#endif
    7173  Void codeShortTermRefPicSet              ( TComSPS* pcSPS, TComReferencePictureSet* pcRPS, Bool calledFromSliceHeader, Int idx );
    7274  Bool findMatchingLTRP ( TComSlice* pcSlice, UInt *ltrpsIndex, Int ltrpPOC, Bool usedFlag );
     
    185187  Void codeDFFlag       ( UInt uiCode, const Char *pSymbolName );
    186188  Void codeDFSvlc       ( Int   iCode, const Char *pSymbolName );
    187 
     189#if H_3D_ANNEX_SELECTION_FIX
     190  TEncTop* getEncTop()               { return m_encTop; };
     191  Void     setEncTop( TEncTop* et )  {  m_encTop = et; };
     192#endif
    188193};
    189194
  • branches/HTM-13.1-dev0/source/Lib/TLibEncoder/TEncCfg.h

    r1166 r1170  
    7878  Int m_interViewRefPosL[2][MAX_NUM_REF_PICS]; 
    7979#endif
     80#if HHI_INTER_COMP_PRED_K0052
     81  Bool m_interCompPredFlag;
     82#endif
    8083  GOPEntry()
    8184  : m_POC(-1)
     
    9497#if H_MV
    9598  , m_numActiveRefLayerPics(0)
     99#endif
     100#if HHI_INTER_COMP_PRED_K0052
     101#if H_3D
     102  , m_interCompPredFlag(false)
     103#endif
    96104#endif
    97105  {
     
    408416  Bool      m_bUseQTL;
    409417#endif
     418#if H_3D_ANNEX_SELECTION_FIX
     419  Int m_profileIdc;
     420#endif
     421
    410422#endif
    411423public:
     
    421433  , m_isDepth(false)
    422434  , m_bUseVSO(false)
     435#if H_3D_ANNEX_SELECTION_FIX
     436  , m_profileIdc( -1 )
     437#endif
    423438#endif
    424439#endif
     
    957972  Bool      getUseQTL                       ()         { return m_bUseQTL; }
    958973#endif
     974#if H_3D_ANNEX_SELECTION_FIX
     975  Void                    setProfileIdc( Int a )    { assert( a == 1 || a == 6 || a == 8 ); m_profileIdc = a;  }
     976  Bool                    decProcAnnexI()           { assert( m_profileIdc != -1 ); return ( m_profileIdc == 8); }   
     977#endif
     978
    959979#endif // H_3D
    960980};
  • branches/HTM-13.1-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp

    r1169 r1170  
    306306
    307307#if H_MV_ENC_DEC_TRAC
     308#if ENC_DEC_TRACE
    308309  UInt uiLPelX   = pcCU->getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[uiAbsPartIdx] ];
    309310  UInt uiTPelY   = pcCU->getCUPelY() + g_auiRasterToPelY[ g_auiZscanToRaster[uiAbsPartIdx] ];
     
    314315  DTRACE_TU("log2TrafoSize", g_uiMaxCUWidth>>uiDepth)
    315316  DTRACE_TU("trafoDepth"  , uiDepth)
     317#endif
    316318#endif
    317319
  • branches/HTM-13.1-dev0/source/Lib/TLibEncoder/TEncGOP.cpp

    r1169 r1170  
    885885    Int numDirectRefLayers = vps    ->getNumDirectRefLayers( getLayerId() );
    886886#endif
     887#if HHI_INTER_COMP_PRED_K0052
     888    pcSlice->setIvPicLists( m_ivPicLists );         
     889
     890    Int gopNum = (pcSlice->getRapPicFlag() && getLayerId() > 0) ? MAX_GOP : iGOPid;
     891    GOPEntry gopEntry      = m_pcCfg->getGOPEntry( gopNum );     
     892#else
    887893    GOPEntry gopEntry      = m_pcCfg->getGOPEntry( (pcSlice->getRapPicFlag() && getLayerId() > 0) ? MAX_GOP : iGOPid );     
     894#endif
    888895   
    889896    Bool interLayerPredLayerIdcPresentFlag = false;
     
    922929    assert( pcSlice->getNumActiveRefLayerPics() == gopEntry.m_numActiveRefLayerPics );
    923930   
     931#if HHI_INTER_COMP_PRED_K0052
     932#if H_3D
     933    if ( m_pcEncTop->decProcAnnexI() )
     934    {   
     935      pcSlice->deriveInCmpPredAndCpAvailFlag();
     936      if ( pcSlice->getInCmpPredAvailFlag() )
     937      {     
     938        pcSlice->setInCompPredFlag( gopEntry.m_interCompPredFlag );
     939      }
     940      else
     941      {
     942        if (gopEntry.m_interCompPredFlag )
     943        {
     944          if ( gopNum == MAX_GOP)
     945          {
     946            printf( "\nError: FrameI_l%d cannot enable inter-component prediction.\n", pcSlice->getVPS()->getLayerIdInVps( getLayerId() ) );
     947          }
     948          else
     949          {
     950            printf( "\nError: Frame%d_l%d cannot enable inter-component prediction.\n", gopNum, pcSlice->getVPS()->getLayerIdInVps( getLayerId() ) );
     951          }
     952         
     953          exit(EXIT_FAILURE);
     954        }
     955      }
     956      pcSlice->init3dToolParameters();
     957      pcSlice->checkInCompPredRefLayers();
     958    }
     959   
     960
     961    // This needs to be done after initilizaiton of 3D tool parameters.
     962    pcSlice->setMaxNumMergeCand      ( m_pcCfg->getMaxNumMergeCand()   + ( ( pcSlice->getMpiFlag( ) || pcSlice->getIvMvPredFlag( ) || pcSlice->getViewSynthesisPredFlag( )   ) ? 1 : 0 ));
     963#endif
     964#endif
     965
    924966    pcSlice->createInterLayerReferencePictureSet( m_ivPicLists, m_refPicSetInterLayer0, m_refPicSetInterLayer1 );
    925967    pcSlice->setNumRefIdx(REF_PIC_LIST_0,min(gopEntry.m_numRefPicsActive,( pcSlice->getRPS()->getNumberOfPictures() + (Int) m_refPicSetInterLayer0.size() + (Int) m_refPicSetInterLayer1.size()) ) );
     
    9681010    }
    9691011#endif
     1012#if !HHI_INTER_COMP_PRED_K0052
    9701013#if H_3D
    9711014    pcSlice->setIvPicLists( m_ivPicLists );         
     
    9731016    assert( !m_pcEncTop->getIsDepth() || ( pcSlice->getTexturePic() != 0 ) );
    9741017#endif   
     1018#endif
    9751019#endif
    9761020#if H_3D_IC
  • branches/HTM-13.1-dev0/source/Lib/TLibEncoder/TEncSlice.cpp

    r1133 r1170  
    215215  rpcSlice->setPicOutputFlag( true );
    216216  rpcSlice->setPOC( pocCurr );
     217#if !HHI_INTER_COMP_PRED_K0052
    217218#if H_3D
    218   rpcSlice->init3dToolParameters();
     219    rpcSlice->init3dToolParameters();
     220#endif
    219221#endif
    220222#if H_3D_IC
     
    610612  rpcSlice->setSliceSegmentMode     ( m_pcCfg->getSliceSegmentMode()     );
    611613  rpcSlice->setSliceSegmentArgument ( m_pcCfg->getSliceSegmentArgument() );
     614#if !HHI_INTER_COMP_PRED_K0052
    612615#if H_3D_IV_MERGE
    613616  rpcSlice->setMaxNumMergeCand      ( m_pcCfg->getMaxNumMergeCand()   + ( ( rpcSlice->getMpiFlag( ) || rpcSlice->getIvMvPredFlag( ) || rpcSlice->getViewSynthesisPredFlag( )   ) ? 1 : 0 ));
    614617#else
    615618  rpcSlice->setMaxNumMergeCand        ( m_pcCfg->getMaxNumMergeCand()        );
     619#endif
     620#else
     621#if !H_3D
     622  rpcSlice->setMaxNumMergeCand        ( m_pcCfg->getMaxNumMergeCand()        );
     623#endif
    616624#endif
    617625  xStoreWPparam( pPPS->getUseWP(), pPPS->getWPBiPred() );
  • branches/HTM-13.1-dev0/source/Lib/TLibEncoder/TEncTop.cpp

    r1169 r1170  
    9191  m_aICEnableNum = NULL;
    9292#endif
     93#if H_3D_ANNEX_SELECTION_FIX
     94  m_cCavlcCoder.setEncTop(this);
     95#endif
    9396}
    9497
     
    364367  }
    365368#endif
     369
    366370  // initialize processing unit classes
    367371  m_cGOPEncoder.  init( this );
Note: See TracChangeset for help on using the changeset viewer.