Changeset 758 in 3DVCSoftware for trunk/source/Lib/TLibCommon


Ignore:
Timestamp:
3 Jan 2014, 17:43:40 (11 years ago)
Author:
tech
Message:

Merged HTM-9.1-dev0-MediaTek@757. (3D-HEVC HLS)

Location:
trunk/source/Lib/TLibCommon
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/source/Lib/TLibCommon/TComPrediction.cpp

    r724 r758  
    506506    {
    507507#if H_3D_DIM_DLT
     508#if DLT_DIFF_CODING_IN_PPS
     509      segDC1 = pcCU->getSlice()->getPPS()->getDLT()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), pcCU->getSlice()->getPPS()->getDLT()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), predDC1 ) + deltaDC1 );
     510      segDC2 = pcCU->getSlice()->getPPS()->getDLT()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), pcCU->getSlice()->getPPS()->getDLT()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), predDC2 ) + deltaDC2 );
     511#else
    508512      segDC1 = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), predDC1 ) + deltaDC1 );
    509513      segDC2 = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), predDC2 ) + deltaDC2 );
     514#endif
    510515#else
    511516      segDC1 = ClipY( predDC1 + deltaDC1 );
  • TabularUnified trunk/source/Lib/TLibCommon/TComSlice.cpp

    r738 r758  
    782782Void TComSlice::setCamparaSlice( Int** aaiScale, Int** aaiOffset )
    783783
     784#if CAM_HLS_F0136_F0045_F0082
     785  if( m_pcVPS->hasCamParInSliceHeader( m_viewIndex ) )
     786#else
    784787  if( m_pcSPS->hasCamParInSliceHeader() )
     788#endif
    785789  {   
    786790    for( UInt uiBaseViewIndex = 0; uiBaseViewIndex < m_viewIndex; uiBaseViewIndex++ )
     
    18161820    m_vpsDepthModesFlag [i] = false;
    18171821#if H_3D_DIM_DLT
     1822#if !DLT_DIFF_CODING_IN_PPS
    18181823    m_bUseDLTFlag         [i] = false;
    18191824   
     
    18321837    }
    18331838#endif
     1839#endif
    18341840#if H_3D
    18351841    m_ivMvScalingFlag = true;
     
    19021908    if (m_repFormat[ i ] != NULL )      delete m_repFormat[ i ];   
    19031909#if H_3D_DIM_DLT
     1910#if !DLT_DIFF_CODING_IN_PPS
    19041911    if ( m_iDepthValue2Idx[i] != 0 )
    19051912    {
     
    19141921    }
    19151922#endif
    1916   }
     1923#endif
     1924  }
     1925#endif
     1926#if CAM_HLS_F0136_F0045_F0082
     1927  deleteCamPars();
    19171928#endif
    19181929}
    19191930
    19201931#if H_3D_DIM_DLT
     1932#if !DLT_DIFF_CODING_IN_PPS
    19211933  Void TComVPS::setDepthLUTs(Int layerIdInVps, Int* idxToDepthValueTable, Int iNumDepthValues)
    19221934  {
     
    19801992  }
    19811993#endif
     1994#endif
    19821995
    19831996#if H_MV
     
    20662079  return foundLayerIdinNuh;
    20672080}
     2081#if CAM_HLS_F0136_F0045_F0082
     2082Void TComVPS::createCamPars(Int iNumViews)
     2083{
     2084  Int i = 0, j = 0;
     2085
     2086  m_bCamParPresent = new Bool[ iNumViews ];
     2087  m_bCamParInSliceHeader = new Bool[ iNumViews ];
     2088
     2089  m_aaaiCodedScale = new Int**[ iNumViews ];
     2090  m_aaaiCodedOffset = new Int**[ iNumViews ];
     2091  for ( i = 0; i < iNumViews ; i++ )
     2092  {
     2093    m_aaaiCodedScale[i] = new Int*[ 2 ];
     2094    m_aaaiCodedOffset[i] = new Int*[ 2 ];
     2095    for ( j = 0; j < 2; j++ )
     2096    {
     2097      m_aaaiCodedScale[i][j] = new Int[ MAX_NUM_LAYERS ];
     2098      m_aaaiCodedOffset[i][j] = new Int[ MAX_NUM_LAYERS ];
     2099      for ( Int k = 0; k < MAX_NUM_LAYERS; k++ )
     2100      {
     2101        m_aaaiCodedScale[i][j][k] = 0;
     2102        m_aaaiCodedOffset[i][j][k] = 0;
     2103      }
     2104    }
     2105  }
     2106}
     2107
     2108Void TComVPS::deleteCamPars()
     2109{
     2110  Int iNumViews = getNumViews();
     2111  Int i = 0, j = 0;
     2112
     2113  if ( m_bCamParPresent != NULL )
     2114  {
     2115    delete [] m_bCamParPresent;
     2116  }
     2117  if ( m_bCamParInSliceHeader != NULL )
     2118  {
     2119    delete [] m_bCamParInSliceHeader;
     2120  }
     2121
     2122  if ( m_aaaiCodedScale != NULL )
     2123  {
     2124    for ( i = 0; i < iNumViews ; i++ )
     2125    {
     2126      for ( j = 0; j < 2; j++ )
     2127      {
     2128        delete [] m_aaaiCodedScale[i][j];
     2129      }
     2130      delete [] m_aaaiCodedScale[i];
     2131    }
     2132    delete [] m_aaaiCodedScale;
     2133  }
     2134
     2135  if ( m_aaaiCodedOffset != NULL )
     2136  {
     2137    for ( i = 0; i < iNumViews ; i++ )
     2138    {
     2139      for ( j = 0; j < 2; j++ )
     2140      {
     2141        delete [] m_aaaiCodedOffset[i][j];
     2142      }
     2143      delete [] m_aaaiCodedOffset[i];
     2144    }
     2145    delete [] m_aaaiCodedOffset;
     2146  }
     2147}
     2148
     2149
     2150Void
     2151  TComVPS::initCamParaVPS( UInt uiViewIndex, Bool bCamParPresent, UInt uiCamParPrecision, Bool bCamParSlice, Int** aaiScale, Int** aaiOffset )
     2152{
     2153  AOT( uiViewIndex != 0 && !bCamParSlice && ( aaiScale == 0 || aaiOffset == 0 ) ); 
     2154
     2155  m_uiCamParPrecision = ( ( uiViewIndex != 0 )? uiCamParPrecision : 0 );
     2156  m_bCamParPresent[ uiViewIndex ] = (( uiViewIndex != 0 )? bCamParPresent  : false );
     2157  m_bCamParInSliceHeader[ uiViewIndex ]  = ( (uiViewIndex != 0)? bCamParSlice  : false );
     2158
     2159  if( !m_bCamParInSliceHeader[ uiViewIndex ] )
     2160  {
     2161    for( UInt uiBaseViewIndex = 0; uiBaseViewIndex < uiViewIndex; uiBaseViewIndex++ )
     2162    {
     2163      m_aaaiCodedScale [ uiViewIndex ][ 0 ][ uiBaseViewIndex ] = aaiScale [ uiBaseViewIndex ][     uiViewIndex ];
     2164      m_aaaiCodedScale [ uiViewIndex ][ 1 ][ uiBaseViewIndex ] = aaiScale [     uiViewIndex ][ uiBaseViewIndex ];
     2165      m_aaaiCodedOffset[ uiViewIndex ][ 0 ][ uiBaseViewIndex ] = aaiOffset[ uiBaseViewIndex ][     uiViewIndex ];
     2166      m_aaaiCodedOffset[ uiViewIndex ][ 1 ][ uiBaseViewIndex ] = aaiOffset[     uiViewIndex ][ uiBaseViewIndex ];
     2167    }
     2168  }
     2169}
     2170#endif // CAM_HLS_F0136_F0045_F0082
     2171
    20682172#endif // H_3D
    20692173
     
    24442548, m_ppsInferScalingListFlag(false)
    24452549, m_ppsScalingListRefLayerId(0)
     2550#if DLT_DIFF_CODING_IN_PPS
     2551, m_pcDLT(NULL)
     2552#endif
    24462553#endif
    24472554{
     
    24632570  delete m_scalingList;
    24642571}
     2572
     2573#if DLT_DIFF_CODING_IN_PPS
     2574TComDLT::TComDLT()
     2575: m_bDltPresentFlag(false)
     2576, m_iNumDepthViews(0)
     2577, m_uiDepthViewBitDepth(8)
     2578{
     2579  m_uiDepthViewBitDepth = g_bitDepthY;
     2580
     2581  for( Int i = 0; i < MAX_NUM_LAYERS; i++ )
     2582  {
     2583    m_bUseDLTFlag                 [i] = false;
     2584    m_bInterViewDltPredEnableFlag [i] = false;
     2585
     2586    // allocate some memory and initialize with default mapping
     2587    m_iNumDepthmapValues[i] = ((1 << m_uiDepthViewBitDepth)-1)+1;
     2588    m_iBitsPerDepthValue[i] = numBitsForValue(m_iNumDepthmapValues[i]);
     2589
     2590    m_iDepthValue2Idx[i]    = (Int*) xMalloc(Int, m_iNumDepthmapValues[i]);
     2591    m_iIdx2DepthValue[i]    = (Int*) xMalloc(Int, m_iNumDepthmapValues[i]);
     2592
     2593    //default mapping
     2594    for (Int d=0; d<m_iNumDepthmapValues[i]; d++)
     2595    {
     2596      m_iDepthValue2Idx[i][d] = d;
     2597      m_iIdx2DepthValue[i][d] = d;
     2598    }
     2599  }
     2600}
     2601
     2602TComDLT::~TComDLT()
     2603{
     2604  for( Int i = 0; i < MAX_NUM_LAYERS; i++ )
     2605  {
     2606    if ( m_iDepthValue2Idx[i] != NULL )
     2607    {
     2608      xFree( m_iDepthValue2Idx[i] );
     2609      m_iDepthValue2Idx[i] = NULL;
     2610    }
     2611
     2612    if ( m_iIdx2DepthValue[i] != NULL )
     2613    {
     2614      xFree( m_iIdx2DepthValue[i] );
     2615      m_iIdx2DepthValue[i] = NULL;
     2616    }
     2617  }
     2618}
     2619
     2620Void TComDLT::setDepthLUTs(Int layerIdInVps, Int* idxToDepthValueTable, Int iNumDepthValues)
     2621{
     2622  if( idxToDepthValueTable == NULL || iNumDepthValues == 0 ) // default mapping only
     2623    return;
     2624
     2625  // copy idx2DepthValue to internal array
     2626  memcpy(m_iIdx2DepthValue[layerIdInVps], idxToDepthValueTable, iNumDepthValues*sizeof(UInt));
     2627
     2628  UInt uiMaxDepthValue = ((1 << g_bitDepthY)-1);
     2629  for(Int p=0; p<=uiMaxDepthValue; p++)
     2630  {
     2631    Int iIdxDown    = 0;
     2632    Int iIdxUp      = iNumDepthValues-1;
     2633    Bool bFound     = false;
     2634
     2635    // iterate over indices to find lower closest depth
     2636    Int i = 1;
     2637    while(!bFound && i<iNumDepthValues)
     2638    {
     2639      if( m_iIdx2DepthValue[layerIdInVps][i] > p )
     2640      {
     2641        iIdxDown  = i-1;
     2642        bFound    = true;
     2643      }
     2644
     2645      i++;
     2646    }
     2647    // iterate over indices to find upper closest depth
     2648    i = iNumDepthValues-2;
     2649    bFound = false;
     2650    while(!bFound && i>=0)
     2651    {
     2652      if( m_iIdx2DepthValue[layerIdInVps][i] < p )
     2653      {
     2654        iIdxUp  = i+1;
     2655        bFound    = true;
     2656      }
     2657
     2658      i--;
     2659    }
     2660
     2661    // assert monotony
     2662    assert(iIdxDown<=iIdxUp);
     2663
     2664    // assign closer depth value/idx
     2665    if( abs(p-m_iIdx2DepthValue[layerIdInVps][iIdxDown]) < abs(p-m_iIdx2DepthValue[layerIdInVps][iIdxUp]) )
     2666    {
     2667      m_iDepthValue2Idx[layerIdInVps][p] = iIdxDown;
     2668    }
     2669    else
     2670    {
     2671      m_iDepthValue2Idx[layerIdInVps][p] = iIdxUp;
     2672    }
     2673
     2674  }
     2675
     2676  // update DLT variables
     2677  m_iNumDepthmapValues[layerIdInVps] = iNumDepthValues;
     2678  m_iBitsPerDepthValue[layerIdInVps] = numBitsForValue(m_iNumDepthmapValues[layerIdInVps]);
     2679}
     2680
     2681#if H_3D_DELTA_DLT
     2682Void TComDLT::getDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTOut, UInt *puiDeltaDLTOutNum )
     2683{
     2684  Bool abBM0[ 256 ];
     2685  Bool abBM1[ 256 ];
     2686 
     2687  memset( abBM0, 0, sizeof( abBM0 ));
     2688  memset( abBM1, 0, sizeof( abBM1 ));
     2689 
     2690  // convert reference DLT to bit string
     2691  for( Int i = 0; i < uiDLTInRefNum; i++ )
     2692  {
     2693    abBM0[ piDLTInRef[ i ] ] = true;
     2694  }
     2695  // convert internal DLT to bit string
     2696  for( Int i = 0; i < m_iNumDepthmapValues[ layerIdInVps ]; i++ )
     2697  {
     2698    abBM1[ m_iIdx2DepthValue[ layerIdInVps ][ i ] ] = true;
     2699  }
     2700 
     2701  *puiDeltaDLTOutNum = 0;
     2702  for( Int i = 0; i < 256; i++ )
     2703  {
     2704    if( abBM0[ i ] ^ abBM1[ i ] )
     2705    {
     2706      piDeltaDLTOut[ *puiDeltaDLTOutNum ] = i;
     2707      *puiDeltaDLTOutNum = *puiDeltaDLTOutNum + 1;
     2708    }
     2709  }
     2710}
     2711
     2712Void TComDLT::setDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTIn, UInt uiDeltaDLTInNum )
     2713{
     2714  Bool abBM0[ 256 ];
     2715  Bool abBM1[ 256 ];
     2716 
     2717  memset( abBM0, 0, sizeof( abBM0 ));
     2718  memset( abBM1, 0, sizeof( abBM1 ));
     2719 
     2720  // convert reference DLT to bit string
     2721  for( Int i = 0; i < uiDLTInRefNum; i++ )
     2722  {
     2723    abBM0[ piDLTInRef[ i ] ] = true;
     2724  }
     2725  // convert delta DLT to bit string
     2726  for( Int i = 0; i < uiDeltaDLTInNum; i++ )
     2727  {
     2728    abBM1[ piDeltaDLTIn[ i ] ] = true;
     2729  }
     2730 
     2731  Int aiIdx2DepthValue[256];
     2732  UInt uiNumDepthValues = 0;
     2733  memset( aiIdx2DepthValue, 0, sizeof( aiIdx2DepthValue ));
     2734 
     2735  for( Int i = 0; i < 256; i++ )
     2736  {
     2737    if( abBM0[ i ] ^ abBM1[ i ] )
     2738    {
     2739      aiIdx2DepthValue[ uiNumDepthValues++ ] = i;
     2740    }
     2741  }
     2742 
     2743  // update internal tables
     2744  setDepthLUTs(layerIdInVps, aiIdx2DepthValue, uiNumDepthValues);
     2745}
     2746#endif
     2747
     2748#endif
    24652749
    24662750#if H_MV
     
    25252809#endif
    25262810#if H_3D
     2811#if !CAM_HLS_F0136_F0045_F0082
    25272812Void
    25282813TComSPS::initCamParaSPS( UInt uiViewIndex, UInt uiCamParPrecision, Bool bCamParSlice, Int** aaiScale, Int** aaiOffset )
     
    25462831  }
    25472832}
     2833#endif
    25482834#endif
    25492835TComReferencePictureSet::TComReferencePictureSet()
     
    32573543  assert( m_depthToDisparityF != NULL );
    32583544
     3545#if CAM_HLS_F0136_F0045_F0082
     3546  TComVPS* vps = getVPS();
     3547#else
    32593548  TComSPS* sps = getSPS();
    3260 
     3549#endif
     3550
     3551#if CAM_HLS_F0136_F0045_F0082
     3552  Int log2Div = g_bitDepthY - 1 + vps->getCamParPrecision();
     3553  Int viewIndex = getViewIndex();
     3554
     3555  Bool camParaSH = vps->hasCamParInSliceHeader( viewIndex );
     3556
     3557  Int* codScale     = camParaSH ? m_aaiCodedScale [ 0 ] : vps->getCodedScale    ( viewIndex );
     3558  Int* codOffset    = camParaSH ? m_aaiCodedOffset[ 0 ] : vps->getCodedOffset   ( viewIndex );
     3559  Int* invCodScale  = camParaSH ? m_aaiCodedScale [ 1 ] : vps->getInvCodedScale ( viewIndex );
     3560  Int* invCodOffset = camParaSH ? m_aaiCodedOffset[ 1 ] : vps->getInvCodedOffset( viewIndex );
     3561#else
    32613562  Int log2Div = g_bitDepthY - 1 + sps->getCamParPrecision();
    32623563
     
    32673568  Int* invCodScale  = camParaSH ? m_aaiCodedScale [ 1 ] : sps->getInvCodedScale ();
    32683569  Int* invCodOffset = camParaSH ? m_aaiCodedOffset[ 1 ] : sps->getInvCodedOffset();
     3570#endif
    32693571
    32703572  for (Int i = 0; i <= ( getViewIndex() - 1); i++)
     
    37074009  // It is a requirement of bitstream conformance that bitstream partition with index j shall not include
    37084010  // direct or indirect reference layers of any layers in bitstream partition i for any values of i and j
    3709   // in the range of 0 to num_bitstream_partitions[ h ] – 1, inclusive, such that i is less than j.
     4011  // in the range of 0 to num_bitstream_partitions[ h ] ?1, inclusive, such that i is less than j.
    37104012
    37114013  for ( Int partJ = 0; partJ < getNumBitstreamPartitions( h ); partJ++ )
  • TabularUnified trunk/source/Lib/TLibCommon/TComSlice.h

    r738 r758  
    849849#endif
    850850  Bool        m_vpsDepthModesFlag        [MAX_NUM_LAYERS   ];
     851
    851852#if H_3D_DIM_DLT
     853#if !DLT_DIFF_CODING_IN_PPS
    852854  Bool        m_bUseDLTFlag              [MAX_NUM_LAYERS   ];
    853855 
     
    857859  Int*        m_iIdx2DepthValue          [MAX_NUM_LAYERS   ];
    858860#endif
     861#endif
     862
    859863#if H_3D
     864#if CAM_HLS_F0136_F0045_F0082
     865  UInt        m_uiCamParPrecision;
     866  Bool*       m_bCamParInSliceHeader;
     867  Bool*       m_bCamParPresent;
     868  Int         ***m_aaaiCodedScale ;
     869  Int         ***m_aaaiCodedOffset;
     870#endif
    860871  Bool        m_ivMvScalingFlag;
    861872#endif
     
    10351046#endif
    10361047
    1037   Void    setProfileLevelTierIdx( Int outLayerSetIdx, Int val )            { m_profileLevelTierIdx[ outLayerSetIdx  = val ]; } 
     1048  Void    setProfileLevelTierIdx( Int outLayerSetIdx, Int val )            { m_profileLevelTierIdx[ outLayerSetIdx  = val ]; }
    10381049  Int     getProfileLevelTierIdx( Int outLayerSetIdx )                     { return m_profileLevelTierIdx[ outLayerSetIdx ]; }
    10391050#if H_MV_6_GEN_0153_28
     
    11391150  Void    setARPStepNum( Int layerIdInVps, UInt val )                      { m_uiARPStepNum[layerIdInVps]    = val;     }
    11401151#endif
     1152#if CAM_HLS_F0136_F0045_F0082
     1153  Void createCamPars(Int iNumViews);
     1154  Void deleteCamPars();
     1155  Void initCamParaVPS      (  UInt uiViewIndex, Bool bCamParPresent = false, UInt uiCamParPrecision = 0, Bool bCamParSlice = false, Int** aaiScale = 0, Int** aaiOffset = 0 );
     1156  UInt getCamParPrecision    ()  { return m_uiCamParPrecision; }
     1157  Bool getCamParPresent      ( Int viewIndex )  { return m_bCamParPresent[viewIndex]; }
     1158  Bool hasCamParInSliceHeader( Int viewIndex )  { return m_bCamParInSliceHeader[viewIndex]; }
     1159  Void setHasCamParInSliceHeader( Int viewIndex, Bool b )  { m_bCamParInSliceHeader[viewIndex] = b; }
     1160  Int* getCodedScale         ( Int viewIndex )  { return m_aaaiCodedScale [viewIndex][0]; }
     1161  Int* getCodedOffset        ( Int viewIndex )  { return m_aaaiCodedOffset[viewIndex][0]; }
     1162  Int* getInvCodedScale      ( Int viewIndex )  { return m_aaaiCodedScale [viewIndex][1]; }
     1163  Int* getInvCodedOffset     ( Int viewIndex )  { return m_aaaiCodedOffset[viewIndex][1]; }
     1164#endif
     1165
    11411166#if H_3D_IV_MERGE
    11421167  Void    setIvMvPredFlag     ( Int layerIdInVps, Bool val )  { m_ivMvPredFlag[ layerIdInVps ] = val; }
     
    11571182  Void    setVpsDepthModesFlag( Int layerIdInVps, Bool val )               { m_vpsDepthModesFlag[ layerIdInVps ] = val; }
    11581183  Bool    getVpsDepthModesFlag( Int layerIdInVps )                         { return m_vpsDepthModesFlag[ layerIdInVps ]; }
     1184
    11591185#if H_3D_DIM_DLT
     1186#if !DLT_DIFF_CODING_IN_PPS
    11601187  Bool    getUseDLTFlag      ( Int layerIdInVps )                         { return m_bUseDLTFlag[ layerIdInVps ]; }
    11611188  Void    setUseDLTFlag      ( Int layerIdInVps, Bool b ) { m_bUseDLTFlag[ layerIdInVps ]  = b;          }
     
    11671194  Void    setDepthLUTs( Int layerIdInVps, Int* idx2DepthValue = NULL, Int iNumDepthValues = 0 );
    11681195#endif
     1196#endif
    11691197
    11701198  Bool    getIvMvScalingFlag   (  )                       { return m_ivMvScalingFlag; }
     
    11811209#endif
    11821210};
     1211
     1212#if DLT_DIFF_CODING_IN_PPS
     1213class TComDLT
     1214{
     1215private:
     1216  Bool        m_bDltPresentFlag;
     1217  Bool        m_bUseDLTFlag              [ MAX_NUM_LAYERS ];
     1218  Bool        m_bInterViewDltPredEnableFlag[ MAX_NUM_LAYERS ];
     1219
     1220  Int         m_iBitsPerDepthValue       [ MAX_NUM_LAYERS ];
     1221  Int         m_iNumDepthmapValues       [ MAX_NUM_LAYERS ];
     1222  Int*        m_iDepthValue2Idx          [ MAX_NUM_LAYERS ];
     1223  Int*        m_iIdx2DepthValue          [ MAX_NUM_LAYERS ];
     1224
     1225  Int         m_iNumDepthViews;
     1226  UInt        m_uiDepthViewBitDepth;
     1227
     1228public:
     1229  TComDLT();
     1230  ~TComDLT();
     1231
     1232  Bool    getDltPresentFlag  ()                           { return m_bDltPresentFlag; }
     1233  Void    setDltPresentFlag  ( Bool b )                   { m_bDltPresentFlag = b;    }
     1234
     1235  Bool    getUseDLTFlag      ( Int layerIdInVps )         { return m_bUseDLTFlag[ layerIdInVps ]; }
     1236  Void    setUseDLTFlag      ( Int layerIdInVps, Bool b ) { m_bUseDLTFlag[ layerIdInVps ]  = b;   }
     1237 
     1238  Bool    getInterViewDltPredEnableFlag( Int layerIdInVps )         { return m_bInterViewDltPredEnableFlag[ layerIdInVps ]; }
     1239  Void    setInterViewDltPredEnableFlag( Int layerIdInVps, Bool b ) { m_bInterViewDltPredEnableFlag[ layerIdInVps ] = b;    }
     1240
     1241  Void    setNumDepthViews   ( Int n )                    { m_iNumDepthViews = n; }
     1242  Int     getNumDepthViews   ()                           { return m_iNumDepthViews; }
     1243
     1244  Void    setDepthViewBitDepth( UInt n )                  { m_uiDepthViewBitDepth = n; }
     1245  UInt    getDepthViewBitDepth()                          { return m_uiDepthViewBitDepth; }
     1246
     1247  Int     getBitsPerDepthValue( Int layerIdInVps )        { return getUseDLTFlag(layerIdInVps)?m_iBitsPerDepthValue[layerIdInVps]:g_bitDepthY; }
     1248  Int     getNumDepthValues( Int layerIdInVps )           { return getUseDLTFlag(layerIdInVps)?m_iNumDepthmapValues[layerIdInVps]:((1 << g_bitDepthY)-1); }
     1249  Int     depthValue2idx( Int layerIdInVps, Pel value )   { return getUseDLTFlag(layerIdInVps)?m_iDepthValue2Idx[layerIdInVps][value]:value; }
     1250  Pel     idx2DepthValue( Int layerIdInVps, UInt uiIdx )  { return getUseDLTFlag(layerIdInVps)?m_iIdx2DepthValue[layerIdInVps][uiIdx]:uiIdx; }
     1251  Void    setDepthLUTs( Int layerIdInVps, Int* idx2DepthValue = NULL, Int iNumDepthValues = 0 );
     1252#if H_3D_DELTA_DLT
     1253  Int*    idx2DepthValue( Int layerIdInVps )  { return m_iIdx2DepthValue[layerIdInVps]; }
     1254  Void    getDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTOut, UInt *puiDeltaDLTOutNum );
     1255  Void    setDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTIn, UInt uiDeltaDLTInNum );
     1256#endif
     1257};
     1258#endif
    11831259
    11841260class Window
     
    17251801#endif
    17261802#if H_3D
     1803#if !CAM_HLS_F0136_F0045_F0082
    17271804  Void initCamParaSPS      (  UInt uiViewIndex, UInt uiCamParPrecision = 0, Bool bCamParSlice = false, Int** aaiScale = 0, Int** aaiOffset = 0 );
    17281805  UInt getCamParPrecision    ()  { return m_uiCamParPrecision; }
     
    17351812  Int* getInvCodedScale      ()  { return m_aaiCodedScale [1]; }
    17361813  Int* getInvCodedOffset     ()  { return m_aaiCodedOffset[1]; }
     1814#endif
    17371815#endif
    17381816#if H_MV
     
    18401918  Int  m_ppsScalingListRefLayerId;
    18411919#endif
     1920
     1921#if DLT_DIFF_CODING_IN_PPS
     1922  TComDLT*  m_pcDLT;
     1923#endif
     1924
    18421925public:
    18431926  TComPPS();
     
    18641947  Void      setMinCuDQPSize     ( UInt u ) { m_uiMinCuDQPSize = u;    }
    18651948  UInt      getMinCuDQPSize     ()         { return m_uiMinCuDQPSize; }
     1949
     1950#if DLT_DIFF_CODING_IN_PPS
     1951  Void      setDLT              ( TComDLT* pcDLT ) { m_pcDLT = pcDLT; }
     1952  TComDLT*  getDLT              ()                 { return m_pcDLT; }
     1953#endif
    18661954
    18671955  Void      setChromaCbQpOffset( Int i ) { m_chromaCbQpOffset = i;    }
  • TabularUnified trunk/source/Lib/TLibCommon/TypeDef.h

    r738 r758  
    175175#endif
    176176
     177#define CAM_HLS_F0136_F0045_F0082         1   // JCT3V-F0136/F0045: view order index based camera parameter signaling
     178                                              // JCT3V-F0082: the cp_in_slice_segment_layer_flag to be view specific and used as a condition of the presence of slice header level camera parameters
     179#define CAM_HLS_F0044                     1   // JCT3V-F0044: move camera parameter from slice header extension to slice header
     180
     181
    177182// Rate Control
    178183#define KWU_FIX_URQ                       1
     
    215220#define H_3D_DIM_SDC                      1   // Simplified Depth Coding method
    216221#define H_3D_DIM_DLT                      1   // Depth Lookup Table
     222
     223#if H_3D_DIM_DLT
     224#define DLT_DIFF_CODING_IN_PPS            1   // moving DLT syntax elements from VPS to PPS and differential coding of DLT values
     225                                              // JCT3V-F0131, JCT3V-F0139
     226#if DLT_DIFF_CODING_IN_PPS
     227#define Log2( n ) ( log((double)n) / log(2.0) )
     228#endif
     229#define H_3D_DELTA_DLT                    1
     230#endif
     231
    217232#define H_3D_DIM_ENC                      1   // Depth Intra encoder optimizations, includes:
    218233                                              // HHI_DEPTH_INTRA_SEARCH_RAU_C0160
     
    262277#define H_MV_FIX_SKIP_PICTURES                  1  // Fix related to skipping pictures.
    263278#define H_MV_6_HRD_O0164_15                     1  // (HRD/O0164/Multilayer HRD) #15 Decision: Adopt, modified as follows: It was suggested to constrain the stalling based on the relative cpb removal times, which must be in decoding order. The "du_based_bpb_sync_flag" is not needed, in view of this. SEI in the highest layer of the layer set or (inclusive "or") VPS VUI is used to carry the parameters (at encoder discretion). SEI in higher layer and SEI in VUI do not need to repeat information available in some lower layer. Shall be after APS SEI and buffering period SEI and before all other SEI of all layers except other HRD related SEI.
    264 #define H_MV_6_HRD_O0217_13                     1  // (HRD/O0217/Sub-DPB based DPB operations) #13 Decision: Adopt – Specify a separate DPB capacity for each layer – no sharing of capacity across layers – each layer has its own parameters (max pictures, max latency, max reordering). This proposal would specify distinct parameters for each "output layer set" and to change the definition of an operation point to be specific to an output layer set instead of a 'layer set". Decision: Adopted this aspect as well.
     279#define H_MV_6_HRD_O0217_13                     1  // (HRD/O0217/Sub-DPB based DPB operations) #13 Decision: Adopt ?Specify a separate DPB capacity for each layer ?no sharing of capacity across layers ?each layer has its own parameters (max pictures, max latency, max reordering). This proposal would specify distinct parameters for each "output layer set" and to change the definition of an operation point to be specific to an output layer set instead of a 'layer set". Decision: Adopted this aspect as well.
    265280#define H_MV_6_SHVC_O0098_36                    1  // (SHVC/O0098/Scaled ref layer offset) #36 Modify signalling of scaled reference layer offsets to allow signalling of any lower layer, rather than just a direct reference layer, in order to enable alignment of auxiliary pictures. In further JCT-VC and JCT-3V discussion, it was also agreed to use the same offset signalling for MV-HEVC as well as SHVC
    266281#define H_MV_6_GEN_0153_28                      1  //(Gen/O0153/output highest layer) #28 Add a flag in the VPS to indicate if startup process should output the highest available layer if the target output layer is not available.
     
    291306#define H_MV_6_PS_O0096_21                      1  // (PS/O0096/direct_dependency_type gating flag) #21 Add a gating flag in VPS extension to condition the presence of direct dependency type, with a default type signalled, from JCTVC-O0096
    292307#define H_MV_6_PS_O0109_22                      1  // (PS/O0109/view_id_len) #22 Modify the VPS extension syntax and semantics to replace view_id_len_minus1 with view_id_len, always signal that syntax element, add a constraint that (1<<view_id_len) >= NumViews, and modify view_id_val semantics to infer value of 0 when not present, from discussion of JCTVC-O0109
    293 #define H_MV_6_PS_O0109_23                      1  // (PS/O0109/profile_ref_minus1 constraint) #23 Modify the semantics of profile_ref_minus1[ i ] to replace “shall be less than i” with “shall be less than or equal to i”, from discussion of JCTVC-O0109
     308#define H_MV_6_PS_O0109_23                      1  // (PS/O0109/profile_ref_minus1 constraint) #23 Modify the semantics of profile_ref_minus1[ i ] to replace “shall be less than i?with “shall be less than or equal to i? from discussion of JCTVC-O0109
    294309#define H_MV_6_PS_O0109_24                      1  // (PS/O0109/vps_vui_present_flag move) #24 Move the vps_vui_present_flag to precede vps_vui_offset, and make vps_vui_offset conditional on that flag, from JCTVC-O0109
    295310/////////////////////////////////////////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.