Changeset 588 in SHVCSoftware for trunk/source/Lib/TLibDecoder
- Timestamp:
- 1 Feb 2014, 23:50:54 (11 years ago)
- Location:
- trunk
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/SHM-5.0-dev (added) merged: 548-585,587
- Property svn:mergeinfo changed
-
trunk/source
- Property svn:mergeinfo changed
/branches/SHM-5.0-dev/source (added) merged: 549-585 /trunk/source removed
- Property svn:mergeinfo changed
-
trunk/source/Lib/TLibDecoder/SEIread.cpp
r442 r588 93 93 fprintf( g_hTrace, "===========Tone Mapping Info SEI message ===========\n"); 94 94 break; 95 #if M0043_LAYERS_PRESENT_SEI96 case SEI::LAYERS_ PRESENT:95 #if LAYERS_NOT_PRESENT_SEI 96 case SEI::LAYERS_NOT_PRESENT: 97 97 fprintf( g_hTrace, "=========== Layers Present SEI message ===========\n"); 98 98 break; … … 106 106 break; 107 107 #endif 108 #if SUB_BITSTREAM_PROPERTY_SEI 109 case SEI::SUB_BITSTREAM_PROPERTY: 110 fprintf( g_hTrace, "=========== Sub-bitstream property SEI message ===========\n"); 111 break; 112 #endif 108 113 case SEI::SCALABLE_NESTING: 109 114 fprintf( g_hTrace, "=========== Scalable Nesting SEI message ===========\n"); … … 119 124 * unmarshal a single SEI message from bitstream bs 120 125 */ 121 #if M0043_LAYERS_PRESENT_SEI126 #if LAYERS_NOT_PRESENT_SEI 122 127 void SEIReader::parseSEImessage(TComInputBitstream* bs, SEIMessages& seis, const NalUnitType nalUnitType, TComVPS *vps, TComSPS *sps) 123 128 #else … … 130 135 do 131 136 { 132 #if M0043_LAYERS_PRESENT_SEI137 #if LAYERS_NOT_PRESENT_SEI 133 138 xReadSEImessage(seis, nalUnitType, vps, sps); 134 139 #else … … 145 150 } 146 151 147 #if M0043_LAYERS_PRESENT_SEI152 #if LAYERS_NOT_PRESENT_SEI 148 153 Void SEIReader::xReadSEImessage(SEIMessages& seis, const NalUnitType nalUnitType, TComVPS *vps, TComSPS *sps) 149 154 #else … … 254 259 xParseSEIToneMappingInfo((SEIToneMappingInfo&) *sei, payloadSize); 255 260 break; 256 #if M0043_LAYERS_PRESENT_SEI257 case SEI::LAYERS_ PRESENT:261 #if LAYERS_NOT_PRESENT_SEI 262 case SEI::LAYERS_NOT_PRESENT: 258 263 if (!vps) 259 264 { 260 printf ("Warning: Found Layers present SEI message, but no active VPS is available. Ignoring.");265 printf ("Warning: Found Layers not present SEI message, but no active VPS is available. Ignoring."); 261 266 } 262 267 else 263 268 { 264 sei = new SEILayers Present;265 xParseSEILayers Present((SEILayersPresent&) *sei, payloadSize, vps);269 sei = new SEILayersNotPresent; 270 xParseSEILayersNotPresent((SEILayersNotPresent&) *sei, payloadSize, vps); 266 271 } 267 272 break; … … 277 282 break; 278 283 #endif 284 #if SUB_BITSTREAM_PROPERTY_SEI 285 case SEI::SUB_BITSTREAM_PROPERTY: 286 sei = new SEISubBitstreamProperty; 287 xParseSEISubBitstreamProperty((SEISubBitstreamProperty&) *sei); 288 break; 289 #endif 279 290 case SEI::SCALABLE_NESTING: 280 291 sei = new SEIScalableNesting; 281 #if M0043_LAYERS_PRESENT_SEI292 #if LAYERS_NOT_PRESENT_SEI 282 293 xParseSEIScalableNesting((SEIScalableNesting&) *sei, nalUnitType, payloadSize, vps, sps); 283 294 #else … … 741 752 } 742 753 743 #if M0043_LAYERS_PRESENT_SEI744 Void SEIReader::xParseSEILayers Present(SEILayersPresent &sei, UInt payloadSize, TComVPS *vps)754 #if LAYERS_NOT_PRESENT_SEI 755 Void SEIReader::xParseSEILayersNotPresent(SEILayersNotPresent &sei, UInt payloadSize, TComVPS *vps) 745 756 { 746 757 UInt uiCode; … … 752 763 for (; i < sei.m_vpsMaxLayers; i++) 753 764 { 754 READ_FLAG( uiCode, "layer_ present_flag" ); sei.m_layerPresentFlag[i] = uiCode ? true : false;765 READ_FLAG( uiCode, "layer_not_present_flag" ); sei.m_layerNotPresentFlag[i] = uiCode ? true : false; 755 766 } 756 767 for (; i < MAX_LAYERS; i++) 757 768 { 758 sei.m_layer PresentFlag[i] = false;769 sei.m_layerNotPresentFlag[i] = false; 759 770 } 760 771 xParseByteAlign(); … … 829 840 } 830 841 #endif 831 832 #if M0043_LAYERS_PRESENT_SEI 842 #if SUB_BITSTREAM_PROPERTY_SEI 843 Void SEIReader::xParseSEISubBitstreamProperty(SEISubBitstreamProperty &sei) 844 { 845 UInt uiCode; 846 READ_CODE( 4, uiCode, "active_vps_id" ); sei.m_activeVpsId = uiCode; 847 READ_UVLC( uiCode, "num_additional_sub_streams_minus1" ); sei.m_numAdditionalSubStreams = uiCode + 1; 848 849 for( Int i = 0; i < sei.m_numAdditionalSubStreams; i++ ) 850 { 851 READ_CODE( 2, uiCode, "sub_bitstream_mode[i]" ); sei.m_subBitstreamMode[i] = uiCode; 852 READ_UVLC( uiCode, "output_layer_set_idx_to_vps[i]" ); sei.m_outputLayerSetIdxToVps[i] = uiCode; 853 READ_CODE( 3, uiCode, "highest_sub_layer_id[i]" ); sei.m_highestSublayerId[i] = uiCode; 854 READ_CODE( 16, uiCode, "avg_bit_rate[i]" ); sei.m_avgBitRate[i] = uiCode; 855 READ_CODE( 16, uiCode, "max_bit_rate[i]" ); sei.m_maxBitRate[i] = uiCode; 856 } 857 xParseByteAlign(); 858 } 859 #endif 860 #if LAYERS_NOT_PRESENT_SEI 833 861 Void SEIReader::xParseSEIScalableNesting(SEIScalableNesting& sei, const NalUnitType nalUnitType, UInt payloadSize, TComVPS *vps, TComSPS *sps) 834 862 #else … … 876 904 // read nested SEI messages 877 905 do { 878 #if M0043_LAYERS_PRESENT_SEI906 #if LAYERS_NOT_PRESENT_SEI 879 907 xReadSEImessage(sei.m_nestedSEIs, nalUnitType, vps, sps); 880 908 #else -
trunk/source/Lib/TLibDecoder/SEIread.h
r442 r588 56 56 SEIReader() {}; 57 57 virtual ~SEIReader() {}; 58 #if M0043_LAYERS_PRESENT_SEI58 #if LAYERS_NOT_PRESENT_SEI 59 59 Void parseSEImessage(TComInputBitstream* bs, SEIMessages& seis, const NalUnitType nalUnitType, TComVPS *vps, TComSPS *sps); 60 60 #else … … 62 62 #endif 63 63 protected: 64 #if M0043_LAYERS_PRESENT_SEI64 #if LAYERS_NOT_PRESENT_SEI 65 65 Void xReadSEImessage (SEIMessages& seis, const NalUnitType nalUnitType, TComVPS *vps, TComSPS *sps); 66 66 #else … … 83 83 Void xParseSEIInterLayerConstrainedTileSets (SEIInterLayerConstrainedTileSets &sei, UInt payloadSize); 84 84 #endif 85 #if M0043_LAYERS_PRESENT_SEI 86 Void xParseSEILayersPresent (SEILayersPresent &sei, UInt payloadSize, TComVPS *vps); 85 #if SUB_BITSTREAM_PROPERTY_SEI 86 Void xParseSEISubBitstreamProperty (SEISubBitstreamProperty &sei); 87 #endif 88 #if LAYERS_NOT_PRESENT_SEI 89 Void xParseSEILayersNotPresent (SEILayersNotPresent &sei, UInt payloadSize, TComVPS *vps); 87 90 Void xParseSEIScalableNesting (SEIScalableNesting& sei, const NalUnitType nalUnitType, UInt payloadSize, TComVPS *vps, TComSPS *sps); 88 91 #else -
trunk/source/Lib/TLibDecoder/TDecCAVLC.cpp
r547 r588 756 756 } 757 757 READ_FLAG( uiCode, "sps_temporal_mvp_enable_flag" ); pcSPS->setTMVPFlagsPresent(uiCode); 758 #if REF_IDX_MFM759 #if !M0457_COL_PICTURE_SIGNALING760 if(pcSPS->getLayerId() > 0)761 {762 READ_FLAG( uiCode, "sps_enh_mfm_enable_flag" );763 pcSPS->setMFMEnabledFlag( uiCode ? true : false );764 }765 #endif766 #endif767 758 READ_FLAG( uiCode, "sps_strong_intra_smoothing_enable_flag" ); pcSPS->setUseStrongIntraSmoothing(uiCode); 768 759 … … 815 806 // more syntax elements to be parsed here 816 807 817 #if VERT_MV_CONSTRAINT818 808 READ_FLAG( uiCode, "inter_view_mv_vert_constraint_flag" ); 819 809 // Vertical MV component restriction is not used in SHVC CTC 820 810 assert( uiCode == 0 ); 821 #endif 811 822 812 if( pcSPS->getLayerId() > 0 ) 823 813 { … … 836 826 } 837 827 } 838 #if M0463_VUI_EXT_ILP_REF839 //// sps_extension_vui_parameters( )840 if( pcSPS->getVuiParameters()->getBitstreamRestrictionFlag() )841 {842 READ_UVLC( uiCode, "num_ilp_restricted_ref_layers" ); pcSPS->setNumIlpRestrictedRefLayers( uiCode );843 for( Int i = 0; i < pcSPS->getNumIlpRestrictedRefLayers( ); i++ )844 {845 READ_UVLC( uiCode, "min_spatial_segment_offset_plus1" ); pcSPS->setMinSpatialSegmentOffsetPlus1( i, uiCode );846 if( pcSPS->getMinSpatialSegmentOffsetPlus1( i ) > 0 )847 {848 READ_FLAG( uiCode, "ctu_based_offset_enabled_flag[ i ]"); pcSPS->setCtuBasedOffsetEnabledFlag(i, uiCode == 1 );849 if( pcSPS->getCtuBasedOffsetEnabledFlag( i ) )850 {851 READ_UVLC( uiCode, "min_horizontal_ctu_offset_plus1[ i ]"); pcSPS->setMinHorizontalCtuOffsetPlus1( i, uiCode );852 }853 }854 }855 }856 //// sps_extension_vui_parameters( ) END857 #endif858 828 } 859 829 #endif … … 877 847 READ_FLAG( uiCode, "vps_temporal_id_nesting_flag" ); pcVPS->setTemporalNestingFlag( uiCode ? true:false ); 878 848 assert (pcVPS->getMaxTLayers()>1||pcVPS->getTemporalNestingFlag()); 849 #if !P0125_REVERT_VPS_EXTN_OFFSET_TO_RESERVED 879 850 #if VPS_EXTN_OFFSET 880 851 READ_CODE( 16, uiCode, "vps_extension_offset" ); pcVPS->setExtensionOffset( uiCode ); 852 #else 853 READ_CODE( 16, uiCode, "vps_reserved_ffff_16bits" ); assert(uiCode == 0xffff); 854 #endif 881 855 #else 882 856 READ_CODE( 16, uiCode, "vps_reserved_ffff_16bits" ); assert(uiCode == 0xffff); … … 995 969 READ_FLAG( uiCode, "avc_base_layer_flag" ); vps->setAvcBaseLayerFlag(uiCode ? true : false); 996 970 971 #if !P0307_REMOVE_VPS_VUI_OFFSET 997 972 #if O0109_MOVE_VPS_VUI_FLAG 998 973 READ_FLAG( uiCode, "vps_vui_present_flag"); vps->setVpsVuiPresentFlag(uiCode ? true : false); … … 1005 980 #if O0109_MOVE_VPS_VUI_FLAG 1006 981 } 982 #endif 1007 983 #endif 1008 984 READ_FLAG( uiCode, "splitting_flag" ); vps->setSplittingFlag(uiCode ? true : false); … … 1122 1098 } 1123 1099 #endif 1124 #if JCTVC_M0203_INTERLAYER_PRED_IDC1125 1100 #if N0120_MAX_TID_REF_PRESENT_FLAG 1126 1101 READ_FLAG( uiCode, "max_tid_ref_present_flag"); vps->setMaxTidRefPresentFlag(uiCode ? true : false); … … 1180 1155 } 1181 1156 #endif 1182 #endif1183 1157 #if ILP_SSH_SIG 1184 1158 READ_FLAG( uiCode, "all_ref_layers_active_flag" ); vps->setIlpSshSignalingEnabledFlag(uiCode ? true : false); … … 1186 1160 #if VPS_EXTN_PROFILE_INFO 1187 1161 // Profile-tier-level signalling 1162 #if !VPS_EXTN_UEV_CODING 1188 1163 READ_CODE( 10, uiCode, "vps_number_layer_sets_minus1" ); assert( uiCode == (vps->getNumLayerSets() - 1) ); 1189 1164 READ_CODE( 6, uiCode, "vps_num_profile_tier_level_minus1"); vps->setNumProfileTierLevel( uiCode + 1 ); 1165 #else 1166 READ_UVLC( uiCode, "vps_num_profile_tier_level_minus1"); vps->setNumProfileTierLevel( uiCode + 1 ); 1167 #endif 1190 1168 vps->getPTLForExtnPtr()->resize(vps->getNumProfileTierLevel()); 1191 1169 for(Int idx = 1; idx <= vps->getNumProfileTierLevel() - 1; idx++) … … 1194 1172 if( !vps->getProfilePresentFlag(idx) ) 1195 1173 { 1174 #if P0048_REMOVE_PROFILE_REF 1175 // Copy profile information from previous one 1176 vps->getPTLForExtn(idx)->copyProfileInfo( (idx==1) ? vps->getPTL() : vps->getPTLForExtn( idx - 1 ) ); 1177 #else 1196 1178 READ_CODE( 6, uiCode, "profile_ref_minus1[i]" ); vps->setProfileLayerSetRef(idx, uiCode + 1); 1197 1179 #if O0109_PROF_REF_MINUS1 … … 1202 1184 // Copy profile information as indicated 1203 1185 vps->getPTLForExtn(idx)->copyProfileInfo( vps->getPTLForExtn( vps->getProfileLayerSetRef(idx) ) ); 1186 #endif 1204 1187 } 1205 1188 parsePTL( vps->getPTLForExtn(idx), vps->getProfilePresentFlag(idx), vps->getMaxTLayers() - 1 ); … … 1207 1190 #endif 1208 1191 1192 #if !VPS_EXTN_UEV_CODING 1209 1193 READ_FLAG( uiCode, "more_output_layer_sets_than_default_flag" ); vps->setMoreOutputLayerSetsThanDefaultFlag( uiCode ? true : false ); 1210 1194 Int numOutputLayerSets = 0; … … 1218 1202 numOutputLayerSets = vps->getNumLayerSets() + vps->getNumAddOutputLayerSets(); 1219 1203 } 1204 #else 1205 READ_UVLC( uiCode, "num_add_output_layer_sets" ); vps->setNumAddOutputLayerSets( uiCode ); 1206 Int numOutputLayerSets = vps->getNumLayerSets() + vps->getNumAddOutputLayerSets(); 1207 #endif 1208 1209 #if P0295_DEFAULT_OUT_LAYER_IDC 1210 if( numOutputLayerSets > 1 ) 1211 { 1212 READ_CODE( 2, uiCode, "default_target_output_layer_idc" ); vps->setDefaultTargetOutputLayerIdc( uiCode ); 1213 } 1214 vps->setNumOutputLayerSets( numOutputLayerSets ); 1215 1216 for(i = 1; i < numOutputLayerSets; i++) 1217 { 1218 if( i > (vps->getNumLayerSets() - 1) ) 1219 { 1220 Int numBits = 1; 1221 while ((1 << numBits) < (vps->getNumLayerSets() - 1)) 1222 { 1223 numBits++; 1224 } 1225 READ_CODE( numBits, uiCode, "output_layer_set_idx_minus1"); vps->setOutputLayerSetIdx( i, uiCode + 1); 1226 } 1227 else 1228 { 1229 vps->setOutputLayerSetIdx( i, i ); 1230 } 1231 if ( i > (vps->getNumLayerSets() - 1) || vps->getDefaultTargetOutputLayerIdc() >= 2 ) 1232 { 1233 Int lsIdx = vps->getOutputLayerSetIdx(i); 1234 for(j = 0; j < vps->getNumLayersInIdList(lsIdx) - 1; j++) 1235 { 1236 READ_FLAG( uiCode, "output_layer_flag[i][j]"); vps->setOutputLayerFlag(i, j, uiCode); 1237 } 1238 } 1239 else 1240 { 1241 // i <= (vps->getNumLayerSets() - 1) 1242 // Assign OutputLayerFlag depending on default_one_target_output_layer_flag 1243 Int lsIdx = i; 1244 if( vps->getDefaultTargetOutputLayerIdc() == 1 ) 1245 { 1246 for(j = 0; j < vps->getNumLayersInIdList(lsIdx); j++) 1247 { 1248 vps->setOutputLayerFlag(i, j, (j == (vps->getNumLayersInIdList(lsIdx)-1)) && (vps->getDimensionId(j,1) == 0) ); 1249 } 1250 } 1251 else if ( vps->getDefaultTargetOutputLayerIdc() == 0 ) 1252 { 1253 for(j = 0; j < vps->getNumLayersInIdList(lsIdx); j++) 1254 { 1255 vps->setOutputLayerFlag(i, j, 1); 1256 } 1257 } 1258 } 1259 Int numBits = 1; 1260 while ((1 << numBits) < (vps->getNumProfileTierLevel())) 1261 { 1262 numBits++; 1263 } 1264 READ_CODE( numBits, uiCode, "profile_level_tier_idx[i]" ); vps->setProfileLevelTierIdx(i, uiCode); 1265 } 1266 #else 1220 1267 if( numOutputLayerSets > 1 ) 1221 1268 { … … 1299 1346 READ_CODE( numBits, uiCode, "profile_level_tier_idx[i]" ); vps->setProfileLevelTierIdx(i, uiCode); 1300 1347 } 1348 #endif 1301 1349 1302 1350 #if O0153_ALT_OUTPUT_LAYER_FLAG … … 1315 1363 { 1316 1364 #if O0096_REP_FORMAT_INDEX 1365 #if !VPS_EXTN_UEV_CODING 1317 1366 READ_CODE( 8, uiCode, "vps_num_rep_formats_minus1" ); 1367 #else 1368 READ_UVLC( uiCode, "vps_num_rep_formats_minus1" ); 1369 #endif 1318 1370 #else 1319 1371 READ_CODE( 4, uiCode, "vps_num_rep_formats_minus1" ); … … 1342 1394 { 1343 1395 #if O0096_REP_FORMAT_INDEX 1396 #if !VPS_EXTN_UEV_CODING 1344 1397 READ_CODE( 8, uiCode, "vps_rep_format_idx[i]" ); 1398 #else 1399 Int numBits = 1; 1400 while ((1 << numBits) < (vps->getVpsNumRepFormats())) 1401 { 1402 numBits++; 1403 } 1404 READ_CODE( numBits, uiCode, "vps_rep_format_idx[i]" ); 1405 #endif 1345 1406 #else 1346 1407 READ_CODE( 4, uiCode, "vps_rep_format_idx[i]" ); … … 1364 1425 } 1365 1426 #endif 1366 #if JCTVC_M0458_INTERLAYER_RPS_SIG 1427 #if RESOLUTION_BASED_DPB 1428 vps->assignSubDpbIndices(); 1429 #endif 1367 1430 READ_FLAG(uiCode, "max_one_active_ref_layer_flag" ); 1368 1431 vps->setMaxOneActiveRefLayerFlag(uiCode); 1369 #endif1370 1432 #if O0062_POC_LSB_NOT_PRESENT_FLAG 1371 1433 for(i = 1; i< vps->getMaxLayers(); i++) … … 1388 1450 1389 1451 #if VPS_DPB_SIZE_TABLE 1390 vps->deriveNumberOfSubDpbs(); 1391 for(i = 1; i < vps->getNumOutputLayerSets(); i++) 1392 { 1393 READ_FLAG( uiCode, "sub_layer_flag_info_present_flag[i]"); vps->setSubLayerFlagInfoPresentFlag( i, uiCode ? true : false ); 1394 for(j = 0; j < vps->getMaxTLayers(); j++) 1395 { 1396 if( j > 0 && vps->getSubLayerFlagInfoPresentFlag(i) ) 1397 { 1398 READ_FLAG( uiCode, "sub_layer_dpb_info_present_flag[i]"); vps->setSubLayerDpbInfoPresentFlag( i, j, uiCode ? true : false); 1399 } 1400 else 1401 { 1402 if( j == 0 ) // Always signal for the first sub-layer 1403 { 1404 vps->setSubLayerDpbInfoPresentFlag( i, j, true ); 1405 } 1406 else // if (j != 0) && !vps->getSubLayerFlagInfoPresentFlag(i) 1407 { 1408 vps->setSubLayerDpbInfoPresentFlag( i, j, false ); 1409 } 1410 } 1411 if( vps->getSubLayerDpbInfoPresentFlag(i, j) ) // If sub-layer DPB information is present 1412 { 1413 for(Int k = 0; k < vps->getNumSubDpbs(i); k++) 1414 { 1415 READ_UVLC( uiCode, "max_vps_dec_pic_buffering_minus1[i][k][j]" ); vps->setMaxVpsDecPicBufferingMinus1( i, k, j, uiCode ); 1416 } 1417 READ_UVLC( uiCode, "max_vps_num_reorder_pics[i][j]" ); vps->setMaxVpsNumReorderPics( i, j, uiCode); 1418 READ_UVLC( uiCode, "max_vps_latency_increase_plus1[i][j]" ); vps->setMaxVpsLatencyIncreasePlus1( i, j, uiCode); 1419 } 1420 } 1421 } 1422 #endif 1423 #if VPS_EXTN_DIRECT_REF_LAYERS && M0457_PREDICTION_INDICATIONS 1452 parseVpsDpbSizeTable(vps); 1453 #endif 1454 1455 #if VPS_EXTN_DIRECT_REF_LAYERS 1424 1456 READ_UVLC( uiCode, "direct_dep_type_len_minus2"); vps->setDirectDepTypeLen(uiCode+2); 1425 1457 #if O0096_DEFAULT_DEPENDENCY_TYPE … … 1470 1502 #endif 1471 1503 1504 #if P0307_VPS_NON_VUI_EXTENSION 1505 READ_UVLC( uiCode, "vps_non_vui_extension_length"); vps->setVpsNonVuiExtLength((Int)uiCode); 1506 if ( vps->getVpsNonVuiExtLength() > 0 ) 1507 { 1508 printf("\n\nUp to the current spec, the value of vps_non_vui_extension_length is supposed to be 0\n"); 1509 } 1510 #endif 1511 1472 1512 #if !O0109_O0199_FLAGS_TO_VUI 1473 1513 #if M0040_ADAPTIVE_RESOLUTION_CHANGE … … 1477 1517 READ_FLAG(uiCode, "higher_layer_irap_skip_flag" ); vps->setHigherLayerIrapSkipFlag(uiCode == 1 ? true : false); 1478 1518 #endif 1519 #endif 1520 1521 #if P0307_REMOVE_VPS_VUI_OFFSET 1522 READ_FLAG( uiCode, "vps_vui_present_flag"); vps->setVpsVuiPresentFlag(uiCode ? true : false); 1479 1523 #endif 1480 1524 … … 1540 1584 READ_CODE( 4, uiCode, "bit_depth_chroma_minus8" ); repFormat->setBitDepthVpsChroma( uiCode + 8 ); 1541 1585 #endif 1586 } 1587 #endif 1588 #if VPS_DPB_SIZE_TABLE 1589 Void TDecCavlc::parseVpsDpbSizeTable( TComVPS *vps ) 1590 { 1591 UInt uiCode; 1592 #if !RESOLUTION_BASED_DPB 1593 vps->deriveNumberOfSubDpbs(); 1594 #endif 1595 for(Int i = 1; i < vps->getNumOutputLayerSets(); i++) 1596 { 1597 #if CHANGE_NUMSUBDPB_IDX 1598 Int layerSetIdxForOutputLayerSet = vps->getOutputLayerSetIdx( i ); 1599 #endif 1600 READ_FLAG( uiCode, "sub_layer_flag_info_present_flag[i]"); vps->setSubLayerFlagInfoPresentFlag( i, uiCode ? true : false ); 1601 for(Int j = 0; j < vps->getMaxTLayers(); j++) 1602 { 1603 if( j > 0 && vps->getSubLayerFlagInfoPresentFlag(i) ) 1604 { 1605 READ_FLAG( uiCode, "sub_layer_dpb_info_present_flag[i]"); vps->setSubLayerDpbInfoPresentFlag( i, j, uiCode ? true : false); 1606 } 1607 else 1608 { 1609 if( j == 0 ) // Always signal for the first sub-layer 1610 { 1611 vps->setSubLayerDpbInfoPresentFlag( i, j, true ); 1612 } 1613 else // if (j != 0) && !vps->getSubLayerFlagInfoPresentFlag(i) 1614 { 1615 vps->setSubLayerDpbInfoPresentFlag( i, j, false ); 1616 } 1617 } 1618 if( vps->getSubLayerDpbInfoPresentFlag(i, j) ) // If sub-layer DPB information is present 1619 { 1620 #if CHANGE_NUMSUBDPB_IDX 1621 for(Int k = 0; k < vps->getNumSubDpbs(layerSetIdxForOutputLayerSet); k++) 1622 #else 1623 for(Int k = 0; k < vps->getNumSubDpbs(i); k++) 1624 #endif 1625 { 1626 READ_UVLC( uiCode, "max_vps_dec_pic_buffering_minus1[i][k][j]" ); vps->setMaxVpsDecPicBufferingMinus1( i, k, j, uiCode ); 1627 } 1628 READ_UVLC( uiCode, "max_vps_num_reorder_pics[i][j]" ); vps->setMaxVpsNumReorderPics( i, j, uiCode); 1629 #if RESOLUTION_BASED_DPB 1630 if( vps->getNumSubDpbs(layerSetIdxForOutputLayerSet) != vps->getNumLayersInIdList( layerSetIdxForOutputLayerSet ) ) 1631 { 1632 for(Int k = 0; k < vps->getNumLayersInIdList( layerSetIdxForOutputLayerSet ); k++) 1633 { 1634 READ_UVLC( uiCode, "max_vps_layer_dec_pic_buff_minus1[i][k][j]" ); vps->setMaxVpsLayerDecPicBuffMinus1( i, k, j, uiCode); 1635 } 1636 } 1637 else // vps->getNumSubDpbs(layerSetIdxForOutputLayerSet) == vps->getNumLayersInIdList( layerSetIdxForOutputLayerSet ) 1638 { 1639 for(Int k = 0; k < vps->getNumLayersInIdList( layerSetIdxForOutputLayerSet ); k++) 1640 { 1641 vps->setMaxVpsLayerDecPicBuffMinus1( i, k, j, vps->getMaxVpsDecPicBufferingMinus1( i, k, j)); 1642 } 1643 } 1644 #endif 1645 READ_UVLC( uiCode, "max_vps_latency_increase_plus1[i][j]" ); vps->setMaxVpsLatencyIncreasePlus1( i, j, uiCode); 1646 } 1647 } 1648 } 1542 1649 } 1543 1650 #endif … … 1614 1721 } 1615 1722 #endif 1723 #if VPS_VUI_VIDEO_SIGNAL_MOVE 1724 READ_FLAG( uiCode, "video_signal_info_idx_present_flag" ); vps->setVideoSigPresentVpsFlag( uiCode == 1 ); 1725 if (vps->getVideoSigPresentVpsFlag()) 1726 { 1727 READ_CODE(4, uiCode, "vps_num_video_signal_info_minus1" ); vps->setNumVideoSignalInfo(uiCode + 1); 1728 } 1729 else 1730 { 1731 vps->setNumVideoSignalInfo(vps->getMaxLayers()); 1732 } 1733 1734 1735 for(i = 0; i < vps->getNumVideoSignalInfo(); i++) 1736 { 1737 READ_CODE(3, uiCode, "video_vps_format" ); vps->setVideoVPSFormat(i,uiCode); 1738 READ_FLAG(uiCode, "video_full_range_vps_flag" ); vps->setVideoFullRangeVpsFlag(i,uiCode); 1739 READ_CODE(8, uiCode, "color_primaries_vps" ); vps->setColorPrimaries(i,uiCode); 1740 READ_CODE(8, uiCode, "transfer_characteristics_vps" ); vps->setTransCharacter(i,uiCode); 1741 READ_CODE(8, uiCode, "matrix_coeffs_vps" );vps->setMaxtrixCoeff(i,uiCode); 1742 } 1743 if(!vps->getVideoSigPresentVpsFlag()) 1744 { 1745 for (i=0; i < vps->getMaxLayers(); i++) 1746 { 1747 vps->setVideoSignalInfoIdx(i,i); 1748 } 1749 } 1750 else { 1751 vps->setVideoSignalInfoIdx(0,0); 1752 if (vps->getNumVideoSignalInfo() > 1 ) 1753 { 1754 for (i=1; i < vps->getMaxLayers(); i++) 1755 READ_CODE(4, uiCode, "vps_video_signal_info_idx" ); vps->setVideoSignalInfoIdx(i, uiCode); 1756 } 1757 else { 1758 for (i=1; i < vps->getMaxLayers(); i++) 1759 { 1760 vps->setVideoSignalInfoIdx(i,0); 1761 } 1762 } 1763 } 1764 #endif 1616 1765 #if VPS_VUI_TILES_NOT_IN_USE__FLAG 1617 1766 UInt layerIdx; … … 1672 1821 1673 1822 #if N0160_VUI_EXT_ILP_REF 1674 READ_FLAG( uiCode, "num_ilp_restricted_ref_layers" ); vps->setNumIlpRestrictedRefLayers( uiCode == 1 );1675 if( vps->get NumIlpRestrictedRefLayers())1823 READ_FLAG( uiCode, "ilp_restricted_ref_layers_flag" ); vps->setIlpRestrictedRefLayersFlag( uiCode == 1 ); 1824 if( vps->getIlpRestrictedRefLayersFlag()) 1676 1825 { 1677 1826 for(i = 1; i < vps->getMaxLayers(); i++) … … 1693 1842 #endif 1694 1843 #if VPS_VUI_VIDEO_SIGNAL 1844 #if VPS_VUI_VIDEO_SIGNAL_MOVE 1845 #else 1695 1846 READ_FLAG( uiCode, "video_signal_info_idx_present_flag" ); vps->setVideoSigPresentVpsFlag( uiCode == 1 ); 1696 1847 if (vps->getVideoSigPresentVpsFlag()) … … 1733 1884 } 1734 1885 } 1886 #endif 1735 1887 #endif 1736 1888 } … … 1820 1972 if(rpcSlice->getPPS()->getNumExtraSliceHeaderBits() > iBits) 1821 1973 { 1974 #if DISCARDABLE_PIC_RPS 1975 READ_FLAG(uiCode, "discardable_flag"); rpcSlice->setDiscardableFlag( uiCode ? true : false ); 1976 #else 1822 1977 READ_FLAG(uiCode, "discardable_flag"); // ignored 1978 #endif 1823 1979 iBits++; 1824 1980 } … … 2064 2220 2065 2221 #if SVC_EXTENSION 2066 #if JCTVC_M0458_INTERLAYER_RPS_SIG2067 2222 rpcSlice->setActiveNumILRRefIdx(0); 2068 2223 #if ILP_SSH_SIG … … 2094 2249 else 2095 2250 { 2251 #if P0079_DERIVE_NUMACTIVE_REF_PICS 2252 Int numRefLayerPics = 0; 2253 Int i = 0; 2254 Int refLayerPicIdc [MAX_VPS_LAYER_ID_PLUS1]; 2255 for(i = 0, numRefLayerPics = 0; i < rpcSlice->getNumILRRefIdx(); i++ ) 2256 { 2257 if(rpcSlice->getVPS()->getMaxTidIlRefPicsPlus1(rpcSlice->getVPS()->getLayerIdInVps(i),rpcSlice->getLayerId()) > rpcSlice->getTLayer() && 2258 (rpcSlice->getVPS()->getMaxTSLayersMinus1(rpcSlice->getVPS()->getLayerIdInVps(i)) >= rpcSlice->getTLayer()) ) 2259 { 2260 refLayerPicIdc[ numRefLayerPics++ ] = i; 2261 } 2262 } 2263 if (numRefLayerPics) 2264 rpcSlice->setActiveNumILRRefIdx(1); 2265 #else 2096 2266 rpcSlice->setActiveNumILRRefIdx(1); 2267 #endif 2097 2268 } 2098 2269 #if ILP_NUM_REF_CHK … … 2166 2337 } 2167 2338 #endif 2168 #if M0457_IL_SAMPLE_PRED_ONLY_FLAG2169 rpcSlice->setInterLayerSamplePredOnlyFlag( false );2170 if( rpcSlice->getNumSamplePredRefLayers() > 0 && rpcSlice->getActiveNumILRRefIdx() > 0 )2171 {2172 READ_FLAG( uiCode, "inter_layer_sample_pred_only_flag" );2173 rpcSlice->setInterLayerSamplePredOnlyFlag( uiCode > 0 );2174 }2175 #endif2176 #else2177 if( rpcSlice->getLayerId() > 0 )2178 {2179 rpcSlice->setNumILRRefIdx( rpcSlice->getVPS()->getNumDirectRefLayers( rpcSlice->getLayerId() ) );2180 }2181 #endif2182 2339 #endif 2183 2340 … … 2357 2514 if ( rpcSlice->getEnableTMVPFlag() ) 2358 2515 { 2359 #if M0457_COL_PICTURE_SIGNALING2360 #if REMOVE_COL_PICTURE_SIGNALING 2516 #if SVC_EXTENSION && REF_IDX_MFM 2517 // set motion mapping flag 2361 2518 rpcSlice->setMFMEnabledFlag( ( rpcSlice->getNumMotionPredRefLayers() > 0 && rpcSlice->getActiveNumILRRefIdx() ) ? true : false ); 2362 #else2363 rpcSlice->setMFMEnabledFlag( false );2364 rpcSlice->setColRefLayerIdx( 0 );2365 rpcSlice->setAltColIndicationFlag( false );2366 if ( sps->getLayerId() > 0 && rpcSlice->getActiveNumILRRefIdx() > 0 && rpcSlice->getNumMotionPredRefLayers() > 0 )2367 {2368 READ_FLAG( uiCode, "alt_collocated_indication_flag" );2369 rpcSlice->setAltColIndicationFlag( uiCode == 1 ? true : false );2370 rpcSlice->setMFMEnabledFlag( uiCode == 1 ? true : false );2371 if ( rpcSlice->getNumMotionPredRefLayers() > 1 )2372 {2373 READ_UVLC( uiCode, "collocated_ref_layer_idx" );2374 rpcSlice->setColRefLayerIdx( uiCode );2375 }2376 }2377 else2378 {2379 #endif //REMOVE_COL_PICTURE_SIGNALING2380 2519 #endif 2381 2520 if ( rpcSlice->getSliceType() == B_SLICE ) … … 2400 2539 rpcSlice->setColRefIdx(0); 2401 2540 } 2402 #if M0457_COL_PICTURE_SIGNALING && !REMOVE_COL_PICTURE_SIGNALING2403 }2404 #endif2405 2541 } 2406 2542 if ( (pps->getUseWP() && rpcSlice->getSliceType()==P_SLICE) || (pps->getWPBiPred() && rpcSlice->getSliceType()==B_SLICE) ) -
trunk/source/Lib/TLibDecoder/TDecCAVLC.h
r494 r588 83 83 Void parseRepFormat ( RepFormat *repFormat ); 84 84 #endif 85 #if VPS_DPB_SIZE_TABLE 86 Void parseVpsDpbSizeTable( TComVPS *vps ); 87 #endif 85 88 Void parseSPS ( TComSPS* pcSPS, ParameterSetManagerDecoder *parameterSetManager ); 86 89 Void parseSPSExtension ( TComSPS* pcSPS ); -
trunk/source/Lib/TLibDecoder/TDecGop.cpp
r540 r588 234 234 //-- For time output for each slice 235 235 #if SVC_EXTENSION 236 printf("\nPOC %4d LId: %1d TId: %1d ( %c-SLICE , QP%3d ) ", pcSlice->getPOC(),236 printf("\nPOC %4d LId: %1d TId: %1d ( %c-SLICE %s, QP%3d ) ", pcSlice->getPOC(), 237 237 rpcPic->getLayerId(), 238 238 pcSlice->getTLayer(), 239 239 c, 240 NaluToStr( pcSlice->getNalUnitType() ).data(), 240 241 pcSlice->getSliceQp() ); 241 242 #else -
trunk/source/Lib/TLibDecoder/TDecTop.cpp
r547 r588 86 86 m_bRefreshPending = false; 87 87 #endif 88 #if RESOLUTION_BASED_DPB 89 m_subDpbIdx = -1; 90 #endif 88 91 } 89 92 … … 178 181 { 179 182 #if USE_DPB_SIZE_TABLE 180 if( getCommonDecoderParams()->get OutputLayerSetIdx() == 0 )183 if( getCommonDecoderParams()->getTargetOutputLayerSetIdx() == 0 ) 181 184 { 182 185 assert( this->getLayerId() == 0 ); … … 187 190 TComVPS *vps = slice->getVPS(); 188 191 // SHM decoders will use DPB size table in the VPS to determine the number of reorder pictures. 189 numReorderPics[temporalLayer] = vps->getMaxVpsNumReorderPics( getCommonDecoderParams()->get OutputLayerSetIdx() , temporalLayer);192 numReorderPics[temporalLayer] = vps->getMaxVpsNumReorderPics( getCommonDecoderParams()->getTargetOutputLayerSetIdx() , temporalLayer); 190 193 } 191 194 #else … … 196 199 if (m_cIlpPic[0] == NULL) 197 200 { 198 for (Int j=0; j < MAX_LAYERS /*MAX_NUM_REF*/; j++) // consider to set to NumDirectRefLayers[LayerIdInVps[nuh_layer_id]]201 for (Int j=0; j < m_numDirectRefLayers; j++) 199 202 { 200 203 … … 282 285 { 283 286 #if USE_DPB_SIZE_TABLE 284 if( getCommonDecoderParams()->get OutputLayerSetIdx() == 0 )287 if( getCommonDecoderParams()->getTargetOutputLayerSetIdx() == 0 ) 285 288 { 286 289 assert( this->getLayerId() == 0 ); … … 291 294 TComVPS *vps = pcSlice->getVPS(); 292 295 // SHM decoders will use DPB size table in the VPS to determine the number of reorder pictures. 293 numReorderPics[temporalLayer] = vps->getMaxVpsNumReorderPics( getCommonDecoderParams()->get OutputLayerSetIdx() , temporalLayer);296 numReorderPics[temporalLayer] = vps->getMaxVpsNumReorderPics( getCommonDecoderParams()->getTargetOutputLayerSetIdx() , temporalLayer); 294 297 } 295 298 #else … … 299 302 300 303 #if USE_DPB_SIZE_TABLE 301 if( getCommonDecoderParams()->get OutputLayerSetIdx() == 0 )304 if( getCommonDecoderParams()->getTargetOutputLayerSetIdx() == 0 ) 302 305 { 303 306 assert( this->getLayerId() == 0 ); … … 306 309 else 307 310 { 308 m_iMaxRefPicNum = pcSlice->getVPS()->getMaxVpsDecPicBufferingMinus1( getCommonDecoderParams()->getOutputLayerSetIdx(), pcSlice->getLayerId(), pcSlice->getTLayer() ) + 1; // m_uiMaxDecPicBuffering has the space for the picture currently being decoded 311 #if RESOLUTION_BASED_DPB 312 Int layerSetIdxForOutputLayerSet = pcSlice->getVPS()->getOutputLayerSetIdx( getCommonDecoderParams()->getTargetOutputLayerSetIdx() ); 313 Int layerIdx = pcSlice->getVPS()->findLayerIdxInLayerSet( layerSetIdxForOutputLayerSet, pcSlice->getLayerId() ); assert( layerIdx != -1 ); 314 m_iMaxRefPicNum = pcSlice->getVPS()->getMaxVpsLayerDecPicBuffMinus1( getCommonDecoderParams()->getTargetOutputLayerSetIdx(), layerIdx, pcSlice->getTLayer() ) + 1; // m_uiMaxDecPicBuffering has the space for the picture currently being decoded 315 #else 316 m_iMaxRefPicNum = pcSlice->getVPS()->getMaxVpsDecPicBufferingMinus1( getCommonDecoderParams()->getTargetOutputLayerSetIdx(), pcSlice->getLayerId(), pcSlice->getTLayer() ) + 1; // m_uiMaxDecPicBuffering has the space for the picture currently being decoded 317 #endif 309 318 } 310 319 #else … … 815 824 #if OUTPUT_LAYER_SET_INDEX 816 825 // Following check should go wherever the VPS is activated 817 checkValueOfOutputLayerSetIdx( m_apcSlicePilot->getVPS()); 826 checkValueOfTargetOutputLayerSetIdx( m_apcSlicePilot->getVPS()); 827 #endif 828 #if RESOLUTION_BASED_DPB 829 // Following assignment should go wherever a new VPS is activated 830 assignSubDpbs(m_apcSlicePilot->getVPS()); 818 831 #endif 819 832 m_apcSlicePilot->initSlice( nalu.m_layerId ); … … 845 858 #if SVC_EXTENSION 846 859 m_apcSlicePilot->setSliceIdx( m_uiSliceIdx ); // it should be removed if HM will reflect it in above 847 #if VPS_EXTN_DIRECT_REF_LAYERS && M0457_PREDICTION_INDICATIONS860 #if VPS_EXTN_DIRECT_REF_LAYERS 848 861 setRefLayerParams(m_apcSlicePilot->getVPS()); 849 862 #endif 850 #if M0457_COL_PICTURE_SIGNALING851 863 m_apcSlicePilot->setNumMotionPredRefLayers(m_numMotionPredRefLayers); 852 #endif853 #if M0457_IL_SAMPLE_PRED_ONLY_FLAG854 m_apcSlicePilot->setNumSamplePredRefLayers( getNumSamplePredRefLayers() );855 #endif856 864 #endif 857 865 m_cEntropyDecoder.decodeSliceHeader (m_apcSlicePilot, &m_parameterSetManagerDecoder); … … 1478 1486 1479 1487 #if REF_IDX_MFM 1480 #if M0457_COL_PICTURE_SIGNALING1481 1488 if( pcSlice->getMFMEnabledFlag() ) 1482 #else1483 if( pcSlice->getSPS()->getMFMEnabledFlag() )1484 #endif1485 1489 { 1486 1490 pcSlice->setRefPOCListILP(m_ppcTDecTop[m_layerId]->m_cIlpPic, pcSlice->getBaseColPic()); 1487 #if M0457_COL_PICTURE_SIGNALING && !REMOVE_COL_PICTURE_SIGNALING1488 pcSlice->setMotionPredIlp(getMotionPredIlp(pcSlice));1489 #endif1490 1491 } 1491 1492 pcSlice->setRefPicList( m_cListPic, false, m_cIlpPic); … … 1668 1669 } 1669 1670 #endif 1670 #if M0043_LAYERS_PRESENT_SEI1671 #if LAYERS_NOT_PRESENT_SEI 1671 1672 m_seiReader.parseSEImessage( bs, m_pcPic->getSEIs(), nalUnitType, m_parameterSetManagerDecoder.getActiveVPS(), m_parameterSetManagerDecoder.getActiveSPS() ); 1672 1673 #else … … 1676 1677 else 1677 1678 { 1678 #if M0043_LAYERS_PRESENT_SEI1679 #if LAYERS_NOT_PRESENT_SEI 1679 1680 m_seiReader.parseSEImessage( bs, m_SEIs, nalUnitType, m_parameterSetManagerDecoder.getActiveVPS(), m_parameterSetManagerDecoder.getActiveSPS() ); 1680 1681 #else … … 1696 1697 if(nalUnitType == NAL_UNIT_SUFFIX_SEI) 1697 1698 { 1698 #if M0043_LAYERS_PRESENT_SEI1699 #if LAYERS_NOT_PRESENT_SEI 1699 1700 m_seiReader.parseSEImessage( bs, m_pcPic->getSEIs(), nalUnitType, m_parameterSetManagerDecoder.getActiveVPS(), m_parameterSetManagerDecoder.getActiveSPS() ); 1700 1701 #else … … 1704 1705 else 1705 1706 { 1706 #if M0043_LAYERS_PRESENT_SEI1707 #if LAYERS_NOT_PRESENT_SEI 1707 1708 m_seiReader.parseSEImessage( bs, m_SEIs, nalUnitType, m_parameterSetManagerDecoder.getActiveVPS(), m_parameterSetManagerDecoder.getActiveSPS() ); 1708 1709 #else … … 1865 1866 1866 1867 case NAL_UNIT_EOB: 1868 #if P0130_EOB 1869 //Check layer id of the nalu. if it is not 0, give a warning message. 1870 if (nalu.m_layerId > 0) 1871 { 1872 printf( "\n\nThis bitstream is ended with EOB NALU that has layer id greater than 0\n" ); 1873 } 1874 #endif 1867 1875 return false; 1868 1876 … … 1959 1967 #endif 1960 1968 1961 #if VPS_EXTN_DIRECT_REF_LAYERS && M0457_PREDICTION_INDICATIONS1969 #if VPS_EXTN_DIRECT_REF_LAYERS 1962 1970 1963 1971 Void TDecTop::setRefLayerParams( TComVPS* vps ) … … 2013 2021 #endif 2014 2022 2015 #if M0457_COL_PICTURE_SIGNALING && !REMOVE_COL_PICTURE_SIGNALING2016 TComPic* TDecTop::getMotionPredIlp(TComSlice* pcSlice)2017 {2018 TComPic* ilpPic = NULL;2019 Int activeMotionPredReflayerIdx = 0;2020 2021 for( Int i = 0; i < pcSlice->getActiveNumILRRefIdx(); i++ )2022 {2023 UInt refLayerIdc = pcSlice->getInterLayerPredLayerIdc(i);2024 if( getMotionPredEnabledFlag( pcSlice->getVPS()->getRefLayerId( m_layerId, refLayerIdc ) ) )2025 {2026 if (activeMotionPredReflayerIdx == pcSlice->getColRefLayerIdx())2027 {2028 ilpPic = m_cIlpPic[refLayerIdc];2029 break;2030 }2031 else2032 {2033 activeMotionPredReflayerIdx++;2034 }2035 }2036 }2037 2038 assert(ilpPic != NULL);2039 2040 return ilpPic;2041 }2042 #endif2043 2023 #if OUTPUT_LAYER_SET_INDEX 2044 Void TDecTop::checkValueOf OutputLayerSetIdx(TComVPS *vps)2024 Void TDecTop::checkValueOfTargetOutputLayerSetIdx(TComVPS *vps) 2045 2025 { 2046 2026 CommonDecoderParams* params = this->getCommonDecoderParams(); 2027 2028 assert( params->getTargetLayerId() < vps->getMaxLayers() ); 2029 2047 2030 if( params->getValueCheckedFlag() ) 2048 2031 { 2049 2032 return; // Already checked 2050 2033 } 2051 if( params->get OutputLayerSetIdx() == -1 ) // Output layer set index not specified2034 if( params->getTargetOutputLayerSetIdx() == -1 ) // Output layer set index not specified 2052 2035 { 2053 2036 Bool layerSetMatchFound = false; … … 2096 2079 // Match found 2097 2080 layerSetMatchFound = true; 2098 params->set OutputLayerSetIdx( i );2081 params->setTargetOutputLayerSetIdx( i ); 2099 2082 params->setValueCheckedFlag( true ); 2100 2083 break; … … 2107 2090 { 2108 2091 // Check if the target decoded layer is the highest layer in the list 2109 Int layerSetIdx = vps->getOutputLayerSetIdx( params->getOutputLayerSetIdx() ); // Index to the layer set 2092 assert( params->getTargetOutputLayerSetIdx() < vps->getNumLayerSets() ); 2093 Int layerSetIdx = vps->getOutputLayerSetIdx( params->getTargetOutputLayerSetIdx() ); // Index to the layer set 2110 2094 assert( params->getTargetLayerId() == vps->getNumLayersInIdList( layerSetIdx ) - 1); 2111 2095 … … 2138 2122 } 2139 2123 #endif 2124 #if RESOLUTION_BASED_DPB 2125 Void TDecTop::assignSubDpbs(TComVPS *vps) 2126 { 2127 if( m_subDpbIdx == -1 ) // Sub-DPB index is not already assigned 2128 { 2129 Int lsIdx = vps->getOutputLayerSetIdx( getCommonDecoderParams()->getTargetOutputLayerSetIdx() ); 2130 2131 Int layerIdx = vps->findLayerIdxInLayerSet( lsIdx, getLayerId() ); 2132 assert( layerIdx != -1 ); // Current layer should be found in the layer set. 2133 2134 // Copy from the active VPS based on the layer ID. 2135 m_subDpbIdx = vps->getSubDpbAssigned( lsIdx, layerIdx ); 2136 } 2137 } 2138 #endif 2140 2139 //! \} -
trunk/source/Lib/TLibDecoder/TDecTop.h
r540 r588 117 117 Int m_iBLSourceHeight; 118 118 #endif 119 #if VPS_EXTN_DIRECT_REF_LAYERS && M0457_PREDICTION_INDICATIONS119 #if VPS_EXTN_DIRECT_REF_LAYERS 120 120 Int m_numDirectRefLayers; 121 121 Int m_refLayerId[MAX_VPS_LAYER_ID_PLUS1]; … … 144 144 Bool m_bRefreshPending; 145 145 #endif 146 146 #if RESOLUTION_BASED_DPB 147 Int m_subDpbIdx; // Index to the sub-DPB that the layer belongs to. 148 // When new VPS is activated, this should be re-initialized to -1 149 #endif 147 150 public: 148 151 TDecTop(); … … 177 180 #if VPS_EXTN_DIRECT_REF_LAYERS 178 181 TDecTop* getRefLayerDec(UInt refLayerIdc); 179 #if M0457_PREDICTION_INDICATIONS180 182 Int getNumDirectRefLayers () { return m_numDirectRefLayers; } 181 183 Void setNumDirectRefLayers (Int num) { m_numDirectRefLayers = num; } … … 206 208 207 209 Void setRefLayerParams( TComVPS* vps ); 208 #endif209 210 #endif 210 211 #if AVC_BASE … … 244 245 Void xDecodePPS(); 245 246 Void xDecodeSEI( TComInputBitstream* bs, const NalUnitType nalUnitType ); 246 #if M0457_COL_PICTURE_SIGNALING && !REMOVE_COL_PICTURE_SIGNALING247 TComPic* getMotionPredIlp(TComSlice* pcSlice);248 #endif249 247 250 248 #if NO_CLRAS_OUTPUT_FLAG … … 262 260 CommonDecoderParams* getCommonDecoderParams() { return m_commonDecoderParams; } 263 261 Void setCommonDecoderParams(CommonDecoderParams* x) { m_commonDecoderParams = x; } 264 Void checkValueOf OutputLayerSetIdx(TComVPS *vps);262 Void checkValueOfTargetOutputLayerSetIdx(TComVPS *vps); 265 263 #endif 266 264 #if SCALINGLIST_INFERRING 267 265 ParameterSetManagerDecoder* getParameterSetManager() { return &m_parameterSetManagerDecoder; } 268 266 #endif 267 #if RESOLUTION_BASED_DPB 268 Void setSubDpbIdx(Int idx) { m_subDpbIdx = idx; } 269 Int getSubDpbIdx() { return m_subDpbIdx; } 270 Void assignSubDpbs(TComVPS *vps); 271 #endif 269 272 };// END CLASS DEFINITION TDecTop 270 273
Note: See TracChangeset for help on using the changeset viewer.