Changeset 1460 in SHVCSoftware for branches/SHM-dev/source/Lib/TLibDecoder
- Timestamp:
- 20 Aug 2015, 20:54:17 (10 years ago)
- Location:
- branches/SHM-dev/source/Lib/TLibDecoder
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-dev/source/Lib/TLibDecoder/SEIread.cpp
r1459 r1460 308 308 xParseSEIKneeFunctionInfo((SEIKneeFunctionInfo&) *sei, payloadSize, pDecodedMessageOutputStream); 309 309 break; 310 case SEI::MASTERING_DISPLAY_COLOUR_VOLUME:311 sei = new SEIMasteringDisplayColourVolume;312 xParseSEIMasteringDisplayColourVolume((SEIMasteringDisplayColourVolume&) *sei, payloadSize, pDecodedMessageOutputStream);313 break;314 310 #if Q0074_COLOUR_REMAPPING_SEI 315 311 case SEI::COLOUR_REMAPPING_INFO: … … 318 314 break; 319 315 #endif 316 case SEI::MASTERING_DISPLAY_COLOUR_VOLUME: 317 sei = new SEIMasteringDisplayColourVolume; 318 xParseSEIMasteringDisplayColourVolume((SEIMasteringDisplayColourVolume&) *sei, payloadSize, pDecodedMessageOutputStream); 319 break; 320 320 #if SVC_EXTENSION 321 321 #if LAYERS_NOT_PRESENT_SEI … … 1335 1335 } 1336 1336 1337 Void SEIReader::xParseSEIMasteringDisplayColourVolume(SEIMasteringDisplayColourVolume& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)1338 {1339 UInt code;1340 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize);1341 1342 sei_read_code( pDecodedMessageOutputStream, 16, code, "display_primaries_x[0]" ); sei.values.primaries[0][0] = code;1343 sei_read_code( pDecodedMessageOutputStream, 16, code, "display_primaries_y[0]" ); sei.values.primaries[0][1] = code;1344 1345 sei_read_code( pDecodedMessageOutputStream, 16, code, "display_primaries_x[1]" ); sei.values.primaries[1][0] = code;1346 sei_read_code( pDecodedMessageOutputStream, 16, code, "display_primaries_y[1]" ); sei.values.primaries[1][1] = code;1347 1348 sei_read_code( pDecodedMessageOutputStream, 16, code, "display_primaries_x[2]" ); sei.values.primaries[2][0] = code;1349 sei_read_code( pDecodedMessageOutputStream, 16, code, "display_primaries_y[2]" ); sei.values.primaries[2][1] = code;1350 1351 1352 sei_read_code( pDecodedMessageOutputStream, 16, code, "white_point_x" ); sei.values.whitePoint[0] = code;1353 sei_read_code( pDecodedMessageOutputStream, 16, code, "white_point_y" ); sei.values.whitePoint[1] = code;1354 1355 sei_read_code( pDecodedMessageOutputStream, 32, code, "max_display_mastering_luminance" ); sei.values.maxLuminance = code;1356 sei_read_code( pDecodedMessageOutputStream, 32, code, "min_display_mastering_luminance" ); sei.values.minLuminance = code;1357 }1358 1359 1337 #if Q0074_COLOUR_REMAPPING_SEI 1360 Void SEIReader::xParseSEIColourRemappingInfo(SEIColourRemappingInfo& sei, UInt /*payloadSize*/, std::ostream *pDecodedMessageOutputStream)1338 Void SEIReader::xParseSEIColourRemappingInfo(SEIColourRemappingInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1361 1339 { 1362 1340 UInt uiVal; 1363 1341 Int iVal; 1342 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1364 1343 1365 1344 sei_read_uvlc( pDecodedMessageOutputStream, uiVal, "colour_remap_id" ); sei.m_colourRemapId = uiVal; … … 1371 1350 if ( sei.m_colourRemapVideoSignalInfoPresentFlag ) 1372 1351 { 1373 sei_read_flag( pDecodedMessageOutputStream, uiVal, "colour_remap_full_range_flag" ); sei.m_colourRemapFullRangeFlag = uiVal;1374 sei_read_code( pDecodedMessageOutputStream, 8, uiVal, "colour_remap_primaries" ); sei.m_colourRemapPrimaries = uiVal;1375 sei_read_code( pDecodedMessageOutputStream, 8, uiVal, "colour_remap_transfer_function" ); sei.m_colourRemapTransferFunction = uiVal;1376 sei_read_code( pDecodedMessageOutputStream, 8, uiVal, "colour_remap_matrix_coefficients" ); sei.m_colourRemapMatrixCoefficients = uiVal;1377 } 1378 sei_read_code( pDecodedMessageOutputStream, 8, uiVal, "colour_remap_input_bit_depth" ); sei.m_colourRemapInputBitDepth = uiVal;1379 sei_read_code( pDecodedMessageOutputStream, 8, uiVal, "colour_remap_bit_depth" ); sei.m_colourRemapBitDepth = uiVal;1352 sei_read_flag( pDecodedMessageOutputStream, uiVal, "colour_remap_full_range_flag" ); sei.m_colourRemapFullRangeFlag = uiVal; 1353 sei_read_code( pDecodedMessageOutputStream, 8, uiVal, "colour_remap_primaries" ); sei.m_colourRemapPrimaries = uiVal; 1354 sei_read_code( pDecodedMessageOutputStream, 8, uiVal, "colour_remap_transfer_function" ); sei.m_colourRemapTransferFunction = uiVal; 1355 sei_read_code( pDecodedMessageOutputStream, 8, uiVal, "colour_remap_matrix_coefficients" ); sei.m_colourRemapMatrixCoefficients = uiVal; 1356 } 1357 sei_read_code( pDecodedMessageOutputStream, 8, uiVal, "colour_remap_input_bit_depth" ); sei.m_colourRemapInputBitDepth = uiVal; 1358 sei_read_code( pDecodedMessageOutputStream, 8, uiVal, "colour_remap_bit_depth" ); sei.m_colourRemapBitDepth = uiVal; 1380 1359 1381 1360 for( Int c=0 ; c<3 ; c++ ) 1382 1361 { 1383 1362 sei_read_code( pDecodedMessageOutputStream, 8, uiVal, "pre_lut_num_val_minus1[c]" ); sei.m_preLutNumValMinus1[c] = (uiVal==0) ? 1 : uiVal; 1384 sei.m_preLutCodedValue[c].resize(sei.m_preLutNumValMinus1[c]+1); 1385 sei.m_preLutTargetValue[c].resize(sei.m_preLutNumValMinus1[c]+1); 1363 sei.m_preLut[c].resize(sei.m_preLutNumValMinus1[c]+1); 1386 1364 if( uiVal> 0 ) 1365 { 1387 1366 for ( Int i=0 ; i<=sei.m_preLutNumValMinus1[c] ; i++ ) 1388 1367 { 1389 sei_read_code( pDecodedMessageOutputStream, (( sei.m_colourRemapInputBitDepth + 7 ) >> 3 ) << 3, uiVal, "pre_lut_coded_value[c][i]" ); sei.m_preLutCodedValue[c][i] = uiVal; 1390 sei_read_code( pDecodedMessageOutputStream, (( sei.m_colourRemapBitDepth + 7 ) >> 3 ) << 3, uiVal, "pre_lut_target_value[c][i]" ); sei.m_preLutTargetValue[c][i] = uiVal; 1391 } 1368 sei_read_code( pDecodedMessageOutputStream, (( sei.m_colourRemapInputBitDepth + 7 ) >> 3 ) << 3, uiVal, "pre_lut_coded_value[c][i]" ); sei.m_preLut[c][i].codedValue = uiVal; 1369 sei_read_code( pDecodedMessageOutputStream, (( sei.m_colourRemapBitDepth + 7 ) >> 3 ) << 3, uiVal, "pre_lut_target_value[c][i]" ); sei.m_preLut[c][i].targetValue = uiVal; 1370 } 1371 } 1392 1372 else // pre_lut_num_val_minus1[c] == 0 1393 1373 { 1394 sei.m_preLut CodedValue[c][0]= 0;1395 sei.m_preLut TargetValue[c][0]= 0;1396 sei.m_preLut CodedValue[c][1]= (1 << sei.m_colourRemapInputBitDepth) - 1 ;1397 sei.m_preLut TargetValue[c][1]= (1 << sei.m_colourRemapBitDepth) - 1 ;1374 sei.m_preLut[c][0].codedValue = 0; 1375 sei.m_preLut[c][0].targetValue = 0; 1376 sei.m_preLut[c][1].codedValue = (1 << sei.m_colourRemapInputBitDepth) - 1 ; 1377 sei.m_preLut[c][1].targetValue = (1 << sei.m_colourRemapBitDepth) - 1 ; 1398 1378 } 1399 1379 } … … 1404 1384 sei_read_code( pDecodedMessageOutputStream, 4, uiVal, "log2_matrix_denom" ); sei.m_log2MatrixDenom = uiVal; 1405 1385 for ( Int c=0 ; c<3 ; c++ ) 1386 { 1406 1387 for ( Int i=0 ; i<3 ; i++ ) 1407 1388 { 1408 1389 sei_read_svlc( pDecodedMessageOutputStream, iVal, "colour_remap_coeffs[c][i]" ); sei.m_colourRemapCoeffs[c][i] = iVal; 1409 1390 } 1391 } 1410 1392 } 1411 1393 else // setting default matrix (I3) 1412 1394 { 1413 sei.m_log2MatrixDenom = 0;1395 sei.m_log2MatrixDenom = 10; 1414 1396 for ( Int c=0 ; c<3 ; c++ ) 1397 { 1415 1398 for ( Int i=0 ; i<3 ; i++ ) 1416 sei.m_colourRemapCoeffs[c][i] = (c==i) ? 1 : 0; 1399 { 1400 sei.m_colourRemapCoeffs[c][i] = (c==i) << sei.m_log2MatrixDenom; 1401 } 1402 } 1417 1403 } 1418 1404 for( Int c=0 ; c<3 ; c++ ) 1419 1405 { 1420 1406 sei_read_code( pDecodedMessageOutputStream, 8, uiVal, "post_lut_num_val_minus1[c]" ); sei.m_postLutNumValMinus1[c] = (uiVal==0) ? 1 : uiVal; 1421 sei.m_postLutCodedValue[c].resize(sei.m_postLutNumValMinus1[c]+1); 1422 sei.m_postLutTargetValue[c].resize(sei.m_postLutNumValMinus1[c]+1); 1407 sei.m_postLut[c].resize(sei.m_postLutNumValMinus1[c]+1); 1423 1408 if( uiVal > 0 ) 1409 { 1424 1410 for ( Int i=0 ; i<=sei.m_postLutNumValMinus1[c] ; i++ ) 1425 1411 { 1426 sei_read_code( pDecodedMessageOutputStream, (( sei.m_colourRemapBitDepth + 7 ) >> 3 ) << 3, uiVal, "post_lut_coded_value[c][i]" ); sei.m_postLutCodedValue[c][i] = uiVal; 1427 sei_read_code( pDecodedMessageOutputStream, (( sei.m_colourRemapBitDepth + 7 ) >> 3 ) << 3, uiVal, "post_lut_target_value[c][i]" ); sei.m_postLutTargetValue[c][i] = uiVal; 1428 } 1412 sei_read_code( pDecodedMessageOutputStream, (( sei.m_colourRemapBitDepth + 7 ) >> 3 ) << 3, uiVal, "post_lut_coded_value[c][i]" ); sei.m_postLut[c][i].codedValue = uiVal; 1413 sei_read_code( pDecodedMessageOutputStream, (( sei.m_colourRemapBitDepth + 7 ) >> 3 ) << 3, uiVal, "post_lut_target_value[c][i]" ); sei.m_postLut[c][i].targetValue = uiVal; 1414 } 1415 } 1429 1416 else 1430 1417 { 1431 sei.m_postLutCodedValue[c][0] = 0; 1432 sei.m_postLutTargetValue[c][0] = 0; 1433 sei.m_postLutTargetValue[c][1] = (1 << sei.m_colourRemapBitDepth) - 1; 1434 sei.m_postLutCodedValue[c][1] = (1 << sei.m_colourRemapBitDepth) - 1; 1435 } 1436 } 1437 } 1438 } 1439 #endif 1440 1418 sei.m_postLut[c][0].codedValue = 0; 1419 sei.m_postLut[c][0].targetValue = 0; 1420 sei.m_postLut[c][1].targetValue = (1 << sei.m_colourRemapBitDepth) - 1; 1421 sei.m_postLut[c][1].codedValue = (1 << sei.m_colourRemapBitDepth) - 1; 1422 } 1423 } 1424 } 1425 } 1426 #endif 1427 1428 Void SEIReader::xParseSEIMasteringDisplayColourVolume(SEIMasteringDisplayColourVolume& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream) 1429 { 1430 UInt code; 1431 output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize); 1432 1433 sei_read_code( pDecodedMessageOutputStream, 16, code, "display_primaries_x[0]" ); sei.values.primaries[0][0] = code; 1434 sei_read_code( pDecodedMessageOutputStream, 16, code, "display_primaries_y[0]" ); sei.values.primaries[0][1] = code; 1435 1436 sei_read_code( pDecodedMessageOutputStream, 16, code, "display_primaries_x[1]" ); sei.values.primaries[1][0] = code; 1437 sei_read_code( pDecodedMessageOutputStream, 16, code, "display_primaries_y[1]" ); sei.values.primaries[1][1] = code; 1438 1439 sei_read_code( pDecodedMessageOutputStream, 16, code, "display_primaries_x[2]" ); sei.values.primaries[2][0] = code; 1440 sei_read_code( pDecodedMessageOutputStream, 16, code, "display_primaries_y[2]" ); sei.values.primaries[2][1] = code; 1441 1442 1443 sei_read_code( pDecodedMessageOutputStream, 16, code, "white_point_x" ); sei.values.whitePoint[0] = code; 1444 sei_read_code( pDecodedMessageOutputStream, 16, code, "white_point_y" ); sei.values.whitePoint[1] = code; 1445 1446 sei_read_code( pDecodedMessageOutputStream, 32, code, "max_display_mastering_luminance" ); sei.values.maxLuminance = code; 1447 sei_read_code( pDecodedMessageOutputStream, 32, code, "min_display_mastering_luminance" ); sei.values.minLuminance = code; 1448 } 1441 1449 1442 1450 #if SVC_EXTENSION -
branches/SHM-dev/source/Lib/TLibDecoder/SEIread.h
r1442 r1460 108 108 Void xParseSEIKneeFunctionInfo (SEIKneeFunctionInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 109 109 Void xParseSEIMasteringDisplayColourVolume (SEIMasteringDisplayColourVolume& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 110 #if Q0074_COLOUR_REMAPPING_SEI 111 Void xParseSEIColourRemappingInfo (SEIColourRemappingInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream); 112 #endif 110 113 111 114 Void sei_read_code(std::ostream *pOS, UInt uiLength, UInt& ruiCode, const TChar *pSymbolName); … … 114 117 Void sei_read_flag(std::ostream *pOS, UInt& ruiCode, const TChar *pSymbolName); 115 118 116 #if Q0074_COLOUR_REMAPPING_SEI117 Void xParseSEIColourRemappingInfo (SEIColourRemappingInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);118 #endif119 119 #if N0383_IL_CONSTRAINED_TILE_SETS_SEI 120 120 Void xParseSEIInterLayerConstrainedTileSets (SEIInterLayerConstrainedTileSets &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
Note: See TracChangeset for help on using the changeset viewer.