Ignore:
Timestamp:
1 Oct 2015, 15:54:17 (10 years ago)
Author:
disney-htm
Message:

OverlayInfo SEI message integrated

Location:
branches/HTM-15.1-dev0-Disney/source/Lib/TLibCommon
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-15.1-dev0-Disney/source/Lib/TLibCommon/SEI.cpp

    r1339 r1342  
    234234  case SEI::SUB_BITSTREAM_PROPERTY                :               return new SEISubBitstreamProperty;
    235235  case SEI::ALPHA_CHANNEL_INFO                    :               return new SEIAlphaChannelInfo;
    236 #if NH_MV_SEI_TBD
    237236  case SEI::OVERLAY_INFO                          :               return new SEIOverlayInfo;
    238 #endif
    239237  case SEI::TEMPORAL_MV_PREDICTION_CONSTRAINTS    :               return new SEITemporalMvPredictionConstraints;
    240238#if NH_MV_SEI_TBD
     
    740738
    741739};
    742 #if NH_MV_SEI_TBD
    743 Void SEIOverlayInfo::setupFromSlice  ( const TComSlice* slice )
    744 {
    745   sei.m_overlayInfoCancelFlag =  TBD ;
    746   if( !sei.m_overlayInfoCancelFlag )
    747   {
    748     sei.m_overlayContentAuxIdMinus128 =  TBD ;
    749     sei.m_overlayLabelAuxIdMinus128 =  TBD ;
    750     sei.m_overlayAlphaAuxIdMinus128 =  TBD ;
    751     sei.m_overlayElementLabelValueLengthMinus8 =  TBD ;
    752     sei.m_numOverlaysMinus1 =  TBD ;
    753     for( Int i = 0; i  <=  NumOverlaysMinus1( ); i++ )
     740
     741SEIOverlayInfo::SEIOverlayInfo ( )
     742  : m_numOverlaysMax(16)
     743  , m_numOverlayElementsMax(256)
     744  , m_numStringBytesMax(256) //incl. null termination byte
     745{ };
     746
     747Void SEIOverlayInfo::initStringElements ( ) 
     748{
     749  // Set some string values for syntax elements of declarator type st(v)
     750  m_overlayLanguage.resize(m_numOverlaysMax);
     751  m_overlayName.resize(m_numOverlaysMax);
     752  m_overlayElementName.resize(m_numOverlaysMax);
     753  char* cstr = new char[m_numStringBytesMax];
     754  for ( Int i=0 ; i<m_numOverlaysMax ; i++ )
     755  {
     756    sprintf(cstr, "LanguageTag%02d", i);
     757    m_overlayLanguage[i] = std::string(cstr);
     758    sprintf(cstr, "Overlay%02dName", i);
     759    m_overlayName[i] = std::string(cstr);
     760
     761    m_overlayElementName[i].resize(m_numOverlayElementsMax);
     762    for ( Int j=0 ; j<m_numOverlayElementsMax ; j++ )
    754763    {
    755       sei.m_overlayIdx[i] =  TBD ;
    756       sei.m_languageOverlayPresentFlag[i] =  TBD ;
    757       sei.m_overlayContentLayerId[i] =  TBD ;
    758       sei.m_overlayLabelPresentFlag[i] =  TBD ;
    759       if( sei.m_overlayLabelPresentFlag( i ) )
    760       {
    761         sei.m_overlayLabelLayerId[i] =  TBD ;
    762       }
    763       sei.m_overlayAlphaPresentFlag[i] =  TBD ;
    764       if( sei.m_overlayAlphaPresentFlag( i ) )
    765       {
    766         sei.m_overlayAlphaLayerId[i] =  TBD ;
    767       }
    768       if( sei.m_overlayLabelPresentFlag( i ) )
    769       {
    770         sei.m_numOverlayElementsMinus1[i] =  TBD ;
    771         for( Int j = 0; j  <=  sei.m_numOverlayElementsMinus1( i ); j++ )
    772         {
    773           sei.m_overlayElementLabelMin[i][j] =  TBD ;
    774           sei.m_overlayElementLabelMax[i][j] =  TBD ;
    775         }
    776       }
     764      sprintf(cstr, "Overlay%02dElement%03dName", i, j);
     765      m_overlayElementName[i][j] = std::string(cstr);
    777766    }
    778     while( !ByteaLigned(() ) );
    779     {
    780       sei.m_overlayZeroBit =  TBD ;
    781     }
    782     for( Int i = 0; i  <=  NumOverlaysMinus1( ); i++ )
    783     {
    784       if( sei.m_languageOverlayPresentFlag( i ) )
    785       {
    786         sei.m_overlayLanguage[i] =  TBD ;
    787       }
    788       sei.m_overlayName[i] =  TBD ;
    789       if( sei.m_overlayLabelPresentFlag( i ) )
    790       {
    791         for( Int j = 0; j  <=  sei.m_numOverlayElementsMinus1( i ); j++ )
    792         {
    793           sei.m_overlayElementName[i][j] =  TBD ;
    794         }
    795       }
    796     }
    797     sei.m_overlayInfoPersistenceFlag =  TBD ;
    798   }
     767  }
     768  delete [] cstr;
    799769};
    800770
     
    804774  IntAry1d defAppLayerIds, defAppPocs, defAppTids, defAppVclNaluTypes;
    805775
    806   // TBD: Add default values for which layers, POCS, Tids or Nalu types the SEI should be send.
    807   defAppLayerIds    .push_back( TBD );
    808   defAppPocs        .push_back( TBD );
    809   defAppTids        .push_back( TBD );
    810   defAppVclNaluTypes.push_back( TBD );
     776  // Add default values for which layers, POCS, Tids or Nalu types the SEI should be send.
     777  defAppLayerIds    .clear();
     778  defAppPocs        .push_back( 0 );
     779  defAppTids        .push_back( 0 );
     780  defAppVclNaluTypes = IDR_NAL_UNIT_TYPES;
    811781
    812782  Int      defSeiNaluId                  = 0;
    813783  Int      defPositionInSeiNalu          = 0;
    814   Bool     defModifyByEncoder            = TBD;
     784  Bool     defModifyByEncoder            = false;
    815785
    816786  // Setup config file options
     
    819789
    820790  opts.addOptions()
    821     ("OverlayInfoCancelFlag"          , m_overlayInfoCancelFlag            , false                          , "OverlayInfoCancelFlag"            )
    822     ("OverlayContentAuxIdMinus128"    , m_overlayContentAuxIdMinus128      , 0                              , "OverlayContentAuxIdMinus128"      )
    823     ("OverlayLabelAuxIdMinus128"      , m_overlayLabelAuxIdMinus128        , 0                              , "OverlayLabelAuxIdMinus128"        )
    824     ("OverlayAlphaAuxIdMinus128"      , m_overlayAlphaAuxIdMinus128        , 0                              , "OverlayAlphaAuxIdMinus128"        )
    825     ("OverlayElementLabelValueLengthMinus8", m_overlayElementLabelValueLengthMinus8, 0                              , "OverlayElementLabelValueLengthMinus8")
    826     ("NumOverlaysMinus1"              , m_numOverlaysMinus1                , 0                              , "NumOverlaysMinus1"                )
    827     ("OverlayIdx"                     , m_overlayIdx                       , IntAry1d (1,0)                 , "OverlayIdx"                       )
    828     ("LanguageOverlayPresentFlag"     , m_languageOverlayPresentFlag       , BoolAry1d(1,0)                 , "LanguageOverlayPresentFlag"       )
    829     ("OverlayContentLayerId"          , m_overlayContentLayerId            , IntAry1d (1,0)                 , "OverlayContentLayerId"            )
    830     ("OverlayLabelPresentFlag"        , m_overlayLabelPresentFlag          , BoolAry1d(1,0)                 , "OverlayLabelPresentFlag"          )
    831     ("OverlayLabelLayerId"            , m_overlayLabelLayerId              , IntAry1d (1,0)                 , "OverlayLabelLayerId"              )
    832     ("OverlayAlphaPresentFlag"        , m_overlayAlphaPresentFlag          , BoolAry1d(1,0)                 , "OverlayAlphaPresentFlag"          )
    833     ("OverlayAlphaLayerId"            , m_overlayAlphaLayerId              , IntAry1d (1,0)                 , "OverlayAlphaLayerId"              )
    834     ("NumOverlayElementsMinus1"       , m_numOverlayElementsMinus1         , IntAry1d (1,0)                 , "NumOverlayElementsMinus1"         )
    835     ("OverlayElementLabelMin_%d"      , m_overlayElementLabelMin           , IntAry1d (1,0) ,ADDNUM         , "OverlayElementLabelMin"           )
    836     ("OverlayElementLabelMax_%d"      , m_overlayElementLabelMax           , IntAry1d (1,0) ,ADDNUM         , "OverlayElementLabelMax"           )
    837     ("OverlayZeroBit"                 , m_overlayZeroBit                   , 0                              , "OverlayZeroBit"                   )
    838     ("OverlayLanguage"                , m_overlayLanguage                  , IntAry1d (1,0)                 , "OverlayLanguage"                  )
    839     ("OverlayName"                    , m_overlayName                      , IntAry1d (1,0)                 , "OverlayName"                      )
    840     ("OverlayElementName_%d"          , m_overlayElementName               , IntAry1d (1,0) ,ADDNUM         , "OverlayElementName"               )
    841     ("OverlayInfoPersistenceFlag"     , m_overlayInfoPersistenceFlag       , false                          , "OverlayInfoPersistenceFlag"       )
    842     ;
     791    ("OverlayInfoCancelFlag"          , m_overlayInfoCancelFlag            , false                           , "OverlayInfoCancelFlag"            )
     792    ("OverlayContentAuxIdMinus128"    , m_overlayContentAuxIdMinus128      , 0                               , "OverlayContentAuxIdMinus128"      )
     793    ("OverlayLabelAuxIdMinus128"      , m_overlayLabelAuxIdMinus128        , 0                               , "OverlayLabelAuxIdMinus128"        )
     794    ("OverlayAlphaAuxIdMinus128"      , m_overlayAlphaAuxIdMinus128        , 0                               , "OverlayAlphaAuxIdMinus128"        )
     795    ("OverlayElementLabelValueLengthMinus8", m_overlayElementLabelValueLengthMinus8, 0                       , "OverlayElementLabelValueLengthMinus8")
     796    ("NumOverlaysMinus1"              , m_numOverlaysMinus1                , 0                               , "NumOverlaysMinus1"                )
     797    ("OverlayIdx"                     , m_overlayIdx                       , IntAry1d (16,0)                 , "OverlayIdx"                       )
     798    ("LanguageOverlayPresentFlag"     , m_languageOverlayPresentFlag       , BoolAry1d(16,0)                 , "LanguageOverlayPresentFlag"       )
     799    ("OverlayContentLayerId"          , m_overlayContentLayerId            , IntAry1d (16,0)                 , "OverlayContentLayerId"            )
     800    ("OverlayLabelPresentFlag"        , m_overlayLabelPresentFlag          , BoolAry1d(16,0)                 , "OverlayLabelPresentFlag"          )
     801    ("OverlayLabelLayerId"            , m_overlayLabelLayerId              , IntAry1d (16,0)                 , "OverlayLabelLayerId"              )
     802    ("OverlayAlphaPresentFlag"        , m_overlayAlphaPresentFlag          , BoolAry1d(16,0)                 , "OverlayAlphaPresentFlag"          )
     803    ("OverlayAlphaLayerId"            , m_overlayAlphaLayerId              , IntAry1d (16,0)                 , "OverlayAlphaLayerId"              )
     804    ("NumOverlayElementsMinus1"       , m_numOverlayElementsMinus1         , IntAry1d (16,0)                 , "NumOverlayElementsMinus1"         )
     805    ("OverlayElementLabelMin_%d"      , m_overlayElementLabelMin           , IntAry1d (256,0) ,16            , "OverlayElementLabelMin"           )
     806    ("OverlayElementLabelMax_%d"      , m_overlayElementLabelMax           , IntAry1d (256,0) ,16            , "OverlayElementLabelMax"           )       
     807    ("OverlayInfoPersistenceFlag"     , m_overlayInfoPersistenceFlag       , false                           , "OverlayInfoPersistenceFlag"       )
     808    ;
    843809
    844810  po::setDefaults(opts);
     
    847813  po::ErrorReporter err;
    848814  po::parseConfigFile( opts, cfgFile, err );
    849 };
     815
     816  // Initialize some values for syntax elements with declaration type st(v) (i.e. string type syntax elements)
     817  initStringElements();
     818};
     819
    850820
    851821Bool SEIOverlayInfo::checkCfg( const TComSlice* slice )
    852822{
    853823  // Check config values
    854   Bool wrongConfig = false;
    855 
    856   // TBD: Add constraints on presence of SEI here.
    857   xCheckCfg     ( wrongConfig, TBD , "TBD" );
    858   xCheckCfg     ( wrongConfig, TBD , "TBD" );
    859 
    860   // TBD: Modify constraints according to the SEI semantics.   
    861   xCheckCfgRange( wrongConfig, m_overlayInfoCancelFlag          , MINVAL , MAXVAL, "overlay_info_cancel_flag"         );
    862   xCheckCfgRange( wrongConfig, m_overlayContentAuxIdMinus128    , MINVAL , MAXVAL, "overlay_content_aux_id_minus128"  );
    863   xCheckCfgRange( wrongConfig, m_overlayLabelAuxIdMinus128      , MINVAL , MAXVAL, "overlay_label_aux_id_minus128"    );
    864   xCheckCfgRange( wrongConfig, m_overlayAlphaAuxIdMinus128      , MINVAL , MAXVAL, "overlay_alpha_aux_id_minus128"    );
    865   xCheckCfgRange( wrongConfig, m_overlayElementLabelValueLengthMinus8, MINVAL , MAXVAL, "overlay_element_label_value_length_minus8");
    866   xCheckCfgRange( wrongConfig, m_numOverlaysMinus1              , MINVAL , MAXVAL, "num_overlays_minus1"  );
    867   xCheckCfgRange( wrongConfig, m_overlayIdx[i]                  , MINVAL , MAXVAL, "overlay_idx"          );
    868   xCheckCfgRange( wrongConfig, m_languageOverlayPresentFlag[i]  , MINVAL , MAXVAL, "language_overlay_present_flag"    );
    869   xCheckCfgRange( wrongConfig, m_overlayContentLayerId[i]       , MINVAL , MAXVAL, "overlay_content_layer_id"         );
    870   xCheckCfgRange( wrongConfig, m_overlayLabelPresentFlag[i]     , MINVAL , MAXVAL, "overlay_label_present_flag"       );
    871   xCheckCfgRange( wrongConfig, m_overlayLabelLayerId[i]         , MINVAL , MAXVAL, "overlay_label_layer_id"           );
    872   xCheckCfgRange( wrongConfig, m_overlayAlphaPresentFlag[i]     , MINVAL , MAXVAL, "overlay_alpha_present_flag"       );
    873   xCheckCfgRange( wrongConfig, m_overlayAlphaLayerId[i]         , MINVAL , MAXVAL, "overlay_alpha_layer_id"           );
    874   xCheckCfgRange( wrongConfig, m_numOverlayElementsMinus1[i]    , MINVAL , MAXVAL, "num_overlay_elements_minus1"       );
    875   xCheckCfgRange( wrongConfig, m_overlayElementLabelMin[i][j]   , MINVAL , MAXVAL, "overlay_element_label_min"        );
    876   xCheckCfgRange( wrongConfig, m_overlayElementLabelMax[i][j]   , MINVAL , MAXVAL, "overlay_element_label_max"        );
    877   xCheckCfgRange( wrongConfig, m_overlayZeroBit                 , MINVAL , MAXVAL, "overlay_zero_bit"                 );
    878   xCheckCfgRange( wrongConfig, m_overlayLanguage[i]             , MINVAL , MAXVAL, "overlay_language"                 );
    879   xCheckCfgRange( wrongConfig, m_overlayName[i]                 , MINVAL , MAXVAL, "overlay_name"                     );
    880   xCheckCfgRange( wrongConfig, m_overlayElementName[i][j]       , MINVAL , MAXVAL, "overlay_element_name"             );
    881   xCheckCfgRange( wrongConfig, m_overlayInfoPersistenceFlag     , MINVAL , MAXVAL, "overlay_info_persistence_flag"    );
     824  Bool wrongConfig = false;   
     825
     826  xCheckCfgRange( wrongConfig, m_overlayInfoCancelFlag          , 0 ,   1, "overlay_info_cancel_flag"         );
     827  xCheckCfgRange( wrongConfig, m_overlayContentAuxIdMinus128    , 0 ,  31, "overlay_content_aux_id_minus128"  );
     828  xCheckCfgRange( wrongConfig, m_overlayLabelAuxIdMinus128      , 0 ,  31, "overlay_label_aux_id_minus128"    );
     829  xCheckCfgRange( wrongConfig, m_overlayAlphaAuxIdMinus128      , 0 ,  31, "overlay_alpha_aux_id_minus128"    );
     830  xCheckCfgRange( wrongConfig, m_numOverlaysMinus1              , 0 ,  m_numOverlaysMax-1, "num_overlays_minus1"  );
     831  for (Int i=0 ; i<=m_numOverlaysMinus1 ; ++i)
     832  {
     833    xCheckCfgRange( wrongConfig, m_overlayIdx[i]                  , 0 , 255, "overlay_idx"          );
     834    xCheckCfgRange( wrongConfig, m_languageOverlayPresentFlag[i]  , 0 ,   1, "language_overlay_present_flag"    );
     835    xCheckCfgRange( wrongConfig, m_overlayLabelPresentFlag[i]     , 0 ,   1, "overlay_label_present_flag"       ); 
     836    xCheckCfgRange( wrongConfig, m_overlayAlphaPresentFlag[i]     , 0 ,   1, "overlay_alpha_present_flag"       );
     837    xCheckCfgRange( wrongConfig, m_overlayContentLayerId[i]       , 0 ,   63, "overlay_content_layer_id"    );
     838    xCheckCfgRange( wrongConfig, m_overlayLabelLayerId[i]         , 0 ,   63, "overlay_label_layer_id"    );
     839    xCheckCfgRange( wrongConfig, m_overlayAlphaLayerId[i]         , 0 ,   63, "overlay_alpha_layer_id"    );   
     840    xCheckCfgRange( wrongConfig, m_numOverlayElementsMinus1[i]    , 0 , m_numOverlayElementsMax-1, "num_overlay_elements_minus1"       );     
     841    for (Int j=0 ; j<=m_numOverlayElementsMinus1[i] ; ++j)
     842    {     
     843      Int maxLabelMinMaxValue = ( 1 << ( m_overlayElementLabelValueLengthMinus8 + 8 ) )-1;
     844      xCheckCfgRange( wrongConfig, m_overlayElementLabelMin[i][j] , 0 , maxLabelMinMaxValue , "overlay_element_label_min"    );
     845      xCheckCfgRange( wrongConfig, m_overlayElementLabelMax[i][j] , 0 , maxLabelMinMaxValue , "overlay_element_label_max"    );       
     846    }       
     847  } 
     848  xCheckCfgRange( wrongConfig, m_overlayInfoPersistenceFlag     , 0 ,   1, "overlay_info_persistence_flag"    );
    882849
    883850  return wrongConfig;
    884851
    885852};
    886 #endif
     853
    887854
    888855Void SEITemporalMvPredictionConstraints::setupFromCfgFile(const Char* cfgFile)
  • branches/HTM-15.1-dev0-Disney/source/Lib/TLibCommon/SEI.h

    r1339 r1342  
    803803};
    804804
    805 #if NH_MV_SEI_TBD
    806805class SEIOverlayInfo : public SEI
    807806{
    808807public:
    809808  PayloadType payloadType( ) const { return OVERLAY_INFO; }
    810   SEIOverlayInfo ( ) { };
     809  SEIOverlayInfo ( )
    811810  ~SEIOverlayInfo( ) { };
    812811  SEI* getCopy( ) const { return new SEIOverlayInfo(*this); };
    813812
    814   Void setupFromCfgFile( const Char*      cfgFile );
    815   Void setupFromSlice  ( const TComSlice* slice   );
    816   Bool checkCfg        ( const TComSlice* slice   );
    817 
     813  Void setupFromCfgFile( const Char*      cfgFile ); 
     814  Bool checkCfg        ( const TComSlice* slice   );
     815  Void initStringElements ( );
     816
     817  const Int m_numOverlaysMax;
     818  const Int m_numOverlayElementsMax;
     819  const Int m_numStringBytesMax;  //incl. null termination byte
     820 
    818821  Bool      m_overlayInfoCancelFlag;
    819822  Int       m_overlayContentAuxIdMinus128;
     
    831834  IntAry1d  m_numOverlayElementsMinus1;
    832835  IntAry2d  m_overlayElementLabelMin;
    833   IntAry2d  m_overlayElementLabelMax;
    834   Int       m_overlayZeroBit;
    835   IntAry1d  m_overlayLanguage;
    836   IntAry1d  m_overlayName;
    837   IntAry2d  m_overlayElementName;
     836  IntAry2d  m_overlayElementLabelMax; 
     837  std::vector< std::string >  m_overlayLanguage;
     838  std::vector< std::string >  m_overlayName;
     839  std::vector< std::vector< std::string > >  m_overlayElementName;
    838840  Bool      m_overlayInfoPersistenceFlag;
    839841};
    840 
    841 #endif
    842842
    843843class SEITemporalMvPredictionConstraints : public SEI
Note: See TracChangeset for help on using the changeset viewer.