Changeset 614 in SHVCSoftware


Ignore:
Timestamp:
12 Feb 2014, 04:01:42 (11 years ago)
Author:
sharp
Message:
  1. Deshpande (Sharp) <sdeshpande@…>

JCTVC-P0156 DPB parameters up to maximum temporal sub-layers in the layer set
JCTVC-P0156 output_layer_flag[ i ][ j ] is signalled for j equal to 0 to NumLayersInIdList[ lsIdx ] inclusive

Location:
branches/SHM-5.1-dev/source/Lib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-5.1-dev/source/Lib/TLibCommon/TypeDef.h

    r613 r614  
    229229#endif
    230230#define SPS_DPB_PARAMS                   1      ///< JCTVC-P0155 signaling & inferrence for sps dpb parameters for nuh_layer_id > 0
    231 
     231#define DPB_PARAMS_MAXTLAYERS            1      ///< JCTVC-P0156 DPB parameters up to maximum temporal sub-layers in the layer set
     232#define NUM_OL_FLAGS                     1      ///< JCTVC-P0156 output_layer_flag[ i ][ j ] is signalled for j equal to 0 to NumLayersInIdList[ lsIdx ] inclusive
    232233#define NO_CLRAS_OUTPUT_FLAG             1
    233234#define O0149_CROSS_LAYER_BLA_FLAG       1      ///< JCTVC-O0149: signal cross_layer_bla_flag in slice header
  • branches/SHM-5.1-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r613 r614  
    12541254    {
    12551255      Int lsIdx = vps->getOutputLayerSetIdx(i);
     1256#if NUM_OL_FLAGS
     1257      for(j = 0; j < vps->getNumLayersInIdList(lsIdx) ; j++)
     1258#else
    12561259      for(j = 0; j < vps->getNumLayersInIdList(lsIdx) - 1; j++)
     1260#endif
    12571261      {
    12581262        READ_FLAG( uiCode, "output_layer_flag[i][j]"); vps->setOutputLayerFlag(i, j, uiCode);
     
    13251329      READ_CODE( numBits, uiCode, "output_layer_set_idx_minus1");   vps->setOutputLayerSetIdx( i, uiCode + 1);
    13261330      Int lsIdx = vps->getOutputLayerSetIdx(i);
     1331#if NUM_OL_FLAGS
     1332      for(j = 0; j < vps->getNumLayersInIdList(lsIdx) ; j++)
     1333#else
    13271334      for(j = 0; j < vps->getNumLayersInIdList(lsIdx) - 1; j++)
     1335#endif
    13281336      {
    13291337        READ_FLAG( uiCode, "output_layer_flag[i][j]"); vps->setOutputLayerFlag(i, j, uiCode);
     
    16311639{
    16321640  UInt uiCode;
     1641#if DPB_PARAMS_MAXTLAYERS
     1642    Int * MaxSubLayersInLayerSetMinus1 = new Int[vps->getNumOutputLayerSets()];
     1643    for(Int i = 1; i < vps->getNumOutputLayerSets(); i++)
     1644    {
     1645        UInt maxSLMinus1 = 0;
     1646#if CHANGE_NUMSUBDPB_IDX
     1647        Int optLsIdx = vps->getOutputLayerSetIdx( i );
     1648#else
     1649        Int optLsIdx = i;
     1650#endif
     1651        for(Int k = 0; k < vps->getNumLayersInIdList(optLsIdx); k++ ) {
     1652            Int  lId = vps->getLayerSetLayerIdList(optLsIdx, k);
     1653            maxSLMinus1 = max(maxSLMinus1, vps->getMaxTSLayersMinus1(vps->getLayerIdInVps(lId)));
     1654        }
     1655        MaxSubLayersInLayerSetMinus1[ i ] = maxSLMinus1;
     1656    }
     1657#endif
     1658   
    16331659#if !RESOLUTION_BASED_DPB
    16341660  vps->deriveNumberOfSubDpbs();
     
    16401666#endif
    16411667    READ_FLAG( uiCode, "sub_layer_flag_info_present_flag[i]");  vps->setSubLayerFlagInfoPresentFlag( i, uiCode ? true : false );
    1642     for(Int j = 0; j < vps->getMaxTLayers(); j++)
     1668#if DPB_PARAMS_MAXTLAYERS
     1669      for(Int j = 0; j <= MaxSubLayersInLayerSetMinus1[ i ]; j++)
     1670#else
     1671    for(Int j = 0; j <= vps->getMaxTLayers(); j++)
     1672#endif
    16431673    {
    16441674      if( j > 0 && vps->getSubLayerFlagInfoPresentFlag(i) )
  • branches/SHM-5.1-dev/source/Lib/TLibEncoder/TEncCavlc.cpp

    r613 r614  
    10031003#endif
    10041004      Int lsIdx = vps->getOutputLayerSetIdx(i);
     1005#if NUM_OL_FLAGS
     1006      for(j = 0; j < vps->getNumLayersInIdList(lsIdx) ; j++)
     1007#else
    10051008      for(j = 0; j < vps->getNumLayersInIdList(lsIdx) - 1; j++)
     1009#endif
    10061010      {
    10071011        WRITE_FLAG( vps->getOutputLayerFlag(i,j), "output_layer_flag[i][j]");
     
    12451249Void TEncCavlc::codeVpsDpbSizeTable(TComVPS *vps)
    12461250{
     1251#if DPB_PARAMS_MAXTLAYERS
     1252    Int * MaxSubLayersInLayerSetMinus1 = new Int[vps->getNumOutputLayerSets()];
     1253    for(Int i = 1; i < vps->getNumOutputLayerSets(); i++)
     1254    {
     1255        UInt maxSLMinus1 = 0;
     1256#if CHANGE_NUMSUBDPB_IDX
     1257        Int optLsIdx = vps->getOutputLayerSetIdx( i );
     1258#else
     1259        Int optLsIdx = i;
     1260#endif
     1261        for(Int k = 0; k < vps->getNumLayersInIdList(optLsIdx); k++ ) {
     1262            Int  lId = vps->getLayerSetLayerIdList(optLsIdx, k);
     1263            maxSLMinus1 = max(maxSLMinus1, vps->getMaxTSLayersMinus1(vps->getLayerIdInVps(lId)));
     1264        }
     1265        MaxSubLayersInLayerSetMinus1[ i ] = maxSLMinus1;
     1266    }
     1267#endif
     1268   
    12471269  for(Int i = 1; i < vps->getNumOutputLayerSets(); i++)
    12481270  {
     
    12501272    Int layerSetIdxForOutputLayerSet = vps->getOutputLayerSetIdx( i );
    12511273#endif
    1252     WRITE_FLAG( vps->getSubLayerFlagInfoPresentFlag( i ), "sub_layer_flag_info_present_flag[i]"); 
     1274    WRITE_FLAG( vps->getSubLayerFlagInfoPresentFlag( i ), "sub_layer_flag_info_present_flag[i]");
     1275#if DPB_PARAMS_MAXTLAYERS
     1276    for(Int j = 0; j <= MaxSubLayersInLayerSetMinus1[ i ]; j++)
     1277#else
    12531278    for(Int j = 0; j < vps->getMaxTLayers(); j++)
     1279#endif
    12541280    {
    12551281      if( j > 0 && vps->getSubLayerFlagInfoPresentFlag(i) )
Note: See TracChangeset for help on using the changeset viewer.