Changeset 1534 in SHVCSoftware for branches/SHM-dev/source/App


Ignore:
Timestamp:
22 Mar 2016, 19:58:32 (9 years ago)
Author:
seregin
Message:

integration of multi-view support from JCTVC-W0134

Location:
branches/SHM-dev/source/App/TAppEncoder
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.cpp

    r1532 r1534  
    713713  Int*    cfg_auxId[MAX_LAYERS];
    714714#endif
     715#if VIEW_SCALABILITY
     716  Int*     cfg_viewOrderIndex         [MAX_LAYERS];
     717  Int*     cfg_viewId                 [MAX_LAYERS];
     718#endif
    715719
    716720  Int*    cfg_numSamplePredRefLayers  [MAX_LAYERS];
     
    889893    cfg_auxId[layer]                = &m_apcLayerCfg[layer]->m_auxId;
    890894#endif
     895#if VIEW_SCALABILITY
     896    cfg_viewOrderIndex[layer]       = &m_apcLayerCfg[layer]->m_viewOrderIndex;
     897    cfg_viewId[layer]               = &m_apcLayerCfg[layer]->m_viewId;
     898#endif
    891899    cfg_layerSwitchOffBegin[layer]  = &m_apcLayerCfg[layer]->m_layerSwitchOffBegin;
    892900    cfg_layerSwitchOffEnd[layer]    = &m_apcLayerCfg[layer]->m_layerSwitchOffEnd;
     
    10431051#if AUXILIARY_PICTURES
    10441052  ("AuxId%d",                                       cfg_auxId,                                 0, m_numLayers, "Auxilary picture ID for layer %d (0: Not aux pic, 1: Alpha plane, 2: Depth picture, 3: Cb enh, 4: Cr enh")
     1053#endif
     1054#if VIEW_SCALABILITY
     1055  ("ViewOrderIndex%d",                              cfg_viewOrderIndex,                       -1, m_numLayers, "View Order Index per layer")
     1056  ("ViewId%d",                                      cfg_viewId,                               -1, m_numLayers, "View Id per View Order Index")
    10451057#endif
    10461058  ("ConformanceMode%d",                             cfg_conformanceMode,                       0, m_numLayers, "Window conformance mode (0: no cropping, 1:automatic padding, 2: padding, 3:cropping")
     
    30213033  // check validity of input parameters
    30223034#if SVC_EXTENSION
     3035#if VIEW_SCALABILITY
     3036  if( m_scalabilityMask[VIEW_ORDER_INDEX] )
     3037  {
     3038
     3039    std::vector<Int> uniqueViewOrderIndices;
     3040    std::vector<Int> uniqueViewIds;
     3041    for( Int layer_idx = 0; layer_idx < m_numLayers; layer_idx++ )
     3042    {
     3043      Bool isIn = false;
     3044      for( Int uni = 0; uni < uniqueViewOrderIndices.size(); uni++ )
     3045      {
     3046        isIn = isIn || ( *(cfg_viewOrderIndex[ layer_idx ]) == uniqueViewOrderIndices[ uni ] );
     3047      }
     3048      if ( !isIn )
     3049      {
     3050        uniqueViewOrderIndices.push_back( *(cfg_viewOrderIndex[ layer_idx ]) );
     3051      }
     3052
     3053      isIn = false;
     3054      for( Int uni = 0; uni < uniqueViewIds.size(); uni++ )
     3055      {
     3056        isIn = isIn || ( *(cfg_viewId[ layer_idx ]) == uniqueViewIds[ uni ] );
     3057      }
     3058      if( !isIn )
     3059      {
     3060        uniqueViewIds.push_back( *(cfg_viewId[ layer_idx ]) );
     3061      }
     3062
     3063      assert(uniqueViewIds.size()==uniqueViewOrderIndices.size());
     3064
     3065      m_iNumberOfViews=uniqueViewIds.size();
     3066
     3067    }
     3068
     3069    m_ViewIdVal = uniqueViewIds;
     3070    m_iNumberOfViews = (Int)uniqueViewOrderIndices.size();
     3071  }
     3072#endif
     3073
    30233074  for( UInt layerIdx = 0; layerIdx < m_numLayers; layerIdx++ )
    30243075  {
     
    40784129  }
    40794130#endif
     4131#if VIEW_SCALABILITY
     4132  if (m_scalabilityMask[VIEW_ORDER_INDEX])
     4133  {   
     4134    xConfirmPara(m_apcLayerCfg[layerIdx]->m_viewId < 0 , "ViewId must be greater than or equal to 0");
     4135    xConfirmPara(m_apcLayerCfg[layerIdx]->m_viewOrderIndex < 0 , "ViewOrderIndex must be greater than or equal to 0");
     4136
     4137    if( layerIdx > 0 )
     4138    {
     4139      xConfirmPara(m_apcLayerCfg[layerIdx]->m_viewOrderIndex < m_apcLayerCfg[layerIdx-1]->m_viewOrderIndex, "ViewOrderIndex shall be increasing");
     4140    }
     4141
     4142  }
     4143#endif
    40804144#if CGS_3D_ASYMLUT
    40814145  xConfirmPara( m_nCGSFlag < 0 || m_nCGSFlag > 1 , "0<=CGS<=1" );
     
    42264290
    42274291#if SVC_EXTENSION
     4292#if VIEW_SCALABILITY
     4293  if( m_scalabilityMask[VIEW_ORDER_INDEX] )
     4294  {
     4295    printf("ViewOrderIndex                         : %d\n", m_apcLayerCfg[layer]->m_viewOrderIndex );
     4296    printf("ViewId                                 : %d\n", m_apcLayerCfg[layer]->m_viewId );
     4297  }
     4298#endif
    42284299      printf("PTL index                              : %d\n", m_apcLayerCfg[layerIdx]->m_layerPTLIdx );
    42294300    }
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.h

    r1526 r1534  
    118118  Int       m_numLayers;                                      ///< number of layers
    119119  Int       m_scalabilityMask[MAX_VPS_NUM_SCALABILITY_TYPES]; ///< scalability_mask
     120#if VIEW_SCALABILITY
     121  Int       m_iNumberOfViews;                                 ///< number of views
     122  std::vector<Int> m_ViewIdVal;
     123#endif 
    120124  Bool      m_maxTidRefPresentFlag;
    121125
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncLayerCfg.h

    r1526 r1534  
    5454  Int       m_auxId;
    5555#endif
     56#if VIEW_SCALABILITY
     57  Int       m_viewOrderIndex;
     58  Int       m_viewId;
     59#endif
    5660
    5761  Int       m_extraRPSs;                                     ///< extra RPSs added to handle CRA
     
    173177  Int*    getPredLayerIds() const              { return m_predLayerIds;             }
    174178  Int     getPredLayerIdx(Int i) const         { return m_predLayerIds[i];          }
     179#if VIEW_SCALABILITY
     180  Int     getViewOrderIndex()                  { return m_viewOrderIndex;       }
     181  Int     getViewId()                          { return m_viewId;               }
     182#endif
    175183
    176184  Int     getRepFormatIdx() const              { return m_repFormatIdx;         }
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncTop.cpp

    r1526 r1534  
    468468    m_cTEncTop.setBottomRightTileIndex                              ( m_bottomRightTileIndex );
    469469    m_cTEncTop.setIlcIdc                                            ( m_ilcIdc );
     470#endif
     471#if VIEW_SCALABILITY
     472    m_cTEncTop.setUseDisparitySearchRangeRestriction                ( m_scalabilityMask[VIEW_ORDER_INDEX] );
    470473#endif
    471474
     
    971974
    972975  UInt i = 0, dimIdLen = 0;
     976#if VIEW_SCALABILITY
     977  Int curDimId=0;
     978
     979  if( m_scalabilityMask[VIEW_ORDER_INDEX] )
     980  {
     981    UInt maxViewOrderIndex = 0,maxViewId=0;
     982    UInt voiLen = 1,vidLen=1;
     983
     984    for( i = 0; i < vps->getMaxLayers(); i++ )
     985    {
     986      if( m_apcLayerCfg[i]->getViewOrderIndex() > maxViewOrderIndex )
     987      {
     988        maxViewOrderIndex = m_apcLayerCfg[i]->getViewOrderIndex();
     989      }
     990
     991      if( m_apcLayerCfg[i]->getViewId() > maxViewId )
     992      {
     993        maxViewId = m_apcLayerCfg[i]->getViewId();
     994      }
     995
     996    }
     997    while((1 << voiLen) < (maxViewOrderIndex + 1))
     998    {
     999      voiLen++;
     1000    }
     1001
     1002    while((1 << vidLen) < (maxViewId + 1))
     1003    {
     1004      vidLen++;
     1005    }
     1006
     1007    vps->setDimensionIdLen(0, voiLen);
     1008    vps->setViewIdLen(vidLen);
     1009
     1010    for( i = 0; i < vps->getMaxLayers(); i++ )
     1011    {
     1012      vps->setDimensionId(i, 0, m_apcLayerCfg[i]->getViewOrderIndex());         
     1013    }
     1014
     1015    for( i = 0; i < m_iNumberOfViews; i++ )
     1016    {
     1017      vps->setViewIdVal(i, m_ViewIdVal[i]);
     1018    }
     1019
     1020    curDimId++;
     1021  }
     1022#endif
    9731023
    9741024  while((1 << dimIdLen) < m_numLayers)
     
    9761026    dimIdLen++;
    9771027  }
     1028#if VIEW_SCALABILITY
     1029  vps->setDimensionIdLen(curDimId, dimIdLen);
     1030#else
    9781031  vps->setDimensionIdLen(0, dimIdLen);
     1032#endif
    9791033  vps->setNuhLayerIdPresentFlag(false);
    9801034  vps->setLayerIdInNuh(0, 0);
     
    9841038    vps->setLayerIdInNuh(i, m_apcLayerCfg[i]->m_layerId);   
    9851039    vps->setLayerIdxInVps(vps->getLayerIdInNuh(i), i);
     1040#if VIEW_SCALABILITY
     1041    vps->setDimensionId(i, curDimId, i);
     1042#else
    9861043    vps->setDimensionId(i, 0, i);
    987 
     1044#endif
    9881045    if( m_apcLayerCfg[i]->m_layerId != i )
    9891046    {
     
    10931150      scalabilityTypes += m_scalabilityMask[i];
    10941151    }
     1152#if VIEW_SCALABILITY
     1153    assert( scalabilityTypes <= 3 );
     1154#else
    10951155#if AUXILIARY_PICTURES
    10961156    assert( scalabilityTypes <= 2 );
    10971157#else
    10981158    assert( scalabilityTypes == 1 );
     1159#endif
    10991160#endif
    11001161    vps->setNumScalabilityTypes(scalabilityTypes);
Note: See TracChangeset for help on using the changeset viewer.