Changeset 1005 in SHVCSoftware for branches/SHM-dev/source/Lib/TLibDecoder
- Timestamp:
- 26 Jan 2015, 17:11:15 (11 years ago)
- Location:
- branches/SHM-dev/source/Lib/TLibDecoder
- Files:
-
- 3 edited
-
TDecCAVLC.cpp (modified) (3 diffs)
-
TDecTop.cpp (modified) (7 diffs)
-
TDecTop.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp
r1001 r1005 1813 1813 //If OpTid of the output operation point is equal to vps_max_sub_layer_minus1, the conformance is indicated by general_profile_idc being equal to 7 or general_profile_compatibility_flag[ 7 ] being equal to 1 1814 1814 //The following assert may be updated / upgraded to take care of general_profile_compatibility_flag. 1815 #if R0235_SMALLEST_LAYER_ID 1816 // The assertion below is not valid for independent non-base layers 1817 if (vps->getNumAddLayerSets() == 0) 1818 { 1819 #endif 1815 1820 if (j > 0 && vps->getLayerSetLayerIdList(layerSetIdxForOutputLayerSet, j) != 0 && vps->getLayerSetLayerIdList(layerSetIdxForOutputLayerSet, j - 1) != 0) 1816 1821 { … … 1819 1824 vps->getPTL(vps->getProfileLevelTierIdx(i, j))->getGeneralPTL()->getProfileCompatibilityFlag(vps->getPTL(vps->getProfileLevelTierIdx(i, j - 1))->getGeneralPTL()->getProfileIdc()) ); 1820 1825 } 1826 #if R0235_SMALLEST_LAYER_ID 1827 } 1828 #endif 1821 1829 #endif 1822 1830 } … … 3420 3428 for(Int kk = 0; kk < rpcSlice->getVPS()->getNumLayersInIdList(layerSetIdxForOutputLayerSet); kk++) 3421 3429 { 3430 #if R0235_SMALLEST_LAYER_ID 3431 if(vps->getNecessaryLayerFlag(ii, kk) && rpcSlice->getLayerId()==rpcSlice->getVPS()->getLayerSetLayerIdList(layerSetIdxForOutputLayerSet, kk)) 3432 #else 3422 3433 if(rpcSlice->getLayerId()==rpcSlice->getVPS()->getLayerSetLayerIdList(layerSetIdxForOutputLayerSet, kk)) 3434 #endif 3423 3435 { 3424 3436 chkAssert=1; -
branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp
r978 r1005 84 84 #if SVC_EXTENSION 85 85 m_layerId = 0; 86 #if R0235_SMALLEST_LAYER_ID 87 m_smallestLayerId = 0; 88 #endif 86 89 #if AVC_BASE 87 90 m_pBLReconFile = NULL; … … 1011 1014 #if OUTPUT_LAYER_SET_INDEX 1012 1015 // Following check should go wherever the VPS is activated 1013 checkValueOfTargetOutputLayerSetIdx( m_apcSlicePilot->getVPS()); 1016 #if R0235_SMALLEST_LAYER_ID 1017 if (!m_apcSlicePilot->getVPS()->getBaseLayerAvailableFlag()) 1018 { 1019 assert(nalu.m_layerId != 0); 1020 assert(m_apcSlicePilot->getVPS()->getNumAddLayerSets() > 0); 1021 if (getCommonDecoderParams()->getTargetOutputLayerSetIdx() >= 0) 1022 { 1023 UInt layerIdx = m_apcSlicePilot->getVPS()->getOutputLayerSetIdx(getCommonDecoderParams()->getTargetOutputLayerSetIdx()); 1024 assert(layerIdx > m_apcSlicePilot->getVPS()->getVpsNumLayerSetsMinus1()); 1025 } 1026 } 1027 if (m_apcSlicePilot->getVPS()->getNumAddLayerSets() == 0) 1028 { 1029 checkValueOfTargetOutputLayerSetIdx(m_apcSlicePilot->getVPS()); 1030 } 1031 #else 1032 checkValueOfTargetOutputLayerSetIdx(m_apcSlicePilot->getVPS()); 1033 #endif 1014 1034 #endif 1015 1035 #if RESOLUTION_BASED_DPB … … 1143 1163 #if NO_OUTPUT_OF_PRIOR_PICS 1144 1164 #if NO_CLRAS_OUTPUT_FLAG 1165 #if R0235_SMALLEST_LAYER_ID 1166 if (m_layerId == m_smallestLayerId && m_apcSlicePilot->getRapPicFlag()) 1167 #else 1145 1168 if (m_layerId == 0 && m_apcSlicePilot->getRapPicFlag() ) 1169 #endif 1146 1170 { 1147 1171 if (m_bFirstSliceInSequence) … … 1175 1199 } 1176 1200 1201 #if R0235_SMALLEST_LAYER_ID 1202 m_apcSlicePilot->decodingRefreshMarking( m_cListPic, m_noClrasOutputFlag, m_smallestLayerId ); 1203 #else 1177 1204 m_apcSlicePilot->decodingRefreshMarking( m_cListPic, m_noClrasOutputFlag ); 1205 #endif 1178 1206 #endif 1179 1207 … … 2640 2668 cListPic->clear(); 2641 2669 } 2670 #endif 2671 #if R0235_SMALLEST_LAYER_ID 2672 xDeriveSmallestLayerId(m_parameterSetManagerDecoder.getPrefetchedVPS(0)); 2642 2673 #endif 2643 2674 return false; … … 3126 3157 Void TDecTop::xCheckLayerReset() 3127 3158 { 3159 #if R0235_SMALLEST_LAYER_ID 3160 if (m_apcSlicePilot->isIRAP() && m_layerId > m_smallestLayerId) 3161 #else 3128 3162 if (m_apcSlicePilot->isIRAP() && m_layerId > 0) 3163 #endif 3129 3164 { 3130 3165 Bool layerResetFlag; … … 3210 3245 #endif 3211 3246 3247 #if R0235_SMALLEST_LAYER_ID 3248 Void TDecTop::xDeriveSmallestLayerId(TComVPS* vps) 3249 { 3250 UInt smallestLayerId; 3251 UInt targetOlsIdx = getCommonDecoderParams()->getTargetOutputLayerSetIdx(); 3252 UInt targetDecLayerSetIdx = vps->getOutputLayerSetIdx(targetOlsIdx); 3253 UInt lsIdx = targetDecLayerSetIdx; 3254 UInt targetDecLayerIdList[MAX_LAYERS] = {0}; 3255 3256 for (UInt i = 0, j = 0; i < vps->getNumLayersInIdList(lsIdx); i++) 3257 { 3258 if (vps->getNecessaryLayerFlag(targetOlsIdx, i)) 3259 { 3260 targetDecLayerIdList[j++] = vps->getLayerSetLayerIdList(lsIdx, i); 3261 } 3262 } 3263 3264 if (targetDecLayerSetIdx <= vps->getVpsNumLayerSetsMinus1()) 3265 { 3266 smallestLayerId = 0; 3267 } 3268 else if (vps->getNumLayersInIdList(targetDecLayerSetIdx) == 1) 3269 { 3270 smallestLayerId = 0; 3271 } 3272 else 3273 { 3274 smallestLayerId = targetDecLayerIdList[0]; 3275 } 3276 3277 for (UInt layer = 0; layer <= MAX_VPS_LAYER_ID_PLUS1 - 1; layer++) 3278 { 3279 m_ppcTDecTop[layer]->m_smallestLayerId = smallestLayerId; 3280 } 3281 } 3282 #endif 3283 3212 3284 #endif //SVC_EXTENSION 3213 3285 -
branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.h
r978 r1005 130 130 UInt m_numLayer; 131 131 TDecTop** m_ppcTDecTop; 132 #if R0235_SMALLEST_LAYER_ID 133 UInt m_smallestLayerId; 134 #endif 132 135 #if P0297_VPS_POC_LSB_ALIGNED_FLAG 133 136 Bool m_pocResettingFlag; … … 247 250 Void setLayerDec(TDecTop **p) { m_ppcTDecTop = p; } 248 251 TDecTop* getLayerDec(UInt layer) { return m_ppcTDecTop[layer]; } 252 #if R0235_SMALLEST_LAYER_ID 253 Void xDeriveSmallestLayerId(TComVPS* vps); 254 #endif 249 255 #if VPS_EXTN_DIRECT_REF_LAYERS 250 256 TDecTop* getRefLayerDec(UInt refLayerIdc);
Note: See TracChangeset for help on using the changeset viewer.