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/source/Lib/TLibEncoder
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • 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.