Changeset 1342 in 3DVCSoftware


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

OverlayInfo SEI message integrated

Location:
branches/HTM-15.1-dev0-Disney
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-15.1-dev0-Disney/cfg/SEI/overlayInfoSei.cfg

    r1328 r1342  
    1 
    2 PayloadType                     : TBD
     1PayloadType                     : 166
    32
    43#======== Applicability  ==========    ( SEI is only send for pictures in intersection )
    5 ApplicableLayerIds              : TBD                            # LayerIds      of layers   to which the SEI is added. (all when empty)
    6 ApplicablePocs                  : TBD                            # POCs          of pictures to which the SEI is added. (all when empty)
    7 ApplicableTids                  : TBD                            # Tids          of pictures to which the SEI is added. (all when empty)
    8 ApplicableVclNaluTypes          : TBD                            # NaluUnitTypes of picture  to which the SEI is added. (all when empty)
     4ApplicableLayerIds              :                             # LayerIds      of layers   to which the SEI is added. (all when empty)
     5ApplicablePocs                  :                             # POCs          of pictures to which the SEI is added. (all when empty)
     6ApplicableTids                  :                             # Tids          of pictures to which the SEI is added. (all when empty)
     7ApplicableVclNaluTypes          :                             # NaluUnitTypes of picture  to which the SEI is added. (all when empty)
    98
    109#======== Position in bit stream  ============
    11 SeiNaluId                       : 0                              # Identifies to which NAL unit  the SEI is added. 
     10SeiNaluId                       : 0                              # Identifies to which NAL unit  the SEI is added.
    1211PositionInSeiNalu               : 0                              # Identifies the position within the NAL unit
    1312
    1413#======== Payload modification =============
    15 ModifyByEncoder                 : TBD                            #  0: Use payload as specified in cfg file   1: Modify SEI by encoder.
     14ModifyByEncoder                 : 0                            #  0: Use payload as specified in cfg file   1: Modify SEI by encoder.
    1615
    1716#======== Payload specification =============
    1817OverlayInfoCancelFlag           : 0
    19 OverlayContentAuxIdMinus128     : 0
    20 OverlayLabelAuxIdMinus128       : 0
    21 OverlayAlphaAuxIdMinus128       : 0
     18OverlayContentAuxIdMinus128     : 1
     19OverlayLabelAuxIdMinus128       : 2
     20OverlayAlphaAuxIdMinus128       : 3
    2221OverlayElementLabelValueLengthMinus8: 0
    2322NumOverlaysMinus1               : 0
    24 OverlayIdx                      : 0
    25 LanguageOverlayPresentFlag      : 0
    26 OverlayContentLayerId           : 0
    27 OverlayLabelPresentFlag         : 0
    28 OverlayLabelLayerId             : 0
     23OverlayIdx                      : 5
     24LanguageOverlayPresentFlag      : 1
     25OverlayContentLayerId           : 10
     26OverlayLabelPresentFlag         : 1
     27OverlayLabelLayerId             : 20
    2928OverlayAlphaPresentFlag         : 0
    30 OverlayAlphaLayerId             : 0
    31 NumOverlayElementsMinus1        : 0
    32 OverlayElementLabelMin_0        : 0
    33 OverlayElementLabelMax_0        : 0
    34 OverlayZeroBit                  : 0
    35 OverlayLanguage                 : 0
    36 OverlayName                     : 0
    37 OverlayElementName_0            : 0
    38 OverlayInfoPersistenceFlag      : 0
     29OverlayAlphaLayerId             : 30
     30NumOverlayElementsMinus1        : 3
     31OverlayElementLabelMin_0        : 40 100 170 230
     32OverlayElementLabelMax_0        : 80 140 210 255
     33OverlayInfoPersistenceFlag      : 1
     34
  • 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
  • branches/HTM-15.1-dev0-Disney/source/Lib/TLibDecoder/SEIread.cpp

    r1339 r1342  
    9999}
    100100
     101Void SEIReader::sei_read_string(std::ostream *pOS, UInt uiBufSize, UChar* pucCode, UInt& ruiLength, const Char *pSymbolName)
     102
     103  READ_STRING(uiBufSize, pucCode, ruiLength, pSymbolName);
     104  if (pOS)
     105  {
     106    (*pOS) << "  " << pSymbolName << ": " << (const char*) pucCode << "\n";
     107  }
     108}
     109
    101110#if NH_MV_SEI
    102111inline Void SEIReader::output_sei_message_header(SEI &sei, std::ostream *pDecodedMessageOutputStream, UInt payloadSize)
     
    340349      xParseSEIAlphaChannelInfo((SEIAlphaChannelInfo&) *sei, payloadSize, pDecodedMessageOutputStream );
    341350      break;
    342 #if NH_MV_SEI_TBD
    343351    case SEI::OVERLAY_INFO:
    344352      sei = new SEIOverlayInfo;
    345353      xParseSEIOverlayInfo((SEIOverlayInfo&) *sei, payloadSize, pDecodedMessageOutputStream );
    346354      break;
    347 #endif
    348355    case SEI::TEMPORAL_MV_PREDICTION_CONSTRAINTS:
    349356      sei = new SEITemporalMvPredictionConstraints;
     
    13571364};
    13581365
    1359 #if NH_MV_SEI_TBD
    13601366Void SEIReader::xParseSEIOverlayInfo(SEIOverlayInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
    13611367{
     
    13661372  if( !sei.m_overlayInfoCancelFlag )
    13671373  {
    1368     sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_content_aux_id_minus128" ); sei.m_overlayContentAuxIdMinus128 = code;
    1369     sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_label_aux_id_minus128" ); sei.m_overlayLabelAuxIdMinus128 = code;
    1370     sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_alpha_aux_id_minus128" ); sei.m_overlayAlphaAuxIdMinus128 = code;
    1371     sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_element_label_value_length_minus8" ); sei.m_overlayElementLabelValueLengthMinus8 = code;
    1372     sei_read_uvlc( pDecodedMessageOutputStream, code, "num_overlays_minus1" ); sei.m_numOverlaysMinus1 = code;
    1373     for( Int i = 0; i  <=  NumOverlaysMinus1( ); i++ )
    1374     {
    1375       sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_idx" ); sei.m_overlayIdx[i] = code;
    1376       sei_read_flag( pDecodedMessageOutputStream, code, "language_overlay_present_flag" ); sei.m_languageOverlayPresentFlag[i] = (code == 1);
    1377       sei_read_code( pDecodedMessageOutputStream, 6, code, "overlay_content_layer_id" ); sei.m_overlayContentLayerId[i] = code;
    1378       sei_read_flag( pDecodedMessageOutputStream, code, "overlay_label_present_flag" ); sei.m_overlayLabelPresentFlag[i] = (code == 1);
    1379       if( sei.m_overlayLabelPresentFlag( i ) )
    1380       {
    1381         sei_read_code( pDecodedMessageOutputStream, 6, code, "overlay_label_layer_id" ); sei.m_overlayLabelLayerId[i] = code;
    1382       }
    1383       sei_read_flag( pDecodedMessageOutputStream, code, "overlay_alpha_present_flag" ); sei.m_overlayAlphaPresentFlag[i] = (code == 1);
    1384       if( sei.m_overlayAlphaPresentFlag( i ) )
    1385       {
    1386         sei_read_code( pDecodedMessageOutputStream, 6, code, "overlay_alpha_layer_id" ); sei.m_overlayAlphaLayerId[i] = code;
    1387       }
    1388       if( sei.m_overlayLabelPresentFlag( i ) )
    1389       {
    1390         sei_read_uvlc( pDecodedMessageOutputStream, code, "num_overlay_elements_minus1" ); sei.m_numOverlayElementsMinus1[i] = code;
    1391         for( Int j = 0; j  <=  sei.m_numOverlayElementsMinus1( i ); j++ )
    1392         {
    1393           sei_read_code( pDecodedMessageOutputStream, getOverlayElementLabelMinLen ), code, "overlay_element_label_min" ); sei.m_overlayElementLabelMin[i][j] = code;
    1394           sei_read_code( pDecodedMessageOutputStream, getOverlayElementLabelMaxLen ), code, "overlay_element_label_max" ); sei.m_overlayElementLabelMax[i][j] = code;
    1395         }
    1396       }
    1397     }
    1398     while( !ByteaLigned(() ) );
    1399     {
    1400       sei_read_code( pDecodedMessageOutputStream, *equalto0*/f1, code, "overlay_zero_bit" ); sei.m_overlayZeroBit = code;
    1401     }
    1402     for( Int i = 0; i  <=  NumOverlaysMinus1( ); i++ )
    1403     {
    1404       if( sei.m_languageOverlayPresentFlag( i ) )
    1405       {
    1406         sei_read_code( pDecodedMessageOutputStream, tv, code, "overlay_language" ); sei.m_overlayLanguage[i] = code;
    1407       }
    1408       sei_read_code( pDecodedMessageOutputStream, tv, code, "overlay_name" ); sei.m_overlayName[i] = code;
    1409       if( sei.m_overlayLabelPresentFlag( i ) )
    1410       {
    1411         for( Int j = 0; j  <=  sei.m_numOverlayElementsMinus1( i ); j++ )
    1412         {
    1413           sei_read_code( pDecodedMessageOutputStream, tv, code, "overlay_element_name" ); sei.m_overlayElementName[i][j] = code;
    1414         }
    1415       }
    1416     }
     1374    sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_content_aux_id_minus128" );            sei.m_overlayContentAuxIdMinus128 = code;
     1375    sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_label_aux_id_minus128" );              sei.m_overlayLabelAuxIdMinus128 = code;
     1376    sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_alpha_aux_id_minus128" );              sei.m_overlayAlphaAuxIdMinus128 = code;
     1377    sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_element_label_value_length_minus8" );  sei.m_overlayElementLabelValueLengthMinus8 = code;
     1378    sei_read_uvlc( pDecodedMessageOutputStream, code, "num_overlays_minus1" );                        sei.m_numOverlaysMinus1 = code;
     1379
     1380    sei.m_overlayIdx.resize( sei.m_numOverlaysMinus1+1 );
     1381    sei.m_languageOverlayPresentFlag.resize( sei.m_numOverlaysMinus1+1 );
     1382    sei.m_overlayContentLayerId.resize     ( sei.m_numOverlaysMinus1+1 );
     1383    sei.m_overlayLabelPresentFlag.resize   ( sei.m_numOverlaysMinus1+1 );
     1384    sei.m_overlayLabelLayerId.resize       ( sei.m_numOverlaysMinus1+1 );
     1385    sei.m_overlayAlphaPresentFlag.resize   ( sei.m_numOverlaysMinus1+1 );
     1386    sei.m_overlayAlphaLayerId.resize       ( sei.m_numOverlaysMinus1+1 );
     1387    sei.m_numOverlayElementsMinus1.resize  ( sei.m_numOverlaysMinus1+1 );
     1388    sei.m_overlayElementLabelMin.resize    ( sei.m_numOverlaysMinus1+1 );
     1389    sei.m_overlayElementLabelMax.resize    ( sei.m_numOverlaysMinus1+1 );
     1390    for( Int i = 0; i  <=  sei.m_numOverlaysMinus1; i++ )
     1391    {
     1392      sei_read_uvlc( pDecodedMessageOutputStream, code, "overlay_idx" );                    sei.m_overlayIdx[i]                 = code;
     1393      sei_read_flag( pDecodedMessageOutputStream, code, "language_overlay_present_flag" );  sei.m_languageOverlayPresentFlag[i] = (code == 1);
     1394      sei_read_code( pDecodedMessageOutputStream, 6, code, "overlay_content_layer_id" );    sei.m_overlayContentLayerId[i]      = code;
     1395      sei_read_flag( pDecodedMessageOutputStream, code, "overlay_label_present_flag" );     sei.m_overlayLabelPresentFlag[i]    = (code == 1);
     1396      if( sei.m_overlayLabelPresentFlag[i] )
     1397      {
     1398        sei_read_code( pDecodedMessageOutputStream, 6, code, "overlay_label_layer_id" );     sei.m_overlayLabelLayerId[i]       = code;
     1399      }
     1400      sei_read_flag( pDecodedMessageOutputStream, code, "overlay_alpha_present_flag" );      sei.m_overlayAlphaPresentFlag[i]   = (code == 1);
     1401      if( sei.m_overlayAlphaPresentFlag[i] )
     1402      {
     1403        sei_read_code( pDecodedMessageOutputStream, 6, code, "overlay_alpha_layer_id" );     sei.m_overlayAlphaLayerId[i]       = code;
     1404      }
     1405      if( sei.m_overlayLabelPresentFlag[i] )
     1406      {
     1407        sei_read_uvlc( pDecodedMessageOutputStream, code, "num_overlay_elements_minus1" );   sei.m_numOverlayElementsMinus1[i]  = code;
     1408        sei.m_overlayElementLabelMin[i].resize( sei.m_numOverlayElementsMinus1[i]+1 );
     1409        sei.m_overlayElementLabelMax[i].resize( sei.m_numOverlayElementsMinus1[i]+1 );
     1410        for( Int j = 0; j  <=  sei.m_numOverlayElementsMinus1[i]; j++ )
     1411        {
     1412          sei_read_code( pDecodedMessageOutputStream, sei.m_overlayElementLabelValueLengthMinus8 + 8, code, "overlay_element_label_min" ); sei.m_overlayElementLabelMin[i][j] = code;
     1413          sei_read_code( pDecodedMessageOutputStream, sei.m_overlayElementLabelValueLengthMinus8 + 8, code, "overlay_element_label_max" ); sei.m_overlayElementLabelMax[i][j] = code;
     1414        }
     1415      }
     1416    }
     1417
     1418    // byte alignment
     1419    while ( m_pcBitstream->getNumBitsRead() % 8 != 0 )
     1420    {
     1421      sei_read_flag( pDecodedMessageOutputStream, code, "overlay_zero_bit" );
     1422      assert( code==0 );     
     1423    }
     1424   
     1425    UChar* sval = new UChar[sei.m_numStringBytesMax];
     1426    UInt slen;   
     1427    sei.m_overlayLanguage.resize( sei.m_numOverlaysMinus1 + 1 );   
     1428    sei.m_overlayName.resize( sei.m_numOverlaysMinus1 + 1 );   
     1429    sei.m_overlayElementName.resize( sei.m_numOverlaysMinus1 + 1 );   
     1430    for( Int i = 0; i  <=  sei.m_numOverlaysMinus1; i++ )
     1431    {
     1432      if( sei.m_languageOverlayPresentFlag[i] )
     1433      {       
     1434        sei_read_string(pDecodedMessageOutputStream, sei.m_numStringBytesMax, sval, slen, "overlay_language");
     1435        sei.m_overlayLanguage[i] = std::string((const char*) sval);       
     1436      }
     1437      sei_read_string(pDecodedMessageOutputStream, sei.m_numStringBytesMax, sval, slen, "overlay_name");
     1438      sei.m_overlayName[i] = std::string((const char*) sval);       
     1439      if( sei.m_overlayLabelPresentFlag[i] )
     1440      {
     1441        sei.m_overlayElementName[i].resize( sei.m_numOverlayElementsMinus1[i]+1 );       
     1442        for( Int j = 0; j  <=  sei.m_numOverlayElementsMinus1[i]; j++ )
     1443        {
     1444          sei_read_string(pDecodedMessageOutputStream, sei.m_numStringBytesMax, sval, slen, "overlay_element_name");
     1445          sei.m_overlayElementName[i][j] = std::string((const char*) sval);           
     1446        }
     1447      }
     1448    }
     1449    delete [] sval;
    14171450    sei_read_flag( pDecodedMessageOutputStream, code, "overlay_info_persistence_flag" ); sei.m_overlayInfoPersistenceFlag = (code == 1);
    1418   }
     1451  } 
    14191452};
    1420 #endif
    14211453
    14221454Void SEIReader::xParseSEITemporalMvPredictionConstraints(SEITemporalMvPredictionConstraints& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
  • branches/HTM-15.1-dev0-Disney/source/Lib/TLibDecoder/SEIread.h

    r1339 r1342  
    112112  Void xParseSEISubBitstreamProperty          (SEISubBitstreamProperty& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
    113113  Void xParseSEIAlphaChannelInfo              (SEIAlphaChannelInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
    114 #if NH_MV_SEI_TBD
    115114  Void xParseSEIOverlayInfo                   (SEIOverlayInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
    116 #endif
    117115  Void xParseSEITemporalMvPredictionConstraints(SEITemporalMvPredictionConstraints& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
    118116#if NH_MV_SEI_TBD
     
    139137  Void sei_read_svlc(std::ostream *pOS,                Int&  ruiCode, const Char *pSymbolName);
    140138  Void sei_read_flag(std::ostream *pOS,                UInt& ruiCode, const Char *pSymbolName);
     139  Void sei_read_string(std::ostream *pOS, UInt uiBufSize, UChar* pucCode, UInt& ruiLength, const Char *pSymbolName);
    141140#if NH_MV_SEI
    142141  inline Void output_sei_message_header(SEI &sei, std::ostream *pDecodedMessageOutputStream, UInt payloadSize);
  • branches/HTM-15.1-dev0-Disney/source/Lib/TLibDecoder/SyntaxElementParser.cpp

    r1313 r1342  
    152152}
    153153
     154Void  SyntaxElementParser::xReadStringTr        (UInt buSize, UChar *pValue, UInt& rLength, const Char *pSymbolName)
     155{
     156#if RExt__DECODER_DEBUG_BIT_STATISTICS
     157  xReadString (buSize, pValue, rLength, pSymbolName);
     158#else
     159  xReadString(buSize, pValue, rLength);
     160#endif 
     161  fprintf( g_hTrace, "%8lld  ", g_nSymbolCounter++ );
     162  fprintf( g_hTrace, "%-50s st(v=%d)  : %s\n", pSymbolName, rLength, pValue );
     163  fflush ( g_hTrace );
     164}
     165
    154166Void  xTraceAccessUnitDelimiter ()
    155167{
     
    269281}
    270282
     283#if RExt__DECODER_DEBUG_BIT_STATISTICS
     284Void  SyntaxElementParser::xReadString  (UInt bufSize, UChar *pVal, UInt& rLength, const Char *pSymbolName)
     285#else
     286Void  SyntaxElementParser::xReadString  (UInt bufSize, UChar *pVal, UInt& rLength)
     287#endif
     288{
     289  assert( m_pcBitstream->getNumBitsRead() % 8 == 0 ); //always start reading at a byte-aligned position 
     290  UInt val;
     291  UInt i;
     292  for (i=0 ; i<bufSize ; ++i )
     293  {
     294    m_pcBitstream->readByte( val );
     295    pVal[i] = val;
     296    if ( val == 0)
     297    {
     298      break;
     299    }
     300  }
     301  rLength = i;
     302  assert( pVal[rLength] == 0 ); 
     303}
     304
    271305Void SyntaxElementParser::xReadRbspTrailingBits()
    272306{
  • branches/HTM-15.1-dev0-Disney/source/Lib/TLibDecoder/SyntaxElementParser.h

    r1313 r1342  
    4949#define READ_SVLC(        code, name)     xReadSvlcTr (         code, name )
    5050#define READ_FLAG(        code, name)     xReadFlagTr (         code, name )
     51#define READ_STRING(bufSize, code, length, name)   xReadStringTr ( bufSize, code, length, name )
    5152
    5253#else
     
    5859#define READ_SVLC(        code, name)     xReadSvlc (         code, name )
    5960#define READ_FLAG(        code, name)     xReadFlag (         code, name )
     61#define READ_STRING(bufSize, code, length, name)   xReadString ( bufSize, code, length, name )
    6062
    6163#else
     
    6567#define READ_SVLC(        code, name)     xReadSvlc (         code )
    6668#define READ_FLAG(        code, name)     xReadFlag (         code )
     69#define READ_STRING(bufSize, code, length, name)   xReadString ( bufSize, code, length )
    6770
    6871#endif
     
    9295  Void  xReadSvlc    ( Int&   val, const Char *pSymbolName );
    9396  Void  xReadFlag    ( UInt&  val, const Char *pSymbolName );
     97  Void  xReadString  ( UInt bufSize, UChar *val, UInt& length, const Char *pSymbolName);
    9498#else
    9599  Void  xReadCode    ( UInt   length, UInt& val );
     
    97101  Void  xReadSvlc    ( Int&   val );
    98102  Void  xReadFlag    ( UInt&  val );
     103  Void  xReadString  ( UInt bufSize, UChar *val, UInt& length);
    99104#endif
    100105#if ENC_DEC_TRACE
     
    103108  Void  xReadSvlcTr  (               Int& rValue, const Char *pSymbolName);
    104109  Void  xReadFlagTr  (              UInt& rValue, const Char *pSymbolName);
     110  Void  xReadStringTr(UInt bufSize, UChar *pValue, UInt& rLength, const Char *pSymbolName);
    105111#endif
    106112public:
  • branches/HTM-15.1-dev0-Disney/source/Lib/TLibEncoder/SEIwrite.cpp

    r1339 r1342  
    151151     xWriteSEIAlphaChannelInfo(*static_cast<const SEIAlphaChannelInfo*>(&sei));
    152152     break;
    153 #if NH_MV_SEI_TBD
    154153   case SEI::OVERLAY_INFO:
    155154     xWriteSEIOverlayInfo(*static_cast<const SEIOverlayInfo*>(&sei));
    156155     break;
    157 #endif
    158156   case SEI::TEMPORAL_MV_PREDICTION_CONSTRAINTS:
    159157     xWriteSEITemporalMvPredictionConstraints(*static_cast<const SEITemporalMvPredictionConstraints*>(&sei));
     
    998996};
    999997
    1000 #if NH_MV_SEI_TBD
    1001998Void SEIWriter::xWriteSEIOverlayInfo( const SEIOverlayInfo& sei)
    1002999{
     
    10091006    WRITE_UVLC( sei.m_overlayElementLabelValueLengthMinus8, "overlay_element_label_value_length_minus8" );
    10101007    WRITE_UVLC( sei.m_numOverlaysMinus1, "num_overlays_minus1" );
    1011     for( Int i = 0; i  <=  NumOverlaysMinus1( ); i++ )
     1008    for( Int i = 0; i  <=  sei.m_numOverlaysMinus1 ; i++ )
    10121009    {
    10131010      WRITE_UVLC( sei.m_overlayIdx[i], "overlay_idx" );
     
    10151012      WRITE_CODE( sei.m_overlayContentLayerId[i], 6, "overlay_content_layer_id" );
    10161013      WRITE_FLAG( ( sei.m_overlayLabelPresentFlag[i] ? 1 : 0 ), "overlay_label_present_flag" );
    1017       if( sei.m_overlayLabelPresentFlag( i ) )
     1014      if( sei.m_overlayLabelPresentFlag[i] )
    10181015      {
    10191016        WRITE_CODE( sei.m_overlayLabelLayerId[i], 6, "overlay_label_layer_id" );
    10201017      }
    10211018      WRITE_FLAG( ( sei.m_overlayAlphaPresentFlag[i] ? 1 : 0 ), "overlay_alpha_present_flag" );
    1022       if( sei.m_overlayAlphaPresentFlag( i ) )
     1019      if( sei.m_overlayAlphaPresentFlag[i] )
    10231020      {
    10241021        WRITE_CODE( sei.m_overlayAlphaLayerId[i], 6, "overlay_alpha_layer_id" );
    10251022      }
    1026       if( sei.m_overlayLabelPresentFlag( i ) )
     1023      if( sei.m_overlayLabelPresentFlag[i] )
    10271024      {
    10281025        WRITE_UVLC( sei.m_numOverlayElementsMinus1[i], "num_overlay_elements_minus1" );
    1029         for( Int j = 0; j  <=  sei.m_numOverlayElementsMinus1( i ); j++ )
    1030         {
    1031           WRITE_CODE( sei.m_overlayElementLabelMin[i][j], getOverlayElementLabelMinLen ), "overlay_element_label_min" );
    1032           WRITE_CODE( sei.m_overlayElementLabelMax[i][j], getOverlayElementLabelMaxLen ), "overlay_element_label_max" );
    1033         }
    1034       }
    1035     }
    1036     while( !ByteaLigned(() ) );
    1037     {
    1038       WRITE_CODE( sei.m_overlayZeroBit, *equalto0*/f1, "overlay_zero_bit" );
    1039     }
    1040     for( Int i = 0; i  <=  NumOverlaysMinus1( ); i++ )
    1041     {
    1042       if( sei.m_languageOverlayPresentFlag( i ) )
    1043       {
    1044         WRITE_CODE( sei.m_overlayLanguage[i], tv, "overlay_language" );
    1045       }
    1046       WRITE_CODE( sei.m_overlayName[i], tv, "overlay_name" );
    1047       if( sei.m_overlayLabelPresentFlag( i ) )
    1048       {
    1049         for( Int j = 0; j  <=  sei.m_numOverlayElementsMinus1( i ); j++ )
    1050         {
    1051           WRITE_CODE( sei.m_overlayElementName[i][j], tv, "overlay_element_name" );
     1026        for( Int j = 0; j  <=  sei.m_numOverlayElementsMinus1[i]; j++ )
     1027        {
     1028          WRITE_CODE( sei.m_overlayElementLabelMin[i][j], (sei.m_overlayElementLabelValueLengthMinus8 + 8), "overlay_element_label_min" );
     1029          WRITE_CODE( sei.m_overlayElementLabelMax[i][j], (sei.m_overlayElementLabelValueLengthMinus8 + 8), "overlay_element_label_max" );
     1030        }
     1031      }
     1032    }
     1033
     1034    // byte alignment
     1035    while ( m_pcBitIf->getNumberOfWrittenBits() % 8 != 0 ) 
     1036    {
     1037      WRITE_FLAG( 0, "overlay_zero_bit" );
     1038    }
     1039   
     1040    UChar* stmp;
     1041    UInt ilength;
     1042    for( Int i = 0; i  <=  sei.m_numOverlaysMinus1; i++ )
     1043    {
     1044      if( sei.m_languageOverlayPresentFlag[i] )
     1045      {
     1046        stmp = (UChar*) strdup( sei.m_overlayLanguage[i].c_str() );       
     1047        ilength = (UInt) sei.m_overlayLanguage[i].size();
     1048        WRITE_STRING( stmp, ilength, "overlay_language" );
     1049        free(stmp);
     1050      }
     1051      stmp = (UChar*) strdup( sei.m_overlayName[i].c_str() );
     1052      ilength = (UInt) sei.m_overlayName[i].size();
     1053      WRITE_STRING( stmp, ilength, "overlay_name" );
     1054      free(stmp);
     1055      if( sei.m_overlayLabelPresentFlag[i] )
     1056      {
     1057        for( Int j = 0; j  <=  sei.m_numOverlayElementsMinus1[i]; j++ )
     1058        {
     1059          stmp = (UChar*) strdup( sei.m_overlayElementName[i][j].c_str() );
     1060          ilength = (UInt) sei.m_overlayElementName[i][j].size();
     1061          WRITE_STRING( stmp, ilength, "overlay_element_name" );
     1062          free(stmp);
    10521063        }
    10531064      }
    10541065    }
    10551066    WRITE_FLAG( ( sei.m_overlayInfoPersistenceFlag ? 1 : 0 ), "overlay_info_persistence_flag" );
    1056   }
     1067  } 
    10571068};
    1058 #endif
    10591069
    10601070Void SEIWriter::xWriteSEITemporalMvPredictionConstraints( const SEITemporalMvPredictionConstraints& sei)
  • branches/HTM-15.1-dev0-Disney/source/Lib/TLibEncoder/SEIwrite.h

    r1339 r1342  
    9494  Void xWriteSEISubBitstreamProperty          ( const SEISubBitstreamProperty& sei);
    9595  Void xWriteSEIAlphaChannelInfo              ( const SEIAlphaChannelInfo& sei);
    96 #if NH_MV_SEI_TBD
    9796  Void xWriteSEIOverlayInfo                   ( const SEIOverlayInfo& sei);
    98 #endif
    9997  Void xWriteSEITemporalMvPredictionConstraints ( const SEITemporalMvPredictionConstraints& sei);
    10098#if NH_MV_SEI_TBD
  • branches/HTM-15.1-dev0-Disney/source/Lib/TLibEncoder/SyntaxElementWriter.cpp

    r1313 r1342  
    127127}
    128128
     129Void  SyntaxElementWriter::xWriteStringTr( UChar* value, UInt length, const Char *pSymbolName)
     130{
     131  xWriteString(value, length);
     132  if( g_HLSTraceEnable )
     133  {
     134    fprintf( g_hTrace, "%8lld  ", g_nSymbolCounter++ );
     135    fprintf( g_hTrace, "%-50s st(v=%d)  : %s\n", pSymbolName, length, value );
     136  }
     137}
     138
    129139#endif
    130140
     
    166176}
    167177
     178Void  SyntaxElementWriter::xWriteString( UChar* sCode, UInt uiLength)
     179{
     180  assert(m_pcBitIf->getNumberOfWrittenBits() % 8 == 0 );
     181  for (Int i=0 ; i<uiLength; i++)
     182  {
     183    m_pcBitIf->write( sCode[i], 8 );
     184  }
     185  m_pcBitIf->write( 0, 8 ); //zero-termination byte
     186}
     187
    168188Void SyntaxElementWriter::xWriteRbspTrailingBits()
    169189{
  • branches/HTM-15.1-dev0-Disney/source/Lib/TLibEncoder/SyntaxElementWriter.h

    r1313 r1342  
    5656#define WRITE_SVLC( value,         name)    xWriteSvlcTr ( value,         name )
    5757#define WRITE_FLAG( value,         name)    xWriteFlagTr ( value,         name )
     58#define WRITE_STRING( value, length, name)   xWriteStringTr( value, length, name )
    5859
    5960#else
     
    6364#define WRITE_SVLC( value,         name)     xWriteSvlc ( value )
    6465#define WRITE_FLAG( value,         name)     xWriteFlag ( value )
     66#define WRITE_STRING( value, length, name)   xWriteString( value, length )
    6567
    6668#endif
     
    8284  Void  xWriteSvlc            ( Int  iCode   );
    8385  Void  xWriteFlag            ( UInt uiCode );
     86  Void  xWriteString          ( UChar* sCode, UInt uiLength);
    8487#if ENC_DEC_TRACE
    8588  Void  xWriteCodeTr          ( UInt value, UInt  length, const Char *pSymbolName);
     
    8790  Void  xWriteSvlcTr          ( Int  value,               const Char *pSymbolName);
    8891  Void  xWriteFlagTr          ( UInt value,               const Char *pSymbolName);
     92  Void  xWriteStringTr        ( UChar* value, UInt length, const Char *pSymbolName);
    8993#endif
    9094  Void xWriteRbspTrailingBits();
Note: See TracChangeset for help on using the changeset viewer.