Changeset 973 in 3DVCSoftware for branches/HTM-11.1-dev0/source/App
- Timestamp:
- 6 Jul 2014, 04:44:14 (11 years ago)
- Location:
- branches/HTM-11.1-dev0/source/App
- Files:
-
- 6 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 //! \} -
branches/HTM-11.1-dev0/source/App/TAppDecoder/TAppDecTop.h
r964 r973 68 68 TComPicLists m_ivPicLists; ///< picture buffers of decoder instances 69 69 Bool m_layerInitilizedFlags[ MAX_NUM_LAYER_IDS ]; ///< for layerwise startup 70 #if H_MV_HLS_7_VPS_P0300_2771 70 TComVPS* m_vps; ///< active VPS 72 #endif73 71 #else 74 72 TDecTop m_cTDecTop; ///< decoder class … … 79 77 Int m_pocLastDisplay [ MAX_NUM_LAYERS ]; ///< last POC in display order 80 78 Bool m_reconOpen [ MAX_NUM_LAYERS ]; ///< reconstruction file opened 79 Bool m_markedForOutput; 81 80 #else 82 81 Int m_iPOCLastDisplay; ///< last POC in display order 83 82 #endif 84 #if H_MV_HLS_7_VPS_P0300_2785 Bool m_markedForOutput;86 #endif87 88 83 89 84 #if H_3D … … 107 102 Void xWriteOutput ( TComList<TComPic*>* pcListPic, Int layerId, Int tId ); ///< write YUV to file 108 103 109 #if H_MV_HLS_7_VPS_P0300_27110 104 Void xMarkForOutput ( Bool allLayersDecoded, Int pocLastPic, Int layerIdLastPic ); 111 Void xMarkAltOutPic ( Int targetOutputLayer, Int pocLastPic ) 112 { 113 Int optLayerIdxInVps = m_vps->getLayerIdInNuh( targetOutputLayer ); 114 Int highestNuhLayerId = -1; 115 TComPic* picWithHighestNuhLayerId = NULL; 116 for (Int dIdx = 0; dIdx < m_numDecoders; dIdx++) 117 { 118 Int curLayerId = m_tDecTop[dIdx]->getLayerId(); 119 Int curLayerIdxInVps = m_vps->getLayerIdInNuh( curLayerId ); 120 if ( m_vps->getInDirectDependencyFlag(optLayerIdxInVps, curLayerIdxInVps ) ) 121 { 122 TComPic* curPic = m_ivPicLists.getPic( curLayerId, pocLastPic ); 123 if (curPic != NULL) 124 { 125 if (curPic->getReconMark() && curPic->getPicOutputFlag() ) 126 { 127 curPic->setOutputMark ( false ); 128 curPic->setPicOutputFlag( false ); 129 if ( curLayerId > highestNuhLayerId) 130 { 131 highestNuhLayerId = curLayerId ; 132 picWithHighestNuhLayerId = curPic; 133 } 134 } 135 } 136 } 137 } 138 if ( picWithHighestNuhLayerId != NULL ) 139 { 140 picWithHighestNuhLayerId->setPicOutputFlag(true); 141 picWithHighestNuhLayerId->setOutputMark (true); 142 } 143 } 144 #endif 105 Void xMarkAltOutPic ( Int targetOutputLayer, Int pocLastPic ); 145 106 146 107 Void xFlushOutput ( TComList<TComPic*>* pcListPic, Int layerId ); ///< flush all remaining decoded pictures to file -
branches/HTM-11.1-dev0/source/App/TAppEncoder/TAppEncCfg.cpp
r969 r973 393 393 ("LayerIdsInAddOutputLayerSet_%d", m_layerIdsInAddOutputLayerSet , std::vector<Int>(0,0), MAX_VPS_ADD_OUTPUT_LAYER_SETS, "Indices in VPS of output layers in additional output layer set") 394 394 ("LayerIdsInDefOutputLayerSet_%d", m_layerIdsInDefOutputLayerSet , std::vector<Int>(0,0), MAX_VPS_OP_SETS_PLUS1, "Indices in VPS of output layers in layer set") 395 #if H_MV_HLS_7_VPS_P0300_27396 395 ("AltOutputLayerFlag", m_altOutputLayerFlag , std::vector<Bool>(1,0), "Alt output layer flag") 397 #endif398 396 ("ProfileLevelTierIdx", m_profileLevelTierIdx, std::vector<Int>(1,0), "Indices to profile level tier") 399 397 … … 1056 1054 xResizeVector( m_wppInUseFlag ); 1057 1055 1058 #if H_MV_HLS_7_VPS_P0300_271059 1056 for (Int olsIdx = 0; olsIdx < m_vpsNumLayerSets + (Int) m_outputLayerSetIdx.size(); olsIdx++) 1060 1057 { 1061 1058 m_altOutputLayerFlag.push_back( false ); 1062 1059 } 1063 #endif1064 1060 #else 1065 1061 m_aidQP = new Int[ m_framesToBeEncoded + m_iGOPSize + 1 ]; … … 1463 1459 } 1464 1460 1465 #if H_MV_HLS_7_VPS_P0300_271466 1461 xConfirmPara( m_altOutputLayerFlag.size() < m_vpsNumLayerSets + m_outputLayerSetIdx.size(), "The number of Profile Level Tier indices must be equal to the number of layer set plus the number of output layer set indices" ); 1467 #endif1468 1462 xConfirmPara( m_profileLevelTierIdx.size() < m_vpsNumLayerSets + m_outputLayerSetIdx.size(), "The number of Profile Level Tier indices must be equal to the number of layer set plus the number of output layer set indices" ); 1469 1463 -
branches/HTM-11.1-dev0/source/App/TAppEncoder/TAppEncCfg.h
r969 r973 94 94 std::vector< std::vector<Int> > m_layerIdsInDefOutputLayerSet; ///< Indices in vps of output layers in layer sets 95 95 std::vector<Int> m_profileLevelTierIdx; ///< Indices of of profile level tier 96 #if H_MV_HLS_7_VPS_P0300_2797 96 std::vector<Bool> m_altOutputLayerFlag; ///< Alt output layer flag 98 #endif99 97 100 98 // Dependencies -
branches/HTM-11.1-dev0/source/App/TAppEncoder/TAppEncTop.cpp
r971 r973 1280 1280 1281 1281 Int defaultDirectDependencyType = -1; 1282 #if MV_FIX_DEP_TYPES1283 1282 Bool defaultDirectDependencyFlag = false; 1284 #else1285 Bool defaultDirectDependencyFlag = true;1286 #endif1287 1283 1288 1284 for( Int depLayer = 1; depLayer < m_numberOfLayers; depLayer++ ) … … 1303 1299 { 1304 1300 defaultDirectDependencyType = curDirectDependencyType; 1305 #if MV_FIX_DEP_TYPES1306 1301 defaultDirectDependencyFlag = true; 1307 #endif1308 1302 } 1309 1303 … … 1644 1638 vps.setProfileLevelTierIdx( olsIdx, m_profileLevelTierIdx[ olsIdx ] ); 1645 1639 } 1646 #if H_MV_HLS_7_VPS_P0300_27 1640 1647 1641 if ( vps.getNumOutputLayersInOutputLayerSet( olsIdx ) == 1 && 1648 1642 vps.getNumDirectRefLayers( vps.getOlsHighestOutputLayerId( olsIdx ) ) ) … … 1658 1652 } 1659 1653 } 1660 #else1661 vps.setAltOutputLayerFlag( olsIdx , false);1662 #endif1663 1654 } 1664 1655 } -
branches/HTM-11.1-dev0/source/App/TAppEncoder/TAppEncTop.h
r964 r973 75 75 76 76 TComPicLists m_ivPicLists; ///< picture buffers of encoder instances 77 #if H_MV _HLS_877 #if H_MV 78 78 TComVPS* m_vps; ///< vps 79 79 #else
Note: See TracChangeset for help on using the changeset viewer.