Changeset 973 in 3DVCSoftware for branches/HTM-11.1-dev0/source/App/TAppDecoder/TAppDecTop.cpp
- Timestamp:
- 6 Jul 2014, 04:44:14 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-11.1-dev0/source/App/TAppDecoder/TAppDecTop.cpp
r964 r973 71 71 #endif 72 72 73 #if H_MV _HLS_7_VPS_P0300_2773 #if H_MV 74 74 m_markedForOutput = false; 75 75 #endif … … 161 161 Int pocLastPic = -MAX_INT; 162 162 163 #if H_MV_HLS_7_VPS_P0300_27164 163 Int layerIdLastPic = -MAX_INT; 165 #endif166 164 Int layerIdCurrPic = 0; 167 165 … … 216 214 || (nalu.m_nalUnitType == NAL_UNIT_VPS && nalu.m_layerId > 0) 217 215 || (nalu.m_nalUnitType == NAL_UNIT_EOB && nalu.m_layerId > 0) 218 #if H_MV_HLS_8_MIS_Q0177_47219 216 || (nalu.m_nalUnitType == NAL_UNIT_EOS && nalu.m_layerId > 0) 220 #endif221 217 ) 222 218 { … … 237 233 // - nalu.isSlice() == true 238 234 239 #if H_MV_HLS_7_VPS_P0300_27240 235 if ( nalu.m_nalUnitType == NAL_UNIT_VPS ) 241 236 { … … 244 239 { 245 240 TComVPS* vps = m_vps; 246 #else247 // Update TargetDecLayerIdList only when not specified by layer id file, specification by file might actually out of conformance.248 if (nalu.m_nalUnitType == NAL_UNIT_VPS && m_targetDecLayerIdSetFileEmpty )249 {250 TComVPS* vps = m_tDecTop[decIdx]->getPrefetchedVPS();251 #endif252 241 if ( m_targetOptLayerSetIdx == -1 ) 253 242 { … … 255 244 m_targetOptLayerSetIdx = vps->getVpsNumLayerSetsMinus1(); 256 245 } 257 #if H_MV_HLS_8_HRD_Q0102_08 246 258 247 for (Int dI = 0; dI < m_numDecoders; dI++ ) 259 248 { 260 249 m_tDecTop[decIdx]->setTargetOptLayerSetIdx( m_targetOptLayerSetIdx ); 261 250 } 262 #endif263 251 264 252 if ( m_targetOptLayerSetIdx < 0 || m_targetOptLayerSetIdx >= vps->getNumOutputLayerSets() ) … … 269 257 m_targetDecLayerIdSet = vps->getTargetDecLayerIdList( m_targetOptLayerSetIdx ); 270 258 } 271 #if H_MV_HLS_7_VPS_P0300_27 272 } 273 #endif 259 } 274 260 #if H_3D 275 261 if (nalu.m_nalUnitType == NAL_UNIT_VPS ) … … 289 275 if ( bNewPicture || !bitstreamFile ) 290 276 { 291 #if H_MV_HLS_7_VPS_P0300_27292 277 layerIdLastPic = layerIdCurrPic; 293 #endif294 278 layerIdCurrPic = nalu.m_layerId; 295 279 pocLastPic = pocCurrPic; … … 340 324 assert( decIdxLastPic != -1 ); 341 325 m_tDecTop[decIdxLastPic]->endPicDecoding(poc, pcListPic, m_targetDecLayerIdSet ); 342 #if H_MV_HLS_7_VPS_P0300_27343 326 xMarkForOutput( allLayersDecoded, poc, layerIdLastPic ); 344 #endif345 327 #else 346 328 m_cTDecTop.executeLoopFilters(poc, pcListPic); … … 799 781 } 800 782 pcPic->setOutputMark(false); 801 #if H_MV _HLS_7_VPS_P0300_27783 #if H_MV 802 784 pcPic->setPicOutputFlag(false); 803 785 #endif … … 985 967 } 986 968 pcPic->setOutputMark(false); 987 #if H_MV _HLS_7_VPS_P0300_27969 #if H_MV 988 970 pcPic->setPicOutputFlag(false); 989 971 #endif … … 1061 1043 m_tDecTop[ decIdx ]->setIvPicLists( &m_ivPicLists ); 1062 1044 m_tDecTop[ decIdx ]->setLayerInitilizedFlags( m_layerInitilizedFlags ); 1063 #if H_MV_HLS_8_HRD_Q0102_081064 1045 m_tDecTop[ decIdx ]->setTargetOptLayerSetIdx( m_targetOptLayerSetIdx ); 1065 #endif1066 1046 1067 1047 #if H_3D … … 1099 1079 } 1100 1080 1101 1102 #if H_MV_HLS_7_VPS_P0300_271103 1081 Void TAppDecTop::xMarkForOutput( Bool allLayersDecoded, Int pocLastPic, Int layerIdLastPic ) 1104 1082 { … … 1152 1130 } 1153 1131 } 1154 #endif 1132 1133 Void TAppDecTop::xMarkAltOutPic( Int targetOutputLayer, Int pocLastPic ) 1134 { 1135 Int optLayerIdxInVps = m_vps->getLayerIdInNuh( targetOutputLayer ); 1136 Int highestNuhLayerId = -1; 1137 TComPic* picWithHighestNuhLayerId = NULL; 1138 for (Int dIdx = 0; dIdx < m_numDecoders; dIdx++) 1139 { 1140 Int curLayerId = m_tDecTop[dIdx]->getLayerId(); 1141 Int curLayerIdxInVps = m_vps->getLayerIdInNuh( curLayerId ); 1142 if ( m_vps->getInDirectDependencyFlag(optLayerIdxInVps, curLayerIdxInVps ) ) 1143 { 1144 TComPic* curPic = m_ivPicLists.getPic( curLayerId, pocLastPic ); 1145 if (curPic != NULL) 1146 { 1147 if (curPic->getReconMark() && curPic->getPicOutputFlag() ) 1148 { 1149 curPic->setOutputMark ( false ); 1150 curPic->setPicOutputFlag( false ); 1151 if ( curLayerId > highestNuhLayerId) 1152 { 1153 highestNuhLayerId = curLayerId ; 1154 picWithHighestNuhLayerId = curPic; 1155 } 1156 } 1157 } 1158 } 1159 } 1160 if ( picWithHighestNuhLayerId != NULL ) 1161 { 1162 picWithHighestNuhLayerId->setPicOutputFlag(true); 1163 picWithHighestNuhLayerId->setOutputMark (true); 1164 } 1165 } 1166 1155 1167 #endif 1156 1168 //! \}
Note: See TracChangeset for help on using the changeset viewer.