Changeset 776 in SHVCSoftware for branches/SHM-6-dev/source/Lib/TLibEncoder


Ignore:
Timestamp:
21 May 2014, 02:18:44 (11 years ago)
Author:
sony
Message:

JCTVC-P0050: Knee Function Information (MACRO: P0050_KNEE_FUNCTION_SEI)
ohji.nakagami@…

Location:
branches/SHM-6-dev/source/Lib/TLibEncoder
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-6-dev/source/Lib/TLibEncoder/SEIwrite.cpp

    r774 r776  
    8787    fprintf( g_hTrace, "=========== Tone Mapping Info SEI message ===========\n");
    8888    break;
     89#if P0050_KNEE_FUNCTION_SEI
     90  case SEI::KNEE_FUNCTION_INFO:
     91    fprintf( g_hTrace, "=========== Knee Function Information SEI message ===========\n");
     92    break;
     93#endif
    8994#if Q0074_SEI_COLOR_MAPPING
    9095  case SEI::COLOR_MAPPING_INFO:
     
    177182    xWriteSEIToneMappingInfo(*static_cast<const SEIToneMappingInfo*>(&sei));
    178183    break;
     184#if P0050_KNEE_FUNCTION_SEI
     185  case SEI::KNEE_FUNCTION_INFO:
     186    xWriteSEIKneeFunctionInfo(*static_cast<const SEIKneeFunctionInfo*>(&sei));
     187    break;
     188#endif
    179189#if Q0074_SEI_COLOR_MAPPING
    180190  case SEI::COLOR_MAPPING_INFO:
     
    575585  xWriteByteAlign();
    576586}
    577 
     587#if P0050_KNEE_FUNCTION_SEI
     588Void SEIWriter::xWriteSEIKneeFunctionInfo(const SEIKneeFunctionInfo &sei)
     589{
     590  WRITE_UVLC( sei.m_kneeId, "knee_function_id" );
     591  WRITE_FLAG( sei.m_kneeCancelFlag, "knee_function_cancel_flag" );
     592  if ( !sei.m_kneeCancelFlag )
     593  {
     594    WRITE_FLAG( sei.m_kneePersistenceFlag, "knee_function_persistence_flag" );
     595    WRITE_FLAG( sei.m_kneeMappingFlag, "mapping_flag" );
     596    WRITE_CODE( (UInt)sei.m_kneeInputDrange , 32,  "input_d_range" );
     597    WRITE_CODE( (UInt)sei.m_kneeInputDispLuminance, 32,  "input_disp_luminance" );
     598    WRITE_CODE( (UInt)sei.m_kneeOutputDrange, 32,  "output_d_range" );
     599    WRITE_CODE( (UInt)sei.m_kneeOutputDispLuminance, 32,  "output_disp_luminance" );
     600    WRITE_UVLC( sei.m_kneeNumKneePointsMinus1, "num_knee_points_minus1" );
     601    for(Int i = 0; i <= sei.m_kneeNumKneePointsMinus1; i++ )
     602    {
     603      WRITE_CODE( (UInt)sei.m_kneeInputKneePoint[i], 10,"input_knee_point" );
     604      WRITE_CODE( (UInt)sei.m_kneeOutputKneePoint[i], 10, "output_knee_point" );
     605    }
     606  }
     607  xWriteByteAlign();
     608}
     609#endif
    578610#if Q0074_SEI_COLOR_MAPPING
    579611Void SEIWriter::xWriteSEIColorMappingInfo(const SEIColorMappingInfo& sei)
  • branches/SHM-6-dev/source/Lib/TLibEncoder/SEIwrite.h

    r697 r776  
    7272  Void xWriteSEIGradualDecodingRefreshInfo(const SEIGradualDecodingRefreshInfo &sei);
    7373  Void xWriteSEIToneMappingInfo(const SEIToneMappingInfo& sei);
     74#if P0050_KNEE_FUNCTION_SEI
     75  Void xWriteSEIKneeFunctionInfo(const SEIKneeFunctionInfo &sei);
     76#endif
    7477#if Q0074_SEI_COLOR_MAPPING
    7578  Void xWriteSEIColorMappingInfo(const SEIColorMappingInfo& sei);
  • branches/SHM-6-dev/source/Lib/TLibEncoder/TEncCfg.h

    r756 r776  
    248248  Int*      m_codedPivotValue;
    249249  Int*      m_targetPivotValue;
     250#if P0050_KNEE_FUNCTION_SEI
     251  Bool      m_kneeSEIEnabled;
     252  Int       m_kneeSEIId;
     253  Bool      m_kneeSEICancelFlag;
     254  Bool      m_kneeSEIPersistenceFlag;
     255  Bool      m_kneeSEIMappingFlag;
     256  Int       m_kneeSEIInputDrange;
     257  Int       m_kneeSEIInputDispLuminance;
     258  Int       m_kneeSEIOutputDrange;
     259  Int       m_kneeSEIOutputDispLuminance;
     260  Int       m_kneeSEINumKneePointsMinus1;
     261  Int*      m_kneeSEIInputKneePoint;
     262  Int*      m_kneeSEIOutputKneePoint;
     263#endif
    250264#if Q0074_SEI_COLOR_MAPPING
    251265  Char*     m_seiColorMappingFile;
     
    668682  Void  setTMISEIExtendedWhiteLevelLumaCodeValue(Int b)      {  m_extendedWhiteLevelLumaCodeValue =b;  }
    669683  Int   getTMISEIExtendedWhiteLevelLumaCodeValue()           {  return m_extendedWhiteLevelLumaCodeValue;  }
     684#if P0050_KNEE_FUNCTION_SEI
     685  Void  setKneeSEIEnabled(Int b)                             { m_kneeSEIEnabled = b; }
     686  Bool  getKneeSEIEnabled()                                  { return m_kneeSEIEnabled; }
     687  Void  setKneeSEIId(Int b)                                  { m_kneeSEIId = b; }
     688  Int   getKneeSEIId()                                       { return m_kneeSEIId; }
     689  Void  setKneeSEICancelFlag(Bool b)                         { m_kneeSEICancelFlag=b; }
     690  Bool  getKneeSEICancelFlag()                               { return m_kneeSEICancelFlag; }
     691  Void  setKneeSEIPersistenceFlag(Bool b)                    { m_kneeSEIPersistenceFlag = b; }
     692  Bool  getKneeSEIPersistenceFlag()                          { return m_kneeSEIPersistenceFlag; }
     693  Void  setKneeSEIMappingFlag(Bool b)                        { m_kneeSEIMappingFlag = b; }
     694  Bool  getKneeSEIMappingFlag()                              { return m_kneeSEIMappingFlag; }
     695  Void  setKneeSEIInputDrange(Int b)                         { m_kneeSEIInputDrange = b; }
     696  Int   getKneeSEIInputDrange()                              { return m_kneeSEIInputDrange; }
     697  Void  setKneeSEIInputDispLuminance(Int b)                  { m_kneeSEIInputDispLuminance = b; }
     698  Int   getKneeSEIInputDispLuminance()                       { return m_kneeSEIInputDispLuminance; }
     699  Void  setKneeSEIOutputDrange(Int b)                        { m_kneeSEIOutputDrange = b; }
     700  Int   getKneeSEIOutputDrange()                             { return m_kneeSEIOutputDrange; }
     701  Void  setKneeSEIOutputDispLuminance(Int b)                 { m_kneeSEIOutputDispLuminance = b; }
     702  Int   getKneeSEIOutputDispLuminance()                      { return m_kneeSEIOutputDispLuminance; }
     703  Void  setKneeSEINumKneePointsMinus1(Int b)                 { m_kneeSEINumKneePointsMinus1 = b; }
     704  Int   getKneeSEINumKneePointsMinus1()                      { return m_kneeSEINumKneePointsMinus1; }
     705  Void  setKneeSEIInputKneePoint(Int *p)                     { m_kneeSEIInputKneePoint = p; }
     706  Int*  getKneeSEIInputKneePoint()                           { return m_kneeSEIInputKneePoint; }
     707  Void  setKneeSEIOutputKneePoint(Int *p)                    { m_kneeSEIOutputKneePoint = p; }
     708  Int*  getKneeSEIOutputKneePoint()                          { return m_kneeSEIOutputKneePoint; }
     709#endif
    670710#if Q0074_SEI_COLOR_MAPPING
    671711  Void  setColorMappingInfoSEIFile( Char* nameFile )         {  m_seiColorMappingFile = nameFile; }
  • branches/SHM-6-dev/source/Lib/TLibEncoder/TEncGOP.cpp

    r771 r776  
    325325}
    326326
     327#if P0050_KNEE_FUNCTION_SEI
     328SEIKneeFunctionInfo* TEncGOP::xCreateSEIKneeFunctionInfo()
     329{
     330  SEIKneeFunctionInfo *seiKneeFunctionInfo = new SEIKneeFunctionInfo();
     331  seiKneeFunctionInfo->m_kneeId = m_pcCfg->getKneeSEIId();
     332  seiKneeFunctionInfo->m_kneeCancelFlag = m_pcCfg->getKneeSEICancelFlag();
     333  if ( !seiKneeFunctionInfo->m_kneeCancelFlag )
     334  {
     335    seiKneeFunctionInfo->m_kneePersistenceFlag = m_pcCfg->getKneeSEIPersistenceFlag();
     336    seiKneeFunctionInfo->m_kneeMappingFlag = m_pcCfg->getKneeSEIMappingFlag();
     337    seiKneeFunctionInfo->m_kneeInputDrange = m_pcCfg->getKneeSEIInputDrange();
     338    seiKneeFunctionInfo->m_kneeInputDispLuminance = m_pcCfg->getKneeSEIInputDispLuminance();
     339    seiKneeFunctionInfo->m_kneeOutputDrange = m_pcCfg->getKneeSEIOutputDrange();
     340    seiKneeFunctionInfo->m_kneeOutputDispLuminance = m_pcCfg->getKneeSEIOutputDispLuminance();
     341
     342    seiKneeFunctionInfo->m_kneeNumKneePointsMinus1 = m_pcCfg->getKneeSEINumKneePointsMinus1();
     343    Int* piInputKneePoint  = m_pcCfg->getKneeSEIInputKneePoint();
     344    Int* piOutputKneePoint = m_pcCfg->getKneeSEIOutputKneePoint();
     345    if(piInputKneePoint&&piOutputKneePoint)
     346    {
     347      seiKneeFunctionInfo->m_kneeInputKneePoint.resize(seiKneeFunctionInfo->m_kneeNumKneePointsMinus1+1);
     348      seiKneeFunctionInfo->m_kneeOutputKneePoint.resize(seiKneeFunctionInfo->m_kneeNumKneePointsMinus1+1);
     349      for(Int i=0; i<=seiKneeFunctionInfo->m_kneeNumKneePointsMinus1; i++)
     350      {
     351        seiKneeFunctionInfo->m_kneeInputKneePoint[i] = piInputKneePoint[i];
     352        seiKneeFunctionInfo->m_kneeOutputKneePoint[i] = piOutputKneePoint[i];
     353       }
     354    }
     355  }
     356  return seiKneeFunctionInfo;
     357}
     358#endif
     359
    327360#if Q0074_SEI_COLOR_MAPPING
    328361SEIColorMappingInfo*  TEncGOP::xCreateSEIColorMappingInfo( Char* file )
     
    475508    delete sei;
    476509  }
     510#if P0050_KNEE_FUNCTION_SEI
     511  if(m_pcCfg->getKneeSEIEnabled())
     512  {
     513    SEIKneeFunctionInfo *sei = xCreateSEIKneeFunctionInfo();
     514
     515    nalu = NALUnit(NAL_UNIT_PREFIX_SEI);
     516    m_pcEntropyCoder->setBitstream(&nalu.m_Bitstream);
     517#if O0164_MULTI_LAYER_HRD
     518    m_seiWriter.writeSEImessage(nalu.m_Bitstream, *sei, m_pcEncTop->getVPS(), sps);
     519#else
     520    m_seiWriter.writeSEImessage(nalu.m_Bitstream, *sei, sps);
     521#endif
     522    writeRBSPTrailingBits(nalu.m_Bitstream);
     523    accessUnit.push_back(new NALUnitEBSP(nalu));
     524    delete sei;
     525  }
     526#endif
    477527#if Q0074_SEI_COLOR_MAPPING
    478528  if(m_pcCfg->getColorMappingInfoSEIFile())
  • branches/SHM-6-dev/source/Lib/TLibEncoder/TEncGOP.h

    r754 r776  
    207207
    208208  SEIToneMappingInfo*     xCreateSEIToneMappingInfo();
     209#if P0050_KNEE_FUNCTION_SEI
     210  SEIKneeFunctionInfo*    xCreateSEIKneeFunctionInfo();
     211#endif
    209212#if Q0074_SEI_COLOR_MAPPING
    210213  SEIColorMappingInfo*    xCreateSEIColorMappingInfo( Char* file );
Note: See TracChangeset for help on using the changeset viewer.