Changeset 290 in SHVCSoftware for branches/SHM-2.1-dev/source/Lib


Ignore:
Timestamp:
18 Jun 2013, 13:57:03 (12 years ago)
Author:
nokia
Message:

JCTVC-M0457: Prediction indications

Location:
branches/SHM-2.1-dev/source/Lib
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-2.1-dev/source/Lib/TLibCommon/TComSlice.cpp

    r289 r290  
    16711671  ::memset(m_numDirectRefLayers,   0, sizeof(m_numDirectRefLayers  ));
    16721672  ::memset(m_refLayerId,           0, sizeof(m_refLayerId          ));
     1673#if M0457_PREDICTION_INDICATIONS
     1674  m_directDepTypeLen = 2;
     1675  ::memset(m_directDependencyType, 0, sizeof(m_directDependencyType));
     1676#endif
    16731677#endif
    16741678#if DERIVE_LAYER_ID_LIST_VARIABLES
  • branches/SHM-2.1-dev/source/Lib/TLibCommon/TComSlice.h

    r289 r290  
    549549  UInt       m_numDirectRefLayers[MAX_VPS_LAYER_ID_PLUS1];
    550550  UInt       m_refLayerId[MAX_VPS_LAYER_ID_PLUS1][MAX_VPS_LAYER_ID_PLUS1];
     551#if M0457_PREDICTION_INDICATIONS
     552  UInt       m_directDepTypeLen;
     553  UInt       m_directDependencyType[MAX_VPS_LAYER_ID_PLUS1][MAX_VPS_LAYER_ID_PLUS1];
     554#endif
    551555#endif
    552556#if VPS_PROFILE_OUTPUT_LAYERS
     
    694698  UInt   getRefLayerId(Int layerId, Int refLayerIdx)                            { return m_refLayerId[layerId][refLayerIdx];              }
    695699  Void   setRefLayerId(Int layerId, Int refLayerIdx, UInt refLayerId)           { m_refLayerId[layerId][refLayerIdx] = refLayerId;        }
     700
     701#if M0457_PREDICTION_INDICATIONS
     702  UInt   getDirectDepTypeLen()                                                  { return m_directDepTypeLen;                              }
     703  Void   setDirectDepTypeLen(UInt x)                                            { m_directDepTypeLen = x;                                 }
     704
     705  UInt   getDirectDependencyType(Int currLayerId, Int refLayerId)               { return m_directDependencyType[currLayerId][refLayerId]; }
     706  Void   setDirectDependencyType(Int currLayerId, Int refLayerId, UInt x)       { m_directDependencyType[currLayerId][refLayerId] = x;    }
     707#endif
    696708#endif
    697709#if VPS_PROFILE_OUTPUT_LAYERS
  • branches/SHM-2.1-dev/source/Lib/TLibCommon/TypeDef.h

    r289 r290  
    6161#define SPS_SUB_LAYER_INFO               1      ///< M0268: Do not signal sps_max_sub_layers_minus1 and sps_temporal_id_nesting_flag for nuh_layer_id greater than 0
    6262#define VPS_SPLIT_FLAG                   1      ///< M0163: Do not signal dimension_id and the last dimension_id_len_minus1, when splitting_flag is equal to 1.
     63#define M0457_PREDICTION_INDICATIONS     1
    6364#endif
    6465
  • branches/SHM-2.1-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r289 r290  
    11431143#endif
    11441144#endif
     1145#if VPS_EXTN_DIRECT_REF_LAYERS && M0457_PREDICTION_INDICATIONS
     1146  READ_UVLC( uiCode,           "direct_dep_type_len_minus2"); vps->setDirectDepTypeLen(uiCode+2);
     1147  for(i = 1; i < vps->getMaxLayers(); i++)
     1148  {
     1149    for(j = 0; j < i; j++)
     1150    {
     1151      if (vps->getDirectDependencyFlag(i, j))
     1152      {
     1153        READ_CODE( vps->getDirectDepTypeLen(), uiCode, "direct_dependency_type[i][j]" ); vps->setDirectDependencyType(i, j, uiCode);
     1154      }
     1155    }
     1156  }
     1157#endif
    11451158}
    11461159#endif
  • branches/SHM-2.1-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r288 r290  
    538538  m_apcSlicePilot->setTLayerInfo(nalu.m_temporalId);
    539539
     540#if VPS_EXTN_DIRECT_REF_LAYERS && M0457_PREDICTION_INDICATIONS
     541  setRefLayerParams(m_apcSlicePilot->getVPS());
     542#endif
    540543#if SVC_EXTENSION
    541544  m_cEntropyDecoder.decodeSliceHeader (m_apcSlicePilot, &m_parameterSetManagerDecoder[m_layerId]);
     
    13161319#endif
    13171320
     1321#if VPS_EXTN_DIRECT_REF_LAYERS && M0457_PREDICTION_INDICATIONS
     1322
     1323Void TDecTop::setRefLayerParams( TComVPS* vps )
     1324{
     1325  for(UInt layer = 0; layer < m_numLayer; layer++)
     1326  {
     1327    TDecTop *decTop = (TDecTop *)getLayerDec(layer);
     1328    decTop->setNumSamplePredRefLayers(0);
     1329    decTop->setNumMotionPredRefLayers(0);
     1330    decTop->setNumDirectRefLayers(0);
     1331    for(Int i = 0; i < MAX_VPS_LAYER_ID_PLUS1; i++)
     1332    {
     1333      decTop->setSamplePredEnabledFlag(i, false);
     1334      decTop->setMotionPredEnabledFlag(i, false);
     1335      decTop->setSamplePredRefLayerId(i, 0);
     1336      decTop->setMotionPredRefLayerId(i, 0);
     1337    }
     1338    for(Int j = 0; j < layer; j++)
     1339    {
     1340      if (vps->getDirectDependencyFlag(layer, j))
     1341      {
     1342        decTop->setRefLayerId(decTop->getNumDirectRefLayers(), vps->getLayerIdInNuh(layer));
     1343        decTop->setNumDirectRefLayers(decTop->getNumDirectRefLayers() + 1);
     1344
     1345        Int samplePredEnabledFlag = (vps->getDirectDependencyType(layer, j) + 1) & 1;
     1346        decTop->setSamplePredEnabledFlag(j, samplePredEnabledFlag == 1 ? true : false);
     1347        decTop->setNumSamplePredRefLayers(decTop->getNumSamplePredRefLayers() + samplePredEnabledFlag);
     1348
     1349        Int motionPredEnabledFlag = ((vps->getDirectDependencyType(layer, j) + 1) & 2) >> 1;
     1350        decTop->setMotionPredEnabledFlag(j, motionPredEnabledFlag == 1 ? true : false);
     1351        decTop->setNumMotionPredRefLayers(decTop->getNumMotionPredRefLayers() + motionPredEnabledFlag);
     1352      }
     1353    }
     1354  }
     1355  for ( Int i = 1, mIdx = 0, sIdx = 0; i < m_numLayer; i++ )
     1356  {
     1357    Int iNuhLId = vps->getLayerIdInNuh(i);
     1358    TDecTop *decTop = (TDecTop *)getLayerDec(iNuhLId);
     1359    for ( Int j = 0; j < i; j++ )
     1360    {
     1361      if (decTop->getMotionPredEnabledFlag(j))
     1362      {
     1363        decTop->setMotionPredRefLayerId(mIdx++, vps->getLayerIdInNuh(j));
     1364      }
     1365      if (decTop->getSamplePredEnabledFlag(j))
     1366      {
     1367        decTop->setSamplePredRefLayerId(sIdx++, vps->getLayerIdInNuh(j));
     1368      }
     1369    }
     1370  }
     1371}
     1372
     1373#endif
    13181374//! \}
  • branches/SHM-2.1-dev/source/Lib/TLibDecoder/TDecTop.h

    r250 r290  
    120120  Int                     m_iBLSourceHeight;
    121121#endif
     122#if VPS_EXTN_DIRECT_REF_LAYERS && M0457_PREDICTION_INDICATIONS
     123  Int                     m_numDirectRefLayers;
     124  Int                     m_refLayerId[MAX_VPS_LAYER_ID_PLUS1];
     125  Int                     m_numSamplePredRefLayers;
     126  Int                     m_samplePredRefLayerId[MAX_VPS_LAYER_ID_PLUS1];
     127  Int                     m_numMotionPredRefLayers;
     128  Int                     m_motionPredRefLayerId[MAX_VPS_LAYER_ID_PLUS1];
     129  Bool                    m_samplePredEnabledFlag[MAX_VPS_LAYER_ID_PLUS1];
     130  Bool                    m_motionPredEnabledFlag[MAX_VPS_LAYER_ID_PLUS1];
     131#endif
    122132#endif
    123133#if AVC_SYNTAX || SYNTAX_OUTPUT
     
    158168#if VPS_EXTN_DIRECT_REF_LAYERS
    159169  TDecTop*  getRefLayerDec(UInt refLayerIdc);
     170#if M0457_PREDICTION_INDICATIONS
     171  Int       getNumDirectRefLayers           ()                              { return m_numDirectRefLayers;      }
     172  Void      setNumDirectRefLayers           (Int num)                       { m_numDirectRefLayers = num;       }
     173
     174  Int       getRefLayerId                   (Int i)                         { return m_refLayerId[i];           }
     175  Void      setRefLayerId                   (Int i, Int refLayerId)         { m_refLayerId[i] = refLayerId;     }
     176
     177  Int       getNumSamplePredRefLayers       ()                              { return m_numSamplePredRefLayers;  }
     178  Void      setNumSamplePredRefLayers       (Int num)                       { m_numSamplePredRefLayers = num;   }
     179
     180  Int       getSamplePredRefLayerId         (Int i)                         { return m_samplePredRefLayerId[i];       }
     181  Void      setSamplePredRefLayerId         (Int i, Int refLayerId)         { m_samplePredRefLayerId[i] = refLayerId; }
     182
     183  Int       getNumMotionPredRefLayers       ()                              { return m_numMotionPredRefLayers;  }
     184  Void      setNumMotionPredRefLayers       (Int num)                       { m_numMotionPredRefLayers = num;   }
     185
     186  Int       getMotionPredRefLayerId         (Int i)                         { return m_motionPredRefLayerId[i];       }
     187  Void      setMotionPredRefLayerId         (Int i, Int refLayerId)         { m_motionPredRefLayerId[i] = refLayerId; }
     188
     189  Bool      getSamplePredEnabledFlag        (Int i)                         { return m_samplePredEnabledFlag[i];  }
     190  Void      setSamplePredEnabledFlag        (Int i,Bool flag)               { m_samplePredEnabledFlag[i] = flag;  }
     191
     192  Bool      getMotionPredEnabledFlag        (Int i)                         { return m_motionPredEnabledFlag[i];  }
     193  Void      setMotionPredEnabledFlag        (Int i,Bool flag)               { m_motionPredEnabledFlag[i] = flag;  }
     194
     195  TDecTop*  getSamplePredRefLayerDec        ( UInt layerId );
     196  TDecTop*  getMotionPredRefLayerDec        ( UInt layerId );
     197
     198  Void      setRefLayerParams( TComVPS* vps );
     199#endif
    160200#endif
    161201#if AVC_BASE
  • branches/SHM-2.1-dev/source/Lib/TLibEncoder/TEncCavlc.cpp

    r289 r290  
    864864#endif
    865865#endif
     866#if VPS_EXTN_DIRECT_REF_LAYERS && M0457_PREDICTION_INDICATIONS
     867  WRITE_UVLC( vps->getDirectDepTypeLen()-2,                           "direct_dep_type_len_minus2");
     868  for(i = 1; i < vps->getMaxLayers(); i++)
     869  {
     870    for(j = 0; j < i; j++)
     871    {
     872      if (vps->getDirectDependencyFlag(i, j))
     873      {
     874        WRITE_CODE( vps->getDirectDependencyType(i, j), vps->getDirectDepTypeLen(), "direct_dependency_type[i][j]" );
     875      }
     876    }
     877  }
     878#endif
    866879}
    867880#endif
  • branches/SHM-2.1-dev/source/Lib/TLibEncoder/TEncCfg.h

    r282 r290  
    148148  Int       m_numActiveRefLayers;
    149149  Int       m_predLayerId[MAX_VPS_LAYER_ID_PLUS1];
     150#if M0457_PREDICTION_INDICATIONS
     151  Int       m_numSamplePredRefLayers;
     152  Int       m_samplePredRefLayerId[MAX_VPS_LAYER_ID_PLUS1];
     153  Int       m_numMotionPredRefLayers;
     154  Int       m_motionPredRefLayerId[MAX_VPS_LAYER_ID_PLUS1];
     155  Bool      m_samplePredEnabledFlag[MAX_VPS_LAYER_ID_PLUS1];
     156  Bool      m_motionPredEnabledFlag[MAX_VPS_LAYER_ID_PLUS1];
     157#endif
    150158#endif
    151159  //======= Transform =============
     
    414422  Int       getPredLayerId                  (Int i)                         { return m_predLayerId[i];          }
    415423  Void      setPredLayerId                  (Int i, Int refLayerId)         { m_predLayerId[i] = refLayerId;    }
     424
     425#if M0457_PREDICTION_INDICATIONS
     426  Int       getNumSamplePredRefLayers       ()                              { return m_numSamplePredRefLayers;  }
     427  Void      setNumSamplePredRefLayers       (Int num)                       { m_numSamplePredRefLayers = num;   }
     428
     429  Int       getSamplePredRefLayerId         (Int i)                         { return m_samplePredRefLayerId[i];       }
     430  Void      setSamplePredRefLayerId         (Int i, Int refLayerId)         { m_samplePredRefLayerId[i] = refLayerId; }
     431
     432  Int       getNumMotionPredRefLayers       ()                              { return m_numMotionPredRefLayers;  }
     433  Void      setNumMotionPredRefLayers       (Int num)                       { m_numMotionPredRefLayers = num;   }
     434
     435  Int       getMotionPredRefLayerId         (Int i)                         { return m_motionPredRefLayerId[i];       }
     436  Void      setMotionPredRefLayerId         (Int i, Int refLayerId)         { m_motionPredRefLayerId[i] = refLayerId; }
     437
     438  Bool      getSamplePredEnabledFlag        (Int i)                         { return m_samplePredEnabledFlag[i];  }
     439  Void      setSamplePredEnabledFlag        (Int i,Bool flag)               { m_samplePredEnabledFlag[i] = flag;  }
     440
     441  Bool      getMotionPredEnabledFlag        (Int i)                         { return m_motionPredEnabledFlag[i];  }
     442  Void      setMotionPredEnabledFlag        (Int i,Bool flag)               { m_motionPredEnabledFlag[i] = flag;  }
     443#endif
    416444#endif
    417445  //======== Transform =============
Note: See TracChangeset for help on using the changeset viewer.