Changeset 534 in 3DVCSoftware for branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.cpp
- Timestamp:
- 13 Jul 2013, 10:26:41 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.cpp
r532 r534 118 118 xSetLayerIds ( vps ); 119 119 xSetDimensionIdAndLength ( vps ); 120 xSetDirectDependencyFlags( vps ); 120 xSetDependencies( vps ); 121 xSetProfileTierLevel ( vps ); 122 xSetLayerSets ( vps ); 121 123 #if H_3D 122 124 vps.initViewIndex(); … … 1079 1081 } 1080 1082 1081 Void TAppEncTop::xSetDirectDependencyFlags( TComVPS& vps ) 1082 { 1083 for( Int layer = 0; layer < m_numberOfLayers; layer++ ) 1084 { 1085 if( m_GOPListMvc[layer][MAX_GOP].m_POC == -1 ) 1086 { 1087 continue; 1088 } 1089 for( Int i = 0; i < getGOPSize()+1; i++ ) 1090 { 1091 GOPEntry ge = ( i < getGOPSize() ) ? m_GOPListMvc[layer][i] : m_GOPListMvc[layer][MAX_GOP]; 1092 for( Int j = 0; j < ge.m_numInterViewRefPics; j++ ) 1083 Void TAppEncTop::xSetDependencies( TComVPS& vps ) 1084 { 1085 // Direct dependency flags + dependency types 1086 for( Int depLayer = 1; depLayer < MAX_NUM_LAYERS; depLayer++ ) 1087 { 1088 for( Int refLayer = 0; refLayer < MAX_NUM_LAYERS; refLayer++ ) 1089 { 1090 vps.setDirectDependencyFlag( depLayer, refLayer, false); 1091 vps.setDirectDependencyType( depLayer, refLayer, -1 ); 1092 } 1093 } 1094 for( Int depLayer = 1; depLayer < m_numberOfLayers; depLayer++ ) 1095 { 1096 Int numRefLayers = (Int) m_directRefLayers[depLayer].size(); 1097 assert( numRefLayers == (Int) m_dependencyTypes[depLayer].size() ); 1098 for( Int i = 0; i < numRefLayers; i++ ) 1099 { 1100 Int refLayer = m_directRefLayers[depLayer][i]; 1101 vps.setDirectDependencyFlag( depLayer, refLayer, true); 1102 vps.setDirectDependencyType( depLayer, refLayer,m_dependencyTypes[depLayer][i]); 1103 } 1104 } 1105 1106 // Max temporal id for inter layer reference pictures 1107 for ( Int refLayerIdInVps = 0; refLayerIdInVps < m_numberOfLayers; refLayerIdInVps++) 1108 { 1109 Int maxTid = -1; 1110 for ( Int curLayerIdInVps = 1; curLayerIdInVps < m_numberOfLayers; curLayerIdInVps++) 1093 1111 { 1094 Int interLayerRef = layer + ge.m_interViewRefs[j]; 1095 vps.setDirectDependencyFlag( layer, interLayerRef, true ); 1112 for( Int i = 0; i < getGOPSize(); i++ ) 1113 { 1114 GOPEntry geCur = m_GOPListMvc[curLayerIdInVps][i]; 1115 GOPEntry geRef = m_GOPListMvc[refLayerIdInVps][i]; 1116 1117 for (Int j = 0; j < geCur.m_numActiveRefLayerPics; j++) 1118 { 1119 if ( m_directRefLayers[ curLayerIdInVps ][ geCur.m_interLayerPredLayerIdc[ j ]] == refLayerIdInVps ) 1120 { 1121 maxTid = std::max( maxTid, geRef.m_temporalId ); 1122 } 1123 } 1096 1124 } 1097 1125 } 1098 } 1099 1100 vps.checkVPSExtensionSyntax(); 1101 vps.calcIvRefLayers(); 1102 } 1126 vps.setMaxTidIlRefPicPlus1( refLayerIdInVps, maxTid + 1 ); 1127 } 1128 1129 // Max one active ref layer flag 1130 Bool maxOneActiveRefLayerFlag = true; 1131 for ( Int currLayerIdInVps = 1; currLayerIdInVps < m_numberOfLayers && maxOneActiveRefLayerFlag; currLayerIdInVps++) 1132 { 1133 for( Int i = 0; i < ( getGOPSize() + 1) && maxOneActiveRefLayerFlag; i++ ) 1134 { 1135 GOPEntry ge = m_GOPListMvc[currLayerIdInVps][ ( i < getGOPSize() ? i : MAX_GOP ) ]; 1136 maxOneActiveRefLayerFlag = maxOneActiveRefLayerFlag && (ge.m_numActiveRefLayerPics <= 1); 1137 } 1138 } 1139 1140 vps.setMaxOneActiveRefLayerFlag( maxOneActiveRefLayerFlag ); 1141 vps.setRefLayers(); 1142 }; 1103 1143 1104 1144 Void TAppEncTop::xSetLayerIds( TComVPS& vps ) … … 1109 1149 Int maxNuhLayerId = nuhLayerIdPresentFlag ? xGetMax( m_layerIdInNuh ) : ( m_numberOfLayers - 1 ) ; 1110 1150 1111 vps.set MaxNuhLayerId( maxNuhLayerId );1151 vps.setVpsMaxLayerId( maxNuhLayerId ); 1112 1152 vps.setVpsNuhLayerIdPresentFlag( nuhLayerIdPresentFlag ); 1113 1153 … … 1125 1165 maxVec = max( vec[i], maxVec ); 1126 1166 return maxVec; 1167 } 1168 1169 Void TAppEncTop::xSetProfileTierLevel( TComVPS& vps ) 1170 { 1171 const Int vpsNumProfileTierLevelMinus1 = 0; //TBD 1172 vps.setVpsNumProfileTierLevelMinus1( vpsNumProfileTierLevelMinus1 ); 1173 1174 for (Int i = 0; i <= vps.getVpsNumProfileTierLevelMinus1(); i++ ) 1175 { 1176 vps.setVpsProfilePresentFlag( i, true ); 1177 } 1178 } 1179 1180 1181 Void TAppEncTop::xSetLayerSets( TComVPS& vps ) 1182 { 1183 // Layer sets 1184 vps.setVpsNumLayerSetsMinus1 ( m_vpsNumLayerSets - 1 ); 1185 vps.setVpsNumberLayerSetsMinus1( vps.getVpsNumLayerSetsMinus1() ); 1186 1187 for (Int lsIdx = 0; lsIdx < m_vpsNumLayerSets; lsIdx++ ) 1188 { 1189 for( Int layerId = 0; layerId < MAX_NUM_LAYER_IDS; layerId++ ) 1190 { 1191 vps.setLayerIdIncludedFlag( false, lsIdx, layerId ); 1192 } 1193 for ( Int i = 0; i < m_layerIdsInSets[lsIdx].size(); i++) 1194 { 1195 vps.setLayerIdIncludedFlag( true, lsIdx, vps.getLayerIdInNuh( m_layerIdsInSets[lsIdx][i] ) ); 1196 } 1197 } 1198 1199 Int numAddOuputLayerSets = (Int) m_outputLayerSetIdx.size(); 1200 // Additional output layer sets + profileLevelTierIdx 1201 vps.setDefaultOneTargetOutputLayerFlag ( m_defaultOneTargetOutputLayerFlag ); 1202 vps.setMoreOutputLayerSetsThanDefaultFlag( numAddOuputLayerSets != 0 ); 1203 vps.setNumAddOutputLayerSetsMinus1 ( numAddOuputLayerSets - 1 ); 1204 1205 for (Int lsIdx = 1; lsIdx < m_vpsNumLayerSets; lsIdx++) 1206 { 1207 vps.setProfileLevelTierIdx( lsIdx, m_profileLevelTierIdx[ lsIdx ] ); 1208 } 1209 1210 for (Int addOutLs = 0; addOutLs < numAddOuputLayerSets; addOutLs++ ) 1211 { 1212 vps.setProfileLevelTierIdx( m_vpsNumLayerSets + addOutLs, m_profileLevelTierIdx[ addOutLs ] ); 1213 1214 Int refLayerSetIdx = m_outputLayerSetIdx[ addOutLs ]; 1215 vps.setOutputLayerSetIdxMinus1( m_vpsNumLayerSets + addOutLs, refLayerSetIdx - 1 ); 1216 1217 for (Int i = 0; i < m_layerIdsInSets[ refLayerSetIdx].size(); i++ ) 1218 { 1219 Bool outputLayerFlag = false; 1220 for (Int j = 0; j < m_layerIdsInAddOutputLayerSet[ addOutLs ].size(); j++ ) 1221 { 1222 if ( m_layerIdsInAddOutputLayerSet[addOutLs][ j ] == m_layerIdsInSets[ refLayerSetIdx][ i ] ) 1223 { 1224 outputLayerFlag = true; 1225 break; 1226 } 1227 } 1228 vps.setOutputLayerFlag( m_vpsNumLayerSets + addOutLs, i, outputLayerFlag ); 1229 } 1230 } 1127 1231 } 1128 1232 #endif
Note: See TracChangeset for help on using the changeset viewer.