Changeset 1460 in SHVCSoftware for branches/SHM-dev/source/Lib/TLibDecoder


Ignore:
Timestamp:
20 Aug 2015, 20:54:17 (10 years ago)
Author:
seregin
Message:

port rev 4594

Location:
branches/SHM-dev/source/Lib/TLibDecoder
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-dev/source/Lib/TLibDecoder/SEIread.cpp

    r1459 r1460  
    308308      xParseSEIKneeFunctionInfo((SEIKneeFunctionInfo&) *sei, payloadSize, pDecodedMessageOutputStream);
    309309      break;
    310     case SEI::MASTERING_DISPLAY_COLOUR_VOLUME:
    311       sei = new SEIMasteringDisplayColourVolume;
    312       xParseSEIMasteringDisplayColourVolume((SEIMasteringDisplayColourVolume&) *sei, payloadSize, pDecodedMessageOutputStream);
    313       break;
    314310#if Q0074_COLOUR_REMAPPING_SEI
    315311    case SEI::COLOUR_REMAPPING_INFO:
     
    318314      break;
    319315#endif
     316    case SEI::MASTERING_DISPLAY_COLOUR_VOLUME:
     317      sei = new SEIMasteringDisplayColourVolume;
     318      xParseSEIMasteringDisplayColourVolume((SEIMasteringDisplayColourVolume&) *sei, payloadSize, pDecodedMessageOutputStream);
     319      break;
    320320#if SVC_EXTENSION
    321321#if LAYERS_NOT_PRESENT_SEI
     
    13351335}
    13361336
    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 
    13591337#if Q0074_COLOUR_REMAPPING_SEI
    1360 Void SEIReader::xParseSEIColourRemappingInfo(SEIColourRemappingInfo& sei, UInt /*payloadSize*/, std::ostream *pDecodedMessageOutputStream)
     1338Void SEIReader::xParseSEIColourRemappingInfo(SEIColourRemappingInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
    13611339{
    13621340  UInt  uiVal;
    13631341  Int   iVal;
     1342  output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize);
    13641343
    13651344  sei_read_uvlc( pDecodedMessageOutputStream, uiVal, "colour_remap_id" );          sei.m_colourRemapId = uiVal;
     
    13711350    if ( sei.m_colourRemapVideoSignalInfoPresentFlag )
    13721351    {
    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;
    13801359 
    13811360    for( Int c=0 ; c<3 ; c++ )
    13821361    {
    13831362      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);
    13861364      if( uiVal> 0 )
     1365      {
    13871366        for ( Int i=0 ; i<=sei.m_preLutNumValMinus1[c] ; i++ )
    13881367        {
    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      }
    13921372      else // pre_lut_num_val_minus1[c] == 0
    13931373      {
    1394         sei.m_preLutCodedValue[c][0]  = 0;
    1395         sei.m_preLutTargetValue[c][0] = 0;
    1396         sei.m_preLutCodedValue[c][1]  = (1 << sei.m_colourRemapInputBitDepth) - 1 ;
    1397         sei.m_preLutTargetValue[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 ;
    13981378      }
    13991379    }
     
    14041384      sei_read_code( pDecodedMessageOutputStream, 4, uiVal, "log2_matrix_denom" ); sei.m_log2MatrixDenom = uiVal;
    14051385      for ( Int c=0 ; c<3 ; c++ )
     1386      {
    14061387        for ( Int i=0 ; i<3 ; i++ )
    14071388        {
    14081389          sei_read_svlc( pDecodedMessageOutputStream, iVal, "colour_remap_coeffs[c][i]" ); sei.m_colourRemapCoeffs[c][i] = iVal;
    14091390        }
     1391      }
    14101392    }
    14111393    else // setting default matrix (I3)
    14121394    {
    1413       sei.m_log2MatrixDenom = 0;
     1395      sei.m_log2MatrixDenom = 10;
    14141396      for ( Int c=0 ; c<3 ; c++ )
     1397      {
    14151398        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      }
    14171403    }
    14181404    for( Int c=0 ; c<3 ; c++ )
    14191405    {
    14201406      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);
    14231408      if( uiVal > 0 )
     1409      {
    14241410        for ( Int i=0 ; i<=sei.m_postLutNumValMinus1[c] ; i++ )
    14251411        {
    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      }
    14291416      else
    14301417      {
    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
     1428Void 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}
    14411449
    14421450#if SVC_EXTENSION
  • branches/SHM-dev/source/Lib/TLibDecoder/SEIread.h

    r1442 r1460  
    108108  Void xParseSEIKneeFunctionInfo              (SEIKneeFunctionInfo& sei,              UInt payloadSize,                     std::ostream *pDecodedMessageOutputStream);
    109109  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
    110113
    111114  Void sei_read_code(std::ostream *pOS, UInt uiLength, UInt& ruiCode, const TChar *pSymbolName);
     
    114117  Void sei_read_flag(std::ostream *pOS,                UInt& ruiCode, const TChar *pSymbolName);
    115118
    116 #if Q0074_COLOUR_REMAPPING_SEI
    117   Void xParseSEIColourRemappingInfo           (SEIColourRemappingInfo& sei,           UInt payloadSize,                     std::ostream *pDecodedMessageOutputStream);
    118 #endif
    119119#if N0383_IL_CONSTRAINED_TILE_SETS_SEI
    120120  Void xParseSEIInterLayerConstrainedTileSets (SEIInterLayerConstrainedTileSets &sei, UInt payloadSize,                     std::ostream *pDecodedMessageOutputStream);
Note: See TracChangeset for help on using the changeset viewer.