Changeset 1328 in 3DVCSoftware for branches/HTM-15.1-dev0/source/Lib/TLibDecoder
- Timestamp:
- 14 Sep 2015, 19:41:29 (9 years ago)
- Location:
- branches/HTM-15.1-dev0/source/Lib/TLibDecoder
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-15.1-dev0/source/Lib/TLibDecoder/SEIread.cpp
r1313 r1328 99 99 } 100 100 101 #if NH_MV_SEI 102 inline Void SEIReader::output_sei_message_header(SEI &sei, std::ostream *pDecodedMessageOutputStream, UInt payloadSize) 103 #else 101 104 static inline Void output_sei_message_header(SEI &sei, std::ostream *pDecodedMessageOutputStream, UInt payloadSize) 105 #endif 102 106 { 103 107 if (pDecodedMessageOutputStream) … … 105 109 std::string seiMessageHdr(SEI::getSEIMessageString(sei.payloadType())); seiMessageHdr+=" SEI message"; 106 110 (*pDecodedMessageOutputStream) << std::setfill('-') << std::setw(seiMessageHdr.size()) << "-" << std::setfill(' ') << "\n" << seiMessageHdr << " (" << payloadSize << " bytes)"<< "\n"; 111 #if NH_MV_SEI 112 (*pDecodedMessageOutputStream) << std::setfill(' ') << "LayerId: " << m_layerId << std::setw(2) << " Picture: " << m_decOrder << std::setw( 5 ) << std::endl; 113 #endif 107 114 } 108 115 } … … 277 284 xParseSEIMasteringDisplayColourVolume((SEIMasteringDisplayColourVolume&) *sei, payloadSize, pDecodedMessageOutputStream); 278 285 break; 279 #if NH_MV286 #if !NH_MV_SEI 280 287 case SEI::SUB_BITSTREAM_PROPERTY: 281 288 sei = new SEISubBitstreamProperty; 282 289 xParseSEISubBitstreamProperty((SEISubBitstreamProperty&) *sei, payloadSize, pDecodedMessageOutputStream ); 283 290 break; 291 #else 292 #if NH_MV_TBD 293 case SEI::LAYERS_NOT_PRESENT: 294 sei = new SEILayersNotPresent; 295 xParseSEILayersNotPresent((SEILayersNotPresent&) *sei, payloadSize, pDecodedMessageOutputStream ); 296 break; 297 #endif 298 case SEI::INTER_LAYER_CONSTRAINED_TILE_SETS: 299 sei = new SEIInterLayerConstrainedTileSets; 300 xParseSEIInterLayerConstrainedTileSets((SEIInterLayerConstrainedTileSets&) *sei, payloadSize, pDecodedMessageOutputStream ); 301 break; 302 #if NH_MV_TBD 303 case SEI::BSP_NESTING: 304 sei = new SEIBspNesting; 305 xParseSEIBspNesting((SEIBspNesting&) *sei, payloadSize, pDecodedMessageOutputStream ); 306 break; 307 case SEI::BSP_INITIAL_ARRIVAL_TIME: 308 sei = new SEIBspInitialArrivalTime; 309 xParseSEIBspInitialArrivalTime((SEIBspInitialArrivalTime&) *sei, payloadSize, pDecodedMessageOutputStream ); 310 break; 311 #endif 312 case SEI::SUB_BITSTREAM_PROPERTY: 313 sei = new SEISubBitstreamProperty; 314 xParseSEISubBitstreamProperty((SEISubBitstreamProperty&) *sei, payloadSize, pDecodedMessageOutputStream ); 315 break; 316 #if NH_MV_SEI_TBD 317 case SEI::ALPHA_CHANNEL_INFO: 318 sei = new SEIAlphaChannelInfo; 319 xParseSEIAlphaChannelInfo((SEIAlphaChannelInfo&) *sei, payloadSize, pDecodedMessageOutputStream ); 320 break; 321 case SEI::OVERLAY_INFO: 322 sei = new SEIOverlayInfo; 323 xParseSEIOverlayInfo((SEIOverlayInfo&) *sei, payloadSize, pDecodedMessageOutputStream ); 324 break; 325 #endif 326 case SEI::TEMPORAL_MV_PREDICTION_CONSTRAINTS: 327 sei = new SEITemporalMvPredictionConstraints; 328 xParseSEITemporalMvPredictionConstraints((SEITemporalMvPredictionConstraints&) *sei, payloadSize, pDecodedMessageOutputStream ); 329 break; 330 #if NH_MV_SEI_TBD 331 case SEI::FRAME_FIELD_INFO: 332 sei = new SEIFrameFieldInfo; 333 xParseSEIFrameFieldInfo((SEIFrameFieldInfo&) *sei, payloadSize, pDecodedMessageOutputStream ); 334 break; 335 case SEI::THREE_DIMENSIONAL_REFERENCE_DISPLAYS_INFO: 336 sei = new SEIThreeDimensionalReferenceDisplaysInfo; 337 xParseSEIThreeDimensionalReferenceDisplaysInfo((SEIThreeDimensionalReferenceDisplaysInfo&) *sei, payloadSize, pDecodedMessageOutputStream ); 338 break; 339 case SEI::DEPTH_REPRESENTATION_INFO: 340 sei = new SEIDepthRepresentationInfo; 341 xParseSEIDepthRepresentationInfo((SEIDepthRepresentationInfo&) *sei, payloadSize, pDecodedMessageOutputStream ); 342 break; 343 #endif 344 case SEI::MULTIVIEW_SCENE_INFO: 345 sei = new SEIMultiviewSceneInfo; 346 xParseSEIMultiviewSceneInfo((SEIMultiviewSceneInfo&) *sei, payloadSize, pDecodedMessageOutputStream ); 347 break; 348 349 case SEI::MULTIVIEW_ACQUISITION_INFO: 350 sei = new SEIMultiviewAcquisitionInfo; 351 xParseSEIMultiviewAcquisitionInfo((SEIMultiviewAcquisitionInfo&) *sei, payloadSize, pDecodedMessageOutputStream ); 352 break; 353 354 case SEI::MULTIVIEW_VIEW_POSITION: 355 sei = new SEIMultiviewViewPosition; 356 xParseSEIMultiviewViewPosition((SEIMultiviewViewPosition&) *sei, payloadSize, pDecodedMessageOutputStream ); 357 break; 358 #if NH_MV_TBD 359 case SEI::ALTERNATIVE_DEPTH_INFO: 360 sei = new SEIAlternativeDepthInfo; 361 xParseSEIAlternativeDepthInfo((SEIAlternativeDepthInfo&) *sei, payloadSize, pDecodedMessageOutputStream ); 362 break; 363 #endif 284 364 #endif 285 365 default: … … 857 937 858 938 #if NH_MV 939 #if !NH_MV_SEI 859 940 Void SEIReader::xParseSEISubBitstreamProperty(SEISubBitstreamProperty &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream ) 860 941 { … … 883 964 sei.m_maxBitRate.resize( sei.m_numAdditionalSubStreams ); 884 965 } 966 #endif 885 967 #endif 886 968 … … 1101 1183 } 1102 1184 1185 #if NH_MV_SEI_TBD 1186 Void SEIReader::xParseSEILayersNotPresent(SEILayersNotPresent& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1187 { 1188 UInt code; 1189 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1190 1191 sei_read_code( pDecodedMessageOutputStream, 4, code, "lnp_sei_active_vps_id" ); sei.m_lnpSeiActiveVpsId = code; 1192 for( Int i = 0; i <= MaxLayersMinus1; i++ ) 1193 { 1194 sei_read_flag( pDecodedMessageOutputStream, code, "layer_not_present_flag" ); sei.m_layerNotPresentFlag[i] = (code == 1); 1195 } 1196 }; 1197 #endif 1198 1199 Void SEIReader::xParseSEIInterLayerConstrainedTileSets(SEIInterLayerConstrainedTileSets& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1200 { 1201 UInt code; 1202 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1203 1204 sei_read_flag( pDecodedMessageOutputStream, code, "il_all_tiles_exact_sample_value_match_flag" ); sei.m_ilAllTilesExactSampleValueMatchFlag = (code == 1); 1205 sei_read_flag( pDecodedMessageOutputStream, code, "il_one_tile_per_tile_set_flag" ); sei.m_ilOneTilePerTileSetFlag = (code == 1); 1206 if( !sei.m_ilOneTilePerTileSetFlag ) 1207 { 1208 sei_read_uvlc( pDecodedMessageOutputStream, code, "il_num_sets_in_message_minus1" ); sei.m_ilNumSetsInMessageMinus1 = code; 1209 if( sei.m_ilNumSetsInMessageMinus1 ) 1210 { 1211 sei_read_flag( pDecodedMessageOutputStream, code, "skipped_tile_set_present_flag" ); sei.m_skippedTileSetPresentFlag = (code == 1); 1212 } 1213 Int numSignificantSets = sei.m_ilNumSetsInMessageMinus1 - sei.m_skippedTileSetPresentFlag + 1; 1214 1215 sei.resizeDimI( numSignificantSets ); 1216 for( Int i = 0; i < numSignificantSets; i++ ) 1217 { 1218 sei_read_uvlc( pDecodedMessageOutputStream, code, "ilcts_id" ); sei.m_ilctsId [i] = code; 1219 sei_read_uvlc( pDecodedMessageOutputStream, code, "il_num_tile_rects_in_set_minus1" ); sei.m_ilNumTileRectsInSetMinus1[i] = code; 1220 1221 sei.resizeDimJ( i, sei.m_ilNumTileRectsInSetMinus1[ i ] + 1 ); 1222 for( Int j = 0; j <= sei.m_ilNumTileRectsInSetMinus1[ i ]; j++ ) 1223 { 1224 sei_read_uvlc( pDecodedMessageOutputStream, code, "il_top_left_tile_index" ); sei.m_ilTopLeftTileIndex [i][j] = code; 1225 sei_read_uvlc( pDecodedMessageOutputStream, code, "il_bottom_right_tile_index" ); sei.m_ilBottomRightTileIndex[i][j] = code; 1226 } 1227 sei_read_code( pDecodedMessageOutputStream, 2, code, "ilc_idc" ); sei.m_ilcIdc[i] = code; 1228 if ( !sei.m_ilAllTilesExactSampleValueMatchFlag ) 1229 { 1230 sei_read_flag( pDecodedMessageOutputStream, code, "il_exact_sample_value_match_flag" ); sei.m_ilExactSampleValueMatchFlag[i] = (code == 1); 1231 } 1232 } 1233 } 1234 else 1235 { 1236 sei_read_code( pDecodedMessageOutputStream, 2, code, "all_tiles_ilc_idc" ); sei.m_allTilesIlcIdc = code; 1237 } 1238 }; 1239 1240 #if NH_MV_SEI_TBD 1241 Void SEIReader::xParseSEIBspNesting(SEIBspNesting& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1242 { 1243 UInt code; 1244 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1245 1246 sei_read_uvlc( pDecodedMessageOutputStream, code, "sei_ols_idx" ); sei.m_seiOlsIdx = code; 1247 sei_read_uvlc( pDecodedMessageOutputStream, code, "sei_partitioning_scheme_idx" ); sei.m_seiPartitioningSchemeIdx = code; 1248 sei_read_uvlc( pDecodedMessageOutputStream, code, "bsp_idx" ); sei.m_bspIdx = code; 1249 while( !ByteaLigned(() ) ); 1250 { 1251 sei_read_code( pDecodedMessageOutputStream, *equalto0*/u1, code, "bsp_nesting_zero_bit" ); sei.m_bspNestingZeroBit = code; 1252 } 1253 sei_read_uvlc( pDecodedMessageOutputStream, code, "num_seis_in_bsp_minus1" ); sei.m_numSeisInBspMinus1 = code; 1254 for( Int i = 0; i <= NumSeisInBspMinus1( ); i++ ) 1255 { 1256 SeiMessage(() ); 1257 } 1258 }; 1259 1260 Void SEIReader::xParseSEIBspInitialArrivalTime(SEIBspInitialArrivalTime& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1261 { 1262 UInt code; 1263 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1264 1265 psIdx = SeiPartitioningSchemeIdx(); 1266 if( nalInitialArrivalDelayPresent ) 1267 { 1268 for( Int i = 0; i < BspSchedCnt( SeiOlsIdx(), psIdx, MaxTemporalId( 0 ) ); i++ ) 1269 { 1270 sei_read_code( pDecodedMessageOutputStream, getNalInitialArrivalDelayLen ), code, "nal_initial_arrival_delay" ); sei.m_nalInitialArrivalDelay[i] = code; 1271 } 1272 } 1273 if( vclInitialArrivalDelayPresent ) 1274 { 1275 for( Int i = 0; i < BspSchedCnt( SeiOlsIdx(), psIdx, MaxTemporalId( 0 ) ); i++ ) 1276 { 1277 sei_read_code( pDecodedMessageOutputStream, getVclInitialArrivalDelayLen ), code, "vcl_initial_arrival_delay" ); sei.m_vclInitialArrivalDelay[i] = code; 1278 } 1279 } 1280 }; 1281 #endif 1282 1283 Void SEIReader::xParseSEISubBitstreamProperty(SEISubBitstreamProperty& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1284 { 1285 UInt code; 1286 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1287 1288 sei_read_code( pDecodedMessageOutputStream, 4, code, "sb_property_active_vps_id" ); sei.m_sbPropertyActiveVpsId = code; 1289 sei_read_uvlc( pDecodedMessageOutputStream, code, "num_additional_sub_streams_minus1" ); sei.m_numAdditionalSubStreamsMinus1 = code; 1290 sei.resizeArrays( ); 1291 for( Int i = 0; i <= sei.m_numAdditionalSubStreamsMinus1; i++ ) 1292 { 1293 sei_read_code( pDecodedMessageOutputStream, 2, code, "sub_bitstream_mode" ); sei.m_subBitstreamMode[i] = code; 1294 sei_read_uvlc( pDecodedMessageOutputStream, code, "ols_idx_to_vps" ); sei.m_olsIdxToVps[i] = code; 1295 sei_read_code( pDecodedMessageOutputStream, 3, code, "highest_sublayer_id" ); sei.m_highestSublayerId[i] = code; 1296 sei_read_code( pDecodedMessageOutputStream, 16, code, "avg_sb_property_bit_rate" ); sei.m_avgSbPropertyBitRate[i] = code; 1297 sei_read_code( pDecodedMessageOutputStream, 16, code, "max_sb_property_bit_rate" ); sei.m_maxSbPropertyBitRate[i] = code; 1298 } 1299 }; 1300 1301 #if NH_MV_SEI_TBD 1302 Void SEIReader::xParseSEIAlphaChannelInfo(SEIAlphaChannelInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1303 { 1304 UInt code; 1305 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1306 1307 sei_read_flag( pDecodedMessageOutputStream, code, "alpha_channel_cancel_flag" ); sei.m_alphaChannelCancelFlag = (code == 1); 1308 if( !sei.m_alphaChannelCancelFlag ) 1309 { 1310 sei_read_code( pDecodedMessageOutputStream, 3, code, "alpha_channel_use_idc" ); sei.m_alphaChannelUseIdc = code; 1311 sei_read_code( pDecodedMessageOutputStream, 3, code, "alpha_channel_bit_depth_minus8" ); sei.m_alphaChannelBitDepthMinus8 = code; 1312 sei_read_code( pDecodedMessageOutputStream, getAlphaTransparentValueLen ), code, "alpha_transparent_value" ); sei.m_alphaTransparentValue = code; 1313 sei_read_code( pDecodedMessageOutputStream, getAlphaOpaqueValueLen ), code, "alpha_opaque_value" ); sei.m_alphaOpaqueValue = code; 1314 sei_read_flag( pDecodedMessageOutputStream, code, "alpha_channel_incr_flag" ); sei.m_alphaChannelIncrFlag = (code == 1); 1315 sei_read_flag( pDecodedMessageOutputStream, code, "alpha_channel_clip_flag" ); sei.m_alphaChannelClipFlag = (code == 1); 1316 if( sei.m_alphaChannelClipFlag ) 1317 { 1318 sei_read_flag( pDecodedMessageOutputStream, code, "alpha_channel_clip_type_flag" ); sei.m_alphaChannelClipTypeFlag = (code == 1); 1319 } 1320 } 1321 }; 1322 1323 Void SEIReader::xParseSEIOverlayInfo(SEIOverlayInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1324 { 1325 UInt code; 1326 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1327 1328 sei_read_flag( pDecodedMessageOutputStream, code, "overlay_info_cancel_flag" ); sei.m_overlayInfoCancelFlag = (code == 1); 1329 if( !sei.m_overlayInfoCancelFlag ) 1330 { 1331 sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_content_aux_id_minus128" ); sei.m_overlayContentAuxIdMinus128 = code; 1332 sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_label_aux_id_minus128" ); sei.m_overlayLabelAuxIdMinus128 = code; 1333 sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_alpha_aux_id_minus128" ); sei.m_overlayAlphaAuxIdMinus128 = code; 1334 sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_element_label_value_length_minus8" ); sei.m_overlayElementLabelValueLengthMinus8 = code; 1335 sei_read_uvlc( pDecodedMessageOutputStream, code, "num_overlays_minus1" ); sei.m_numOverlaysMinus1 = code; 1336 for( Int i = 0; i <= NumOverlaysMinus1( ); i++ ) 1337 { 1338 sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_idx" ); sei.m_overlayIdx[i] = code; 1339 sei_read_flag( pDecodedMessageOutputStream, code, "language_overlay_present_flag" ); sei.m_languageOverlayPresentFlag[i] = (code == 1); 1340 sei_read_code( pDecodedMessageOutputStream, 6, code, "overlay_content_layer_id" ); sei.m_overlayContentLayerId[i] = code; 1341 sei_read_flag( pDecodedMessageOutputStream, code, "overlay_label_present_flag" ); sei.m_overlayLabelPresentFlag[i] = (code == 1); 1342 if( sei.m_overlayLabelPresentFlag( i ) ) 1343 { 1344 sei_read_code( pDecodedMessageOutputStream, 6, code, "overlay_label_layer_id" ); sei.m_overlayLabelLayerId[i] = code; 1345 } 1346 sei_read_flag( pDecodedMessageOutputStream, code, "overlay_alpha_present_flag" ); sei.m_overlayAlphaPresentFlag[i] = (code == 1); 1347 if( sei.m_overlayAlphaPresentFlag( i ) ) 1348 { 1349 sei_read_code( pDecodedMessageOutputStream, 6, code, "overlay_alpha_layer_id" ); sei.m_overlayAlphaLayerId[i] = code; 1350 } 1351 if( sei.m_overlayLabelPresentFlag( i ) ) 1352 { 1353 sei_read_uvlc( pDecodedMessageOutputStream, code, "num_overlay_elements_minus1" ); sei.m_numOverlayElementsMinus1[i] = code; 1354 for( Int j = 0; j <= sei.m_numOverlayElementsMinus1( i ); j++ ) 1355 { 1356 sei_read_code( pDecodedMessageOutputStream, getOverlayElementLabelMinLen ), code, "overlay_element_label_min" ); sei.m_overlayElementLabelMin[i][j] = code; 1357 sei_read_code( pDecodedMessageOutputStream, getOverlayElementLabelMaxLen ), code, "overlay_element_label_max" ); sei.m_overlayElementLabelMax[i][j] = code; 1358 } 1359 } 1360 } 1361 while( !ByteaLigned(() ) ); 1362 { 1363 sei_read_code( pDecodedMessageOutputStream, *equalto0*/f1, code, "overlay_zero_bit" ); sei.m_overlayZeroBit = code; 1364 } 1365 for( Int i = 0; i <= NumOverlaysMinus1( ); i++ ) 1366 { 1367 if( sei.m_languageOverlayPresentFlag( i ) ) 1368 { 1369 sei_read_code( pDecodedMessageOutputStream, tv, code, "overlay_language" ); sei.m_overlayLanguage[i] = code; 1370 } 1371 sei_read_code( pDecodedMessageOutputStream, tv, code, "overlay_name" ); sei.m_overlayName[i] = code; 1372 if( sei.m_overlayLabelPresentFlag( i ) ) 1373 { 1374 for( Int j = 0; j <= sei.m_numOverlayElementsMinus1( i ); j++ ) 1375 { 1376 sei_read_code( pDecodedMessageOutputStream, tv, code, "overlay_element_name" ); sei.m_overlayElementName[i][j] = code; 1377 } 1378 } 1379 } 1380 sei_read_flag( pDecodedMessageOutputStream, code, "overlay_info_persistence_flag" ); sei.m_overlayInfoPersistenceFlag = (code == 1); 1381 } 1382 }; 1383 #endif 1384 1385 Void SEIReader::xParseSEITemporalMvPredictionConstraints(SEITemporalMvPredictionConstraints& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1386 { 1387 UInt code; 1388 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1389 1390 sei_read_flag( pDecodedMessageOutputStream, code, "prev_pics_not_used_flag" ); sei.m_prevPicsNotUsedFlag = (code == 1); 1391 sei_read_flag( pDecodedMessageOutputStream, code, "no_intra_layer_col_pic_flag" ); sei.m_noIntraLayerColPicFlag = (code == 1); 1392 }; 1393 1394 #if NH_MV_SEI_TBD 1395 Void SEIReader::xParseSEIFrameFieldInfo(SEIFrameFieldInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1396 { 1397 UInt code; 1398 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1399 1400 sei_read_code( pDecodedMessageOutputStream, 4, code, "ffinfo_pic_struct" ); sei.m_ffinfoPicStruct = code; 1401 sei_read_code( pDecodedMessageOutputStream, 2, code, "ffinfo_source_scan_type" ); sei.m_ffinfoSourceScanType = code; 1402 sei_read_flag( pDecodedMessageOutputStream, code, "ffinfo_duplicate_flag" ); sei.m_ffinfoDuplicateFlag = (code == 1); 1403 }; 1404 1405 Void SEIReader::xParseSEIThreeDimensionalReferenceDisplaysInfo(SEIThreeDimensionalReferenceDisplaysInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1406 { 1407 UInt code; 1408 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1409 1410 sei_read_uvlc( pDecodedMessageOutputStream, code, "prec_ref_display_width" ); sei.m_precRefDisplayWidth = code; 1411 sei_read_flag( pDecodedMessageOutputStream, code, "ref_viewing_distance_flag" ); sei.m_refViewingDistanceFlag = (code == 1); 1412 if( sei.m_refViewingDistanceFlag ) 1413 { 1414 sei_read_uvlc( pDecodedMessageOutputStream, code, "prec_ref_viewing_dist" ); sei.m_precRefViewingDist = code; 1415 } 1416 sei_read_uvlc( pDecodedMessageOutputStream, code, "num_ref_displays_minus1" ); sei.m_numRefDisplaysMinus1 = code; 1417 for( Int i = 0; i <= NumRefDisplaysMinus1( ); i++ ) 1418 { 1419 sei_read_uvlc( pDecodedMessageOutputStream, code, "left_view_id" ); sei.m_leftViewId[i] = code; 1420 sei_read_uvlc( pDecodedMessageOutputStream, code, "right_view_id" ); sei.m_rightViewId[i] = code; 1421 sei_read_code( pDecodedMessageOutputStream, 6, code, "exponent_ref_display_width" ); sei.m_exponentRefDisplayWidth[i] = code; 1422 sei_read_code( pDecodedMessageOutputStream, getMantissaRefDisplayWidthLen ), code, "mantissa_ref_display_width" ); sei.m_mantissaRefDisplayWidth[i] = code; 1423 if( sei.m_refViewingDistanceFlag ) 1424 { 1425 sei_read_code( pDecodedMessageOutputStream, 6, code, "exponent_ref_viewing_distance" ); sei.m_exponentRefViewingDistance[i] = code; 1426 sei_read_code( pDecodedMessageOutputStream, getMantissaRefViewingDistanceLen ), code, "mantissa_ref_viewing_distance" ); sei.m_mantissaRefViewingDistance[i] = code; 1427 } 1428 sei_read_flag( pDecodedMessageOutputStream, code, "additional_shift_present_flag" ); sei.m_additionalShiftPresentFlag[i] = (code == 1); 1429 if( sei.m_additionalShiftPresentFlag( i ) ) 1430 { 1431 sei_read_code( pDecodedMessageOutputStream, 10, code, "num_sample_shift_plus512" ); sei.m_numSampleShiftPlus512[i] = code; 1432 } 1433 } 1434 sei_read_flag( pDecodedMessageOutputStream, code, "three_dimensional_reference_displays_extension_flag" ); sei.m_threeDimensionalReferenceDisplaysExtensionFlag = (code == 1); 1435 }; 1436 1437 Void SEIReader::xParseSEIDepthRepresentationInfo(SEIDepthRepresentationInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1438 { 1439 UInt code; 1440 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1441 1442 sei_read_flag( pDecodedMessageOutputStream, code, "z_near_flag" ); sei.m_zNearFlag = (code == 1); 1443 sei_read_flag( pDecodedMessageOutputStream, code, "z_far_flag" ); sei.m_zFarFlag = (code == 1); 1444 sei_read_flag( pDecodedMessageOutputStream, code, "d_min_flag" ); sei.m_dMinFlag = (code == 1); 1445 sei_read_flag( pDecodedMessageOutputStream, code, "d_max_flag" ); sei.m_dMaxFlag = (code == 1); 1446 sei_read_uvlc( pDecodedMessageOutputStream, code, "depth_representation_type" ); sei.m_depthRepresentationType = code; 1447 if( sei.m_dMinFlag | | sei.m_dMaxFlag ) 1448 { 1449 sei_read_uvlc( pDecodedMessageOutputStream, code, "disparity_ref_view_id" ); sei.m_disparityRefViewId = code; 1450 } 1451 if( sei.m_zNearFlag ) 1452 { 1453 DepthRepInfoElement(() ZNearSign, ZNearExp, ZNearMantissa, ZNearManLen ); 1454 } 1455 if( sei.m_zFarFlag ) 1456 { 1457 DepthRepInfoElement(() ZFarSign, ZFarExp, ZFarMantissa, ZFarManLen ); 1458 } 1459 if( sei.m_dMinFlag ) 1460 { 1461 DepthRepInfoElement(() DMinSign, DMinExp, DMinMantissa, DMinManLen ); 1462 } 1463 if( sei.m_dMaxFlag ) 1464 { 1465 DepthRepInfoElement(() DMaxSign, DMaxExp, DMaxMantissa, DMaxManLen ); 1466 } 1467 if( sei.m_depthRepresentationType == 3 ) 1468 { 1469 sei_read_uvlc( pDecodedMessageOutputStream, code, "depth_nonlinear_representation_num_minus1" ); sei.m_depthNonlinearRepresentationNumMinus1 = code; 1470 for( Int i = 1; i <= sei.m_depthNonlinearRepresentationNumMinus1 + 1; i++ ) 1471 { 1472 DepthNonlinearRepresentationModel( i ); 1473 } 1474 } 1475 }; 1476 1477 Void SEIReader::xParseSEIDepthRepInfoElement(SEIDepthRepInfoElement& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1478 { 1479 UInt code; 1480 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1481 1482 sei_read_flag( pDecodedMessageOutputStream, code, "da_sign_flag" ); sei.m_daSignFlag = (code == 1); 1483 sei_read_code( pDecodedMessageOutputStream, 7, code, "da_exponent" ); sei.m_daExponent = code; 1484 sei_read_code( pDecodedMessageOutputStream, 5, code, "da_mantissa_len_minus1" ); sei.m_daMantissaLenMinus1 = code; 1485 sei_read_code( pDecodedMessageOutputStream, getDaMantissaLen ), code, "da_mantissa" ); sei.m_daMantissa = code; 1486 }; 1487 #endif 1488 Void SEIReader::xParseSEIMultiviewSceneInfo(SEIMultiviewSceneInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1489 { 1490 UInt code; 1491 Int sCode; 1492 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1493 1494 sei_read_svlc( pDecodedMessageOutputStream, sCode, "min_disparity" ) ; sei.m_minDisparity = sCode; 1495 sei_read_uvlc( pDecodedMessageOutputStream, code , "max_disparity_range" ); sei.m_maxDisparityRange = code; 1496 }; 1497 1498 Void SEIReader::xParseSEIMultiviewAcquisitionInfo(SEIMultiviewAcquisitionInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1499 { 1500 UInt code; 1501 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1502 1503 sei.resizeArrays( ); 1504 sei_read_flag( pDecodedMessageOutputStream, code, "intrinsic_param_flag" ); sei.m_intrinsicParamFlag = (code == 1); 1505 sei_read_flag( pDecodedMessageOutputStream, code, "extrinsic_param_flag" ); sei.m_extrinsicParamFlag = (code == 1); 1506 if( sei.m_intrinsicParamFlag ) 1507 { 1508 sei_read_flag( pDecodedMessageOutputStream, code, "intrinsic_params_equal_flag" ); sei.m_intrinsicParamsEqualFlag = (code == 1); 1509 sei_read_uvlc( pDecodedMessageOutputStream, code, "prec_focal_length" ); sei.m_precFocalLength = code ; 1510 sei_read_uvlc( pDecodedMessageOutputStream, code, "prec_principal_point" ); sei.m_precPrincipalPoint = code ; 1511 sei_read_uvlc( pDecodedMessageOutputStream, code, "prec_skew_factor" ); sei.m_precSkewFactor = code ; 1512 1513 for( Int i = 0; i <= ( sei.m_intrinsicParamsEqualFlag ? 0 : sei.getNumViewsMinus1() ); i++ ) 1514 { 1515 sei_read_flag( pDecodedMessageOutputStream, code, "sign_focal_length_x" ); sei.m_signFocalLengthX [i] = (code == 1); 1516 sei_read_code( pDecodedMessageOutputStream, 6, code, "exponent_focal_length_x" ); sei.m_exponentFocalLengthX [i] = code ; 1517 sei_read_code( pDecodedMessageOutputStream, sei.getMantissaFocalLengthXLen ( i ), code, "mantissa_focal_length_x" ); sei.m_mantissaFocalLengthX [i] = code ; 1518 sei_read_flag( pDecodedMessageOutputStream, code, "sign_focal_length_y" ); sei.m_signFocalLengthY [i] = (code == 1); 1519 sei_read_code( pDecodedMessageOutputStream, 6, code, "exponent_focal_length_y" ); sei.m_exponentFocalLengthY [i] = code ; 1520 sei_read_code( pDecodedMessageOutputStream, sei.getMantissaFocalLengthYLen ( i ), code, "mantissa_focal_length_y" ); sei.m_mantissaFocalLengthY [i] = code ; 1521 sei_read_flag( pDecodedMessageOutputStream, code, "sign_principal_point_x" ); sei.m_signPrincipalPointX [i] = (code == 1); 1522 sei_read_code( pDecodedMessageOutputStream, 6, code, "exponent_principal_point_x" ); sei.m_exponentPrincipalPointX[i] = code ; 1523 sei_read_code( pDecodedMessageOutputStream, sei.getMantissaPrincipalPointXLen( i ), code, "mantissa_principal_point_x" ); sei.m_mantissaPrincipalPointX[i] = code ; 1524 sei_read_flag( pDecodedMessageOutputStream, code, "sign_principal_point_y" ); sei.m_signPrincipalPointY [i] = (code == 1); 1525 sei_read_code( pDecodedMessageOutputStream, 6, code, "exponent_principal_point_y" ); sei.m_exponentPrincipalPointY[i] = code ; 1526 sei_read_code( pDecodedMessageOutputStream, sei.getMantissaPrincipalPointYLen( i ), code, "mantissa_principal_point_y" ); sei.m_mantissaPrincipalPointY[i] = code ; 1527 sei_read_flag( pDecodedMessageOutputStream, code, "sign_skew_factor" ); sei.m_signSkewFactor [i] = (code == 1); 1528 sei_read_code( pDecodedMessageOutputStream, 6, code, "exponent_skew_factor" ); sei.m_exponentSkewFactor [i] = code ; 1529 sei_read_code( pDecodedMessageOutputStream, sei.getMantissaSkewFactorLen ( i ), code, "mantissa_skew_factor" ); sei.m_mantissaSkewFactor [i] = code ; 1530 } 1531 } 1532 if( sei.m_extrinsicParamFlag ) 1533 { 1534 sei_read_uvlc( pDecodedMessageOutputStream, code, "prec_rotation_param" ); sei.m_precRotationParam = code; 1535 sei_read_uvlc( pDecodedMessageOutputStream, code, "prec_translation_param" ); sei.m_precTranslationParam = code; 1536 1537 for( Int i = 0; i <= sei.getNumViewsMinus1(); i++ ) 1538 { 1539 for( Int j = 0; j <= 2; j++ ) /* row */ 1540 { 1541 for( Int k = 0; k <= 2; k++ ) /* column */ 1542 { 1543 sei_read_flag( pDecodedMessageOutputStream, code, "sign_r" ); sei.m_signR [i][j][k] = (code == 1); 1544 sei_read_code( pDecodedMessageOutputStream, 6, code, "exponent_r" ); sei.m_exponentR[i][j][k] = code ; 1545 sei_read_code( pDecodedMessageOutputStream, sei.getMantissaRLen( i, j, k ), code, "mantissa_r" ); sei.m_mantissaR[i][j][k] = code ; 1546 } 1547 sei_read_flag( pDecodedMessageOutputStream, code, "sign_t" ); sei.m_signT [i][j] = (code == 1); 1548 sei_read_code( pDecodedMessageOutputStream, 6, code, "exponent_t" ); sei.m_exponentT[i][j] = code ; 1549 sei_read_code( pDecodedMessageOutputStream, sei.getMantissaTLen( i, j ), code, "mantissa_t" ); sei.m_mantissaT[i][j] = code ; 1550 } 1551 } 1552 } 1553 }; 1554 1555 1556 1557 Void SEIReader::xParseSEIMultiviewViewPosition(SEIMultiviewViewPosition& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1558 { 1559 UInt code; 1560 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1561 1562 sei_read_uvlc( pDecodedMessageOutputStream, code, "num_views_minus1" ); sei.m_numViewsMinus1 = code; 1563 sei.m_viewPosition.resize( sei.m_numViewsMinus1 + 1 ); 1564 for( Int i = 0; i <= sei.m_numViewsMinus1; i++ ) 1565 { 1566 sei_read_uvlc( pDecodedMessageOutputStream, code, "view_position" ); sei.m_viewPosition[i] = code; 1567 } 1568 }; 1569 1570 #if NH_MV_SEI_TBD 1571 Void SEIReader::xParseSEIAlternativeDepthInfo(SEIAlternativeDepthInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1572 { 1573 UInt code; 1574 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1575 1576 sei_read_flag( pDecodedMessageOutputStream, code, "alternative_depth_info_cancel_flag" ); sei.m_alternativeDepthInfoCancelFlag = (code == 1); 1577 if( sei.m_alternativeDepthInfoCancelFlag == 0 ) 1578 { 1579 sei_read_code( pDecodedMessageOutputStream, 2, code, "depth_type" ); sei.m_depthType = code; 1580 if( sei.m_depthType == 0 ) 1581 { 1582 sei_read_uvlc( pDecodedMessageOutputStream, code, "num_constituent_views_gvd_minus1" ); sei.m_numConstituentViewsGvdMinus1 = code; 1583 sei_read_flag( pDecodedMessageOutputStream, code, "depth_present_gvd_flag" ); sei.m_depthPresentGvdFlag = (code == 1); 1584 sei_read_flag( pDecodedMessageOutputStream, code, "z_gvd_flag" ); sei.m_zGvdFlag = (code == 1); 1585 sei_read_flag( pDecodedMessageOutputStream, code, "intrinsic_param_gvd_flag" ); sei.m_intrinsicParamGvdFlag = (code == 1); 1586 sei_read_flag( pDecodedMessageOutputStream, code, "rotation_gvd_flag" ); sei.m_rotationGvdFlag = (code == 1); 1587 sei_read_flag( pDecodedMessageOutputStream, code, "translation_gvd_flag" ); sei.m_translationGvdFlag = (code == 1); 1588 if( sei.m_zGvdFlag ) 1589 { 1590 for( Int i = 0; i <= sei.m_numConstituentViewsGvdMinus1 + 1; i++ ) 1591 { 1592 sei_read_flag( pDecodedMessageOutputStream, code, "sign_gvd_z_near_flag" ); sei.m_signGvdZNearFlag[i] = (code == 1); 1593 sei_read_code( pDecodedMessageOutputStream, 7, code, "exp_gvd_z_near" ); sei.m_expGvdZNear[i] = code; 1594 sei_read_code( pDecodedMessageOutputStream, 5, code, "man_len_gvd_z_near_minus1" ); sei.m_manLenGvdZNearMinus1[i] = code; 1595 sei_read_code( pDecodedMessageOutputStream, getManGvdZNearLen ), code, "man_gvd_z_near" ); sei.m_manGvdZNear[i] = code; 1596 sei_read_flag( pDecodedMessageOutputStream, code, "sign_gvd_z_far_flag" ); sei.m_signGvdZFarFlag[i] = (code == 1); 1597 sei_read_code( pDecodedMessageOutputStream, 7, code, "exp_gvd_z_far" ); sei.m_expGvdZFar[i] = code; 1598 sei_read_code( pDecodedMessageOutputStream, 5, code, "man_len_gvd_z_far_minus1" ); sei.m_manLenGvdZFarMinus1[i] = code; 1599 sei_read_code( pDecodedMessageOutputStream, getManGvdZFarLen ), code, "man_gvd_z_far" ); sei.m_manGvdZFar[i] = code; 1600 } 1601 } 1602 if( sei.m_intrinsicParamGvdFlag ) 1603 { 1604 sei_read_uvlc( pDecodedMessageOutputStream, code, "prec_gvd_focal_length" ); sei.m_precGvdFocalLength = code; 1605 sei_read_uvlc( pDecodedMessageOutputStream, code, "prec_gvd_principal_point" ); sei.m_precGvdPrincipalPoint = code; 1606 } 1607 if( sei.m_rotationGvdFlag ) 1608 { 1609 sei_read_uvlc( pDecodedMessageOutputStream, code, "prec_gvd_rotation_param" ); sei.m_precGvdRotationParam = code; 1610 } 1611 if( sei.m_translationGvdFlag ) 1612 { 1613 sei_read_uvlc( pDecodedMessageOutputStream, code, "prec_gvd_translation_param" ); sei.m_precGvdTranslationParam = code; 1614 } 1615 for( Int i = 0; i <= sei.m_numConstituentViewsGvdMinus1 + 1; i++ ) 1616 { 1617 if( sei.m_intrinsicParamGvdFlag ) 1618 { 1619 sei_read_flag( pDecodedMessageOutputStream, code, "sign_gvd_focal_length_x" ); sei.m_signGvdFocalLengthX[i] = (code == 1); 1620 sei_read_code( pDecodedMessageOutputStream, 6, code, "exp_gvd_focal_length_x" ); sei.m_expGvdFocalLengthX[i] = code; 1621 sei_read_code( pDecodedMessageOutputStream, getManGvdFocalLengthXLen ), code, "man_gvd_focal_length_x" ); sei.m_manGvdFocalLengthX[i] = code; 1622 sei_read_flag( pDecodedMessageOutputStream, code, "sign_gvd_focal_length_y" ); sei.m_signGvdFocalLengthY[i] = (code == 1); 1623 sei_read_code( pDecodedMessageOutputStream, 6, code, "exp_gvd_focal_length_y" ); sei.m_expGvdFocalLengthY[i] = code; 1624 sei_read_code( pDecodedMessageOutputStream, getManGvdFocalLengthYLen ), code, "man_gvd_focal_length_y" ); sei.m_manGvdFocalLengthY[i] = code; 1625 sei_read_flag( pDecodedMessageOutputStream, code, "sign_gvd_principal_point_x" ); sei.m_signGvdPrincipalPointX[i] = (code == 1); 1626 sei_read_code( pDecodedMessageOutputStream, 6, code, "exp_gvd_principal_point_x" ); sei.m_expGvdPrincipalPointX[i] = code; 1627 sei_read_code( pDecodedMessageOutputStream, getManGvdPrincipalPointXLen ), code, "man_gvd_principal_point_x" ); sei.m_manGvdPrincipalPointX[i] = code; 1628 sei_read_flag( pDecodedMessageOutputStream, code, "sign_gvd_principal_point_y" ); sei.m_signGvdPrincipalPointY[i] = (code == 1); 1629 sei_read_code( pDecodedMessageOutputStream, 6, code, "exp_gvd_principal_point_y" ); sei.m_expGvdPrincipalPointY[i] = code; 1630 sei_read_code( pDecodedMessageOutputStream, getManGvdPrincipalPointYLen ), code, "man_gvd_principal_point_y" ); sei.m_manGvdPrincipalPointY[i] = code; 1631 } 1632 if( sei.m_rotationGvdFlag ) 1633 { 1634 for( Int j = 10; j <= 3; j++ ) /* row */ 1635 { 1636 for( Int k = 10; k <= 3; k++ ) /* column */ 1637 { 1638 sei_read_flag( pDecodedMessageOutputStream, code, "sign_gvd_r" ); sei.m_signGvdR[i][j][k] = (code == 1); 1639 sei_read_code( pDecodedMessageOutputStream, 6, code, "exp_gvd_r" ); sei.m_expGvdR[i][j][k] = code; 1640 sei_read_code( pDecodedMessageOutputStream, getManGvdRLen ), code, "man_gvd_r" ); sei.m_manGvdR[i][j][k] = code; 1641 } 1642 } 1643 } 1644 if( sei.m_translationGvdFlag ) 1645 { 1646 sei_read_flag( pDecodedMessageOutputStream, code, "sign_gvd_t_x" ); sei.m_signGvdTX[i] = (code == 1); 1647 sei_read_code( pDecodedMessageOutputStream, 6, code, "exp_gvd_t_x" ); sei.m_expGvdTX[i] = code; 1648 sei_read_code( pDecodedMessageOutputStream, getManGvdTXLen ), code, "man_gvd_t_x" ); sei.m_manGvdTX[i] = code; 1649 } 1650 } 1651 } 1652 if( sei.m_depthType == 1 ) 1653 { 1654 sei_read_svlc( pDecodedMessageOutputStream, code, "min_offset_x_int" ); sei.m_minOffsetXInt = code; 1655 sei_read_code( pDecodedMessageOutputStream, 8, code, "min_offset_x_frac" ); sei.m_minOffsetXFrac = code; 1656 sei_read_svlc( pDecodedMessageOutputStream, code, "max_offset_x_int" ); sei.m_maxOffsetXInt = code; 1657 sei_read_code( pDecodedMessageOutputStream, 8, code, "max_offset_x_frac" ); sei.m_maxOffsetXFrac = code; 1658 sei_read_flag( pDecodedMessageOutputStream, code, "offset_y_present_flag" ); sei.m_offsetYPresentFlag = (code == 1); 1659 if( sei.m_offsetYPresentFlag ) 1660 { 1661 sei_read_svlc( pDecodedMessageOutputStream, code, "min_offset_y_int" ); sei.m_minOffsetYInt = code; 1662 sei_read_code( pDecodedMessageOutputStream, 8, code, "min_offset_y_frac" ); sei.m_minOffsetYFrac = code; 1663 sei_read_svlc( pDecodedMessageOutputStream, code, "max_offset_y_int" ); sei.m_maxOffsetYInt = code; 1664 sei_read_code( pDecodedMessageOutputStream, 8, code, "max_offset_y_frac" ); sei.m_maxOffsetYFrac = code; 1665 } 1666 sei_read_flag( pDecodedMessageOutputStream, code, "warp_map_size_present_flag" ); sei.m_warpMapSizePresentFlag = (code == 1); 1667 if( sei.m_warpMapSizePresentFlag ) 1668 { 1669 sei_read_uvlc( pDecodedMessageOutputStream, code, "warp_map_width_minus2" ); sei.m_warpMapWidthMinus2 = code; 1670 sei_read_uvlc( pDecodedMessageOutputStream, code, "warp_map_height_minus2" ); sei.m_warpMapHeightMinus2 = code; 1671 } 1672 } 1673 } 1674 }; 1675 #endif 1676 1103 1677 //! \} -
branches/HTM-15.1-dev0/source/Lib/TLibDecoder/SEIread.h
r1313 r1328 57 57 virtual ~SEIReader() {}; 58 58 Void parseSEImessage(TComInputBitstream* bs, SEIMessages& seis, const NalUnitType nalUnitType, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream); 59 #if NH_MV_SEI 60 Void setLayerId ( Int layerId ) { m_layerId = layerId; }; 61 Void setDecOrder ( Int64 decOrder ) { m_decOrder = decOrder; }; 62 #endif 59 63 protected: 60 64 Void xReadSEImessage (SEIMessages& seis, const NalUnitType nalUnitType, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream); … … 81 85 Void xParseSEIMasteringDisplayColourVolume (SEIMasteringDisplayColourVolume& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 82 86 #if NH_MV 87 #if !NH_MV_SEI 83 88 Void xParseSEISubBitstreamProperty (SEISubBitstreamProperty &sei , UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 84 89 Void xResizeSubBitstreamPropertySeiArrays (SEISubBitstreamProperty &sei); 90 #endif 91 #endif 92 #if NH_MV_SEI_TBD 93 Void xParseSEILayersNotPresent (SEILayersNotPresent& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 94 #endif 95 Void xParseSEIInterLayerConstrainedTileSets (SEIInterLayerConstrainedTileSets& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 96 #if NH_MV_SEI_TBD 97 Void xParseSEIBspNesting (SEIBspNesting& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 98 Void xParseSEIBspInitialArrivalTime (SEIBspInitialArrivalTime& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 99 #endif 100 Void xParseSEISubBitstreamProperty (SEISubBitstreamProperty& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 101 #if NH_MV_SEI_TBD 102 Void xParseSEIAlphaChannelInfo (SEIAlphaChannelInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 103 Void xParseSEIOverlayInfo (SEIOverlayInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 104 #endif 105 Void xParseSEITemporalMvPredictionConstraints(SEITemporalMvPredictionConstraints& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 106 #if NH_MV_SEI_TBD 107 Void xParseSEIFrameFieldInfo (SEIFrameFieldInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 108 Void xParseSEIThreeDimensionalReferenceDisplaysInfo (SEIThreeDimensionalReferenceDisplaysInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 109 Void xParseSEIDepthRepresentationInfo (SEIDepthRepresentationInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 110 111 Void xParseSEIDepthRepInfoElement (SEIDepthRepInfoElement& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 112 #endif 113 Void xParseSEIMultiviewSceneInfo (SEIMultiviewSceneInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 114 115 Void xParseSEIMultiviewAcquisitionInfo (SEIMultiviewAcquisitionInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 116 117 #if NH_MV_SEI 118 Void xParseSEIMultiviewViewPosition (SEIMultiviewViewPosition& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 119 #endif 120 #if NH_MV_SEI_TBD 121 Void xParseSEIAlternativeDepthInfo (SEIAlternativeDepthInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 85 122 #endif 86 123 … … 89 126 Void sei_read_svlc(std::ostream *pOS, Int& ruiCode, const Char *pSymbolName); 90 127 Void sei_read_flag(std::ostream *pOS, UInt& ruiCode, const Char *pSymbolName); 128 #if NH_MV_SEI 129 inline Void output_sei_message_header(SEI &sei, std::ostream *pDecodedMessageOutputStream, UInt payloadSize); 130 private: 131 Int m_layerId; 132 Int64 m_decOrder; 133 #endif 91 134 }; 92 135 -
branches/HTM-15.1-dev0/source/Lib/TLibDecoder/TDecTop.cpp
r1321 r1328 684 684 } 685 685 } 686 #if NH_MV_SEI 687 m_seiReader.setLayerId ( newPic->getLayerId ( ) ); 688 m_seiReader.setDecOrder( newPic->getDecodingOrder( ) ); 689 #endif 686 690 #endif 687 691
Note: See TracChangeset for help on using the changeset viewer.