Changeset 738 in 3DVCSoftware for trunk/source/App/TAppDecoder/TAppDecTop.cpp
- Timestamp:
- 10 Dec 2013, 13:50:12 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/App/TAppDecoder/TAppDecTop.cpp
r655 r738 61 61 { 62 62 #if H_MV 63 #if H_MV_LAYER_WISE_STARTUP 64 for (Int i = 0; i < MAX_NUM_LAYER_IDS; i++) 65 { 66 m_layerIdToDecIdx[i] = -1; 67 m_layerInitilizedFlags[i] = false; 68 } 69 #else 63 70 for (Int i = 0; i < MAX_NUM_LAYER_IDS; i++) m_layerIdToDecIdx[i] = -1; 71 #endif 64 72 #endif 65 73 #if H_3D … … 184 192 Bool newSliceDiffPoc = false; 185 193 Bool newSliceDiffLayer = false; 194 #if H_MV_FIX_SKIP_PICTURES 195 Bool sliceSkippedFlag = false; 196 #endif 186 197 #if H_3D 187 198 Bool allLayersDecoded = false; … … 201 212 read(nalu, nalUnit); 202 213 #if H_MV 214 #if !H_MV_6_HRD_O0217_13 203 215 Int decIdx = xGetDecoderIdx( nalu.m_layerId , true ); 204 216 #endif 217 #if H_MV_6_LAYER_ID_32 218 if( (m_iMaxTemporalLayer >= 0 && nalu.m_temporalId > m_iMaxTemporalLayer) || !isNaluWithinTargetDecLayerIdSet(&nalu) || nalu.m_layerId > MAX_NUM_LAYER_IDS-1 ) 219 #else 205 220 if( (m_iMaxTemporalLayer >= 0 && nalu.m_temporalId > m_iMaxTemporalLayer) || !isNaluWithinTargetDecLayerIdSet(&nalu) ) 221 #endif 206 222 { 207 223 bNewPicture = false; 224 #if H_MV_6_LAYER_ID_32 225 if ( !bitstreamFile ) 226 { 227 decIdxLastPic = decIdxCurrPic; 228 } 229 #endif 208 230 } 209 231 else 210 232 { 233 #if H_MV_6_HRD_O0217_13 234 Int decIdx = xGetDecoderIdx( nalu.m_layerId , true ); 235 #endif 211 236 newSliceDiffLayer = nalu.isSlice() && ( nalu.m_layerId != layerIdCurrPic ) && !firstSlice; 237 #if H_MV_FIX_SKIP_PICTURES 238 newSliceDiffPoc = m_tDecTop[decIdx]->decode(nalu, m_iSkipFrame, m_pocLastDisplay[decIdx], newSliceDiffLayer, sliceSkippedFlag ); 239 #else 212 240 newSliceDiffPoc = m_tDecTop[decIdx]->decode(nalu, m_iSkipFrame, m_pocLastDisplay[decIdx], newSliceDiffLayer ); 241 #endif 213 242 // decode function only returns true when all of the following conditions are true 214 243 // - poc in particular layer changes … … 216 245 // - nalu.isSlice() == true 217 246 247 #if H_MV_6_HRD_O0217_13 248 // Update TargetDecLayerIdList only when not specified by layer id file, specification by file might actually out of conformance. 249 if (nalu.m_nalUnitType == NAL_UNIT_VPS && m_targetDecLayerIdSetFileEmpty ) 250 { 251 TComVPS* vps = m_tDecTop[decIdx]->getPrefetchedVPS(); 252 if ( m_targetOptLayerSetIdx == -1 ) 253 { 254 // Not normative! Corresponds to specification by "External Means". (Should be set equal to 0, when no external means available. ) 255 m_targetOptLayerSetIdx = vps->getVpsNumLayerSetsMinus1(); 256 } 257 258 m_targetDecLayerIdSet = vps->getTargetDecLayerIdList( m_targetOptLayerSetIdx ); 259 } 260 #endif 261 #if H_MV_FIX_SKIP_PICTURES 262 bNewPicture = ( newSliceDiffLayer || newSliceDiffPoc ) && !sliceSkippedFlag; 263 if ( nalu.isSlice() && firstSlice && !sliceSkippedFlag ) 264 #else 218 265 bNewPicture = newSliceDiffLayer || newSliceDiffPoc; 219 266 220 267 if ( nalu.isSlice() && firstSlice ) 268 #endif 221 269 { 222 270 layerIdCurrPic = nalu.m_layerId; … … 832 880 { 833 881 Int decIdx = -1; 882 883 #if H_MV_6_LAYER_ID_32 884 if ( layerId > MAX_NUM_LAYER_IDS-1 ) 885 { 886 return decIdx; 887 } 888 #endif 889 834 890 if ( m_layerIdToDecIdx[ layerId ] != -1 ) 835 891 { … … 850 906 m_tDecTop[ decIdx ]->setDecodedPictureHashSEIEnabled(m_decodedPictureHashSEIEnabled); 851 907 m_tDecTop[ decIdx ]->setIvPicLists( &m_ivPicLists ); 908 #if H_MV_LAYER_WISE_STARTUP 909 m_tDecTop[ decIdx ]->setLayerInitilizedFlags( m_layerInitilizedFlags ); 910 #endif 911 852 912 #if H_3D 853 913 m_tDecTop[ decIdx ]->setCamParsCollector( &m_cCamParsCollector );
Note: See TracChangeset for help on using the changeset viewer.