Ignore:
Timestamp:
13 Feb 2014, 22:58:51 (10 years ago)
Author:
tech
Message:

Integrated following MV-HEVC HLS 7 items:

H_MV_HLS7_GEN Stub for further integrations (not tested)
H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
Output layer sets, various

(VPS/P0300/alt output layer flag) #27 Change alt output layer flag to be signalled within the loop of output layer sets, from JCTVC-P0300-v2. Decision: Adopt.
(VPS/P0156/Num of output_layer_flag) #10 Proposal 3: The output_layer_flag[ i ][ j ] is signalled for j equal to 0 to NumLayersInIdList[ lsIdx ] inclusive. It was remarked that we might be able to just assume that the top layer is always output; however, this was not entirely clear , so the safe thing to do may be to also send the flag for this layer.
(VPS/P0295/Default output layer sets) #5 Discussion from (P0110). Decision: Three-state approach (text in P0295, decoder shall allow 3 to be present and shall treat 3 the same as the value 2).

H_MV_HLS_7_HRD_P0156_7 (HRD/P0156/MaxSubLayersInLayerSetMinus1) #7 Proposal 1: signal, in the VPS extension, the DPB parameters for an output layer set for sub-DPBs only up to the maximum temporal sub-layers in the corresponding layer set
H_MV_HLS_7_VPS_P0048_14
(VPS/P0048/profile_ref_minus1 rem) #14 Remove profile_ref_minus1 from the VPS extension, from JCTVC-P0048
H_MV_HLS_7_VPS_P0076_15 (VPS/P0076/video signal info move) #15 Move video signal information syntax structure earlier in the VPS VUI.
H_MV_HLS_7_SPS_P0155_16_32
(SPS/P0155/sps_sub_layer_ordering_info) #16, #32 Not signal the sps_max_num_reorder_pics[], sps_max_latency_increase_plus1[], and sps_max_dec_pic_buffering_minus1[] syntax elements in the SPS when nuh_layer_id > 0.
H_MV_HLS_7_GEN_P0166_PPS_EXTENSION (GEN/P0166/pps_extension) #17 Add PPS extension type flags for conditional presence of syntax extensions per extension type, aligned with the SPS extension type flags, from JCTVC-P0166. Further align the SPS extension type flags syntax between RExt and MV-HEVC/SHVC
H_MV_HLS_7_FIX_SET_DPB_SIZE
Fix derivation dpb size parameters
H_MV_HLS_7_RESERVED_FLAGS Added flags

(SPS/P0312/SHVC reserved flag) The flag will be used for the syntax vert_phase_position_enable_flag in SHVC draft
(VPS/O0215/SHVC reserved flag): this flag will be used for the syntax cross_layer_phase_alignment_flag in SHVC draft.
(VPS VUI/O0199,P0312/SHVC reserved flags) the 3 reserved bits will be used for the syntaxes single_layer_for_non_irap_flag, higher_layer_irap_skip_flag and vert_phase_position_not_in_use_flag in SHVC draft.

H_MV_FIX_VPS_LAYER_ID_NOT_EQUAL_ZERO Discard VPS with nuh_layer_Id > 0
H_MV_HLS_7_MISC_P0130_EOS
(MISC/P0130/EOS NAL layer id) #19 Require that end of bitstream NAL unit shall have nuh_layer_id equal to 0, from JCTVC-P0130. Decoders shall allow an end of bitstream NAL unit with nuh_layer_id > 0 to be present, and shall ignore the NAL unit.
H_MV_HLS_7_MISC_P0182_13 (MISC/P0182/BL PS Compatibility flag) #13 Define the flag (in VPS VUI) with the proposed semantics, without specifying an associated extraction process. Editors to select the position in the VPS VUI.
H_MV_HLS_7_MISC_P0068_21
(MISC/P0068/all irap idr flag) #21 Add flag in VUI to indicate that all IRAP pictures are IDRs and that all layer pictures in an AU are IDR aligned, from JCTVC-P0068 proposal 1.
H_MV_HLS_7_FIX_INFER_CROSS_LAYER_IRAP_ALIGNED_FLAG Fix inference of cross_layer_irap_aligned_flag
H_MV_HLS_7_MISC_P0079_18
(MISC/P0079/NumActiveRefLayerPics) #18 Modification of derivation of variable NumActiveRefLayerPics.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-10.0-dev0/source/Lib/TLibEncoder/TEncCavlc.cpp

    r852 r854  
    279279  WRITE_FLAG( pcPPS->getSliceHeaderExtensionPresentFlag() ? 1 : 0, "slice_segment_header_extension_present_flag");
    280280
     281#if H_MV_HLS_7_GEN_P0166_PPS_EXTENSION
     282#if !H_MV
     283  WRITE_FLAG( 0, "pps_extension_flag" );
     284#else
     285  WRITE_FLAG( 1, "pps_extension_flag" );
     286
     287  for ( Int i = 0; i < PPS_EX_T_MAX_NUM; i++ )
     288  {
     289    WRITE_FLAG( pcPPS->getPpsExtensionTypeFlag( i ) ? 1 : 0 , "pps_extension_type_flag" );
     290#if H_3D
     291    assert( !pcPPS->getPpsExtensionTypeFlag( i ) || i == PPS_EX_T_MV || i == PPS_EX_T_3D || i == PPS_EX_T_ESC );
     292#else
     293    assert( !pcPPS->getPpsExtensionTypeFlag( i ) || i == PPS_EX_T_MV || i == PPS_EX_T_ESC );
     294#endif
     295  }
     296
     297  if( pcPPS->getPpsExtensionTypeFlag( PPS_EX_T_MV ) )
     298  {
     299#if H_MV_HLS7_GEN
     300    WRITE_FLAG( pcPPS->getPocResetInfoPresentFlag( ) ? 1 : 0 , "poc_reset_info_present_flag" );
     301#endif
     302  }
     303
     304#if H_3D
     305  if( pcPPS->getPpsExtensionTypeFlag( PPS_EX_T_3D ) ) // This probably needs to be aligned with Rext and SHVC
     306  {
     307    codePPSExtension( pcPPS );
     308  }
     309#endif
     310
     311#endif
     312#else
    281313#if !H_3D
    282314  WRITE_FLAG( 0, "pps_extension_flag" );
     
    285317  codePPSExtension( pcPPS );
    286318  WRITE_FLAG( 0, "pps_extension2_flag" );
     319#endif
    287320#endif
    288321}
     
    433466            else
    434467            {
    435               WRITE_CODE(uiNumDepthValues_coded, 8, "num_depth_values_in_dlt[layerId]");    // num_entry
     468              WRITE_CODE(uiNumDepthValues_coded, 8, "num_depth_values_in_dlt[i]");    // num_entry
    436469
    437470#if !H_3D_DELTA_DLT
     
    699732#endif
    700733  WRITE_UVLC( pcSPS->getBitsForPOC()-4,                 "log2_max_pic_order_cnt_lsb_minus4" );
    701 
     734#if H_MV_HLS_7_SPS_P0155_16_32
     735  if ( pcSPS->getLayerId() == 0 )
     736  { 
     737#endif
    702738  const Bool subLayerOrderingInfoPresentFlag = 1;
    703739  WRITE_FLAG(subLayerOrderingInfoPresentFlag,       "sps_sub_layer_ordering_info_present_flag");
     
    712748    }
    713749  }
     750#if H_MV_HLS_7_SPS_P0155_16_32
     751  }
     752#endif
     753
    714754  assert( pcSPS->getMaxCUWidth() == pcSPS->getMaxCUHeight() );
    715755 
     
    838878    WRITE_SVLC( pcSPS->getScaledRefLayerRightOffset( j ), "scaled_ref_layer_right_offset" );
    839879    WRITE_SVLC( pcSPS->getScaledRefLayerBottomOffset( j ), "scaled_ref_layer_bottom_offset" );
     880#if H_MV_HLS_7_RESERVED_FLAGS
     881    WRITE_FLAG( 0, "sps_multilayer_ext_reserved_zero_flag[ j ]" );
     882#endif
    840883  }
    841884}
     
    868911  WRITE_FLAG( pcVPS->getTemporalNestingFlag(),                "vps_temporal_id_nesting_flag" );
    869912  assert (pcVPS->getMaxTLayers()>1||pcVPS->getTemporalNestingFlag());
    870 #if H_MV
     913#if H_MV && !H_MV_HLS7_GEN
    871914  WRITE_CODE( 0xffff,                              16,        "vps_extension_offset" );
    872915#else
     
    9701013{
    9711014  WRITE_FLAG( pcVPS->getAvcBaseLayerFlag() ? 1 : 0,          "avc_base_layer_flag" );
     1015#if !H_MV_HLS7_GEN
    9721016  WRITE_FLAG( pcVPS->getVpsVuiPresentFlag() ? 1 : 0 , "vps_vui_present_flag" );
    9731017  if ( pcVPS->getVpsVuiPresentFlag() )
     
    9751019  WRITE_CODE( pcVPS->getVpsVuiOffset( ), 16,                 "vps_vui_offset" );  // TBD
    9761020  }
     1021#endif
     1022
    9771023  WRITE_FLAG( pcVPS->getSplittingFlag() ? 1 : 0,             "splitting_flag" );
    9781024 
     
    10491095  if ( pcVPS->getVpsSubLayersMaxMinus1PresentFlag() )
    10501096  {
    1051     for (Int i = 0; i < pcVPS->getMaxLayersMinus1(); i++ )
     1097    for (Int i = 0; i <= pcVPS->getMaxLayersMinus1(); i++ )
    10521098    {
    10531099      WRITE_CODE( pcVPS->getSubLayersVpsMaxMinus1( i ), 3, "sub_layers_vps_max_minus1" );
     
    10571103  else
    10581104  {
    1059     for (Int i = 0; i < pcVPS->getMaxLayersMinus1(); i++ )
     1105    for (Int i = 0; i <= pcVPS->getMaxLayersMinus1(); i++ )
    10601106    {
    10611107      assert( pcVPS->getSubLayersVpsMaxMinus1( i ) + 1 == pcVPS->getMaxTLayers( ) );   
     
    10791125
    10801126  WRITE_FLAG( pcVPS->getAllRefLayersActiveFlag( ) ? 1 : 0 , "all_ref_layers_active_flag" );
     1127#if !H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
    10811128  WRITE_CODE( pcVPS->getVpsNumberLayerSetsMinus1( )    , 10,    "vps_number_layer_sets_minus1"      );
     1129#endif
     1130
     1131#if !H_MV_HLS7_GEN
    10821132  WRITE_CODE( pcVPS->getVpsNumProfileTierLevelMinus1( ), 6,     "vps_num_profile_tier_level_minus1" );
     1133#else
     1134  WRITE_UVLC( pcVPS->getVpsNumProfileTierLevelMinus1( ), "vps_num_profile_tier_level_minus1" );
     1135#endif
    10831136
    10841137  for( Int i = 1; i <= pcVPS->getVpsNumProfileTierLevelMinus1(); i++ )
    10851138  {
    10861139    WRITE_FLAG( pcVPS->getVpsProfilePresentFlag( i ) ? 1 : 0, "vps_profile_present_flag[i]" );
     1140#if !H_MV_HLS_7_VPS_P0048_14
    10871141    if( !pcVPS->getVpsProfilePresentFlag( i ) )
    10881142    {   
     
    10901144      pcVPS->checkProfileRefMinus1( i );     
    10911145    }
     1146#endif
    10921147    codePTL( pcVPS->getPTL( i ), pcVPS->getVpsProfilePresentFlag( i ), pcVPS->getMaxTLayers() - 1 );
    10931148  }
    10941149
     1150
     1151
     1152
     1153
     1154
     1155#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1156  WRITE_UVLC( pcVPS->getNumAddOutputLayerSets( ), "num_add_output_layer_sets" );
     1157
     1158  if( pcVPS->getNumOutputLayerSets() > 1)
     1159  {
     1160    WRITE_CODE( pcVPS->getDefaultTargetOutputLayerIdc( ), 2, "default_target_output_layer_idc" );
     1161  } 
     1162#else
    10951163  Int numOutputLayerSets = pcVPS->getVpsNumberLayerSetsMinus1( ) + 1;
    10961164
     
    11081176    pcVPS->checkDefaultOneTargetOutputLayerIdc();
    11091177  } 
     1178#endif
    11101179
    11111180  assert( pcVPS->getOutputLayerFlag(0, 0) == pcVPS->inferOutputLayerFlag( 0, 0 ));
    11121181  assert( pcVPS->getOutputLayerSetIdxMinus1( 0 ) == -1 );
     1182
     1183#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1184
     1185  for( Int i = 1; i < pcVPS->getNumOutputLayerSets( ); i++ )
     1186  {
     1187    if( i > pcVPS->getVpsNumLayerSetsMinus1( ) )   
     1188#else
    11131189  for( Int i = 1; i < numOutputLayerSets; i++ )
    11141190  {
    11151191    if( i > pcVPS->getVpsNumberLayerSetsMinus1( ) )
     1192#endif
    11161193    {     
    11171194      WRITE_UVLC( pcVPS->getOutputLayerSetIdxMinus1( i ),      "output_layer_set_idx_minus1[i]" );
     1195#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1196    }
     1197
     1198    if ( i > pcVPS->getVpsNumLayerSetsMinus1() || pcVPS->getDefaultTargetOutputLayerIdc() == 2 )
     1199    {       
     1200      for( Int j = 0; j < pcVPS->getNumLayersInIdList( pcVPS->getLayerSetIdxForOutputLayerSet( i ) ); j++ )
     1201      {
     1202        WRITE_FLAG( pcVPS->getOutputLayerFlag( i, j) ? 1 : 0, "output_layer_flag" );
     1203      }             
     1204    }
     1205    else
     1206    {
     1207      for( Int j = 0; j < pcVPS->getNumLayersInIdList( pcVPS->getLayerSetIdxForOutputLayerSet( i ) ) - 1; j++ )
     1208      {             
     1209        assert( pcVPS->getOutputLayerFlag( i , j ) == pcVPS->inferOutputLayerFlag( i, j ));
     1210      }
     1211    }       
     1212
     1213#else
    11181214      for( Int j = 0; j < pcVPS->getNumLayersInIdList( j ) - 1 ; j++ )
    11191215      {
     
    11291225      }
    11301226    }
    1131 
     1227#endif
    11321228    if ( pcVPS->getProfileLevelTierIdxLen()  > 0 )
    11331229    {     
    11341230      WRITE_CODE( pcVPS->getProfileLevelTierIdx( i ), pcVPS->getProfileLevelTierIdxLen() ,"profile_level_tier_idx[ i ]" );   
    11351231    }
     1232#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1233    if( pcVPS->getNumOutputLayersInOutputLayerSet( i ) == 1 && pcVPS->getNumDirectRefLayers( pcVPS->getOlsHighestOutputLayerId( i ) ) > 0 )
     1234    {
     1235      WRITE_FLAG( pcVPS->getAltOutputLayerFlag( i ) ? 1 : 0 , "alt_output_layer_flag[ i ]" );
     1236    }
     1237  }
     1238#else
    11361239  }
    11371240
     
    11401243    WRITE_FLAG( pcVPS->getAltOutputLayerFlag( ) ? 1 : 0 , "alt_output_layer_flag" );
    11411244  }
     1245#endif
     1246
     1247
     1248
     1249
    11421250
    11431251  WRITE_FLAG( pcVPS->getRepFormatIdxPresentFlag( ) ? 1 : 0 , "rep_format_idx_present_flag" );
    11441252  if ( pcVPS->getRepFormatIdxPresentFlag() )
    11451253  {
     1254#if H_MV_HLS7_GEN
     1255    WRITE_UVLC( pcVPS->getVpsNumRepFormatsMinus1( ), "vps_num_rep_formats_minus1" );
     1256#else
    11461257    WRITE_CODE( pcVPS->getVpsNumRepFormatsMinus1( ), 4, "vps_num_rep_formats_minus1" );
     1258#endif
    11471259  }
    11481260
     
    11661278
    11671279  WRITE_FLAG( pcVPS->getMaxOneActiveRefLayerFlag( ) ? 1 : 0, "max_one_active_ref_layer_flag" );
     1280#if H_MV_HLS7_GEN
     1281  WRITE_FLAG( pcVPS->getVpsPocLsbAlignedFlag( ) ? 1 : 0 , "vps_poc_lsb_aligned_flag" );
     1282#endif
    11681283  for( Int i = 1; i  <=  pcVPS->getMaxLayersMinus1(); i++ )
    11691284  {
     
    11731288    }
    11741289  }
     1290#if H_MV_HLS_7_RESERVED_FLAGS
     1291  WRITE_FLAG( 0, "vps_reserved_zero_flag" );
     1292#endif
    11751293  codeDpbSize( pcVPS );
    11761294
     
    12021320    }
    12031321  } 
     1322#if H_MV_HLS7_GEN
     1323  WRITE_UVLC( 0, "vps_non_vui_extension_length" );
     1324  WRITE_FLAG( pcVPS->getVpsVuiPresentFlag() ? 1 : 0 , "vps_vui_present_flag" );
     1325#endif
     1326#if !H_MV_HLS_7_RESERVED_FLAGS 
    12041327    WRITE_FLAG ( 0,                                      "vps_shvc_reserved_zero_flag" );
    1205 
     1328#endif
    12061329    if( pcVPS->getVpsVuiPresentFlag() )
    12071330    {
     
    12091332      codeVPSVUI( pcVPS );
    12101333    }     
     1334#if H_MV_HLS_7_FIX_INFER_CROSS_LAYER_IRAP_ALIGNED_FLAG
     1335    {
     1336      TComVPSVUI* pcVPSVUI = pcVPS->getVPSVUI( );
     1337      assert( pcVPSVUI );
     1338      pcVPSVUI->inferVpsVui( true );
     1339    }
     1340#endif
    12111341}
    12121342Void TEncCavlc::codeVideoSignalInfo( TComVideoSignalInfo* pcVideoSignalInfo )
     
    12281358  { 
    12291359    WRITE_FLAG( dpbSize->getSubLayerFlagInfoPresentFlag( i ) ? 1 : 0 , "sub_layer_flag_info_present_flag" );
    1230 
     1360#if H_MV_HLS_7_HRD_P0156_7
     1361    for( Int j = 0; j  <=  vps->getMaxSubLayersInLayerSetMinus1( i ); j++ )
     1362#else
    12311363    for( Int j = 0; j  <=  vps->getMaxTLayers() - 1 ; j++ )
     1364#endif
    12321365    { 
    12331366      if( j > 0  &&  dpbSize->getSubLayerDpbInfoPresentFlag( i, j )  ) 
     
    12371370      if( dpbSize->getSubLayerDpbInfoPresentFlag( i, j ) )
    12381371      { 
     1372#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1373        for( Int k = 0; k < vps->getNumSubDpbs( vps->getLayerSetIdxForOutputLayerSet( i )); k++ )   
     1374#else
    12391375        for( Int k = 0; k < vps->getNumSubDpbs( vps->getOutputLayerSetIdxMinus1( i ) + 1 ); k++ )   // Preliminary fix does not match with spec
     1376#endif
    12401377        {
    12411378          WRITE_UVLC( dpbSize->getMaxVpsDecPicBufferingMinus1( i, k, j ), "max_vps_dec_pic_buffering_minus1" );
    12421379        }
    12431380        WRITE_UVLC( dpbSize->getMaxVpsNumReorderPics( i, j ), "max_vps_num_reorder_pics" );
     1381#if H_MV_HLS7_GEN
     1382        if( vps->getNumSubDpbs( vps->getLayerSetIdxForOutputLayerSet( i ) ) != vps->getNumLayersInIdList( vps->getLayerSetIdxForOutputLayerSet( i ) ) )
     1383        {
     1384          for( Int k = 0; k < vps->getNumLayersInIdList( vps->getLayerSetIdxForOutputLayerSet( i ) ); k++ )
     1385          {
     1386            WRITE_UVLC( dpbSize->getMaxVpsLayerDecPicBuffMinus1( i, k, j ), "max_vps_layer_dec_pic_buff_minus1" );
     1387          }
     1388        }
     1389#endif
    12441390        WRITE_UVLC( dpbSize->getMaxVpsLatencyIncreasePlus1( i, j ), "max_vps_latency_increase_plus1" );
    12451391      }
     
    12481394        if ( j > 0 )
    12491395        {
     1396#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1397          for( Int k = 0; k < vps->getNumSubDpbs( vps->getLayerSetIdxForOutputLayerSet( i ) ); k++ )   
     1398#else
    12501399          for( Int k = 0; k < vps->getNumSubDpbs( vps->getOutputLayerSetIdxMinus1( i ) + 1 ); k++ )   
     1400#endif
    12511401          {
    12521402            assert( dpbSize->getMaxVpsDecPicBufferingMinus1( i, k, j ) == dpbSize->getMaxVpsDecPicBufferingMinus1( i,k, j - 1 ) );
     
    13001450    WRITE_FLAG( pcVPSVUI->getCrossLayerIrapAlignedFlag( ) ? 1 : 0 , "cross_layer_irap_aligned_flag" );
    13011451  }
    1302 
     1452#if H_MV_HLS_7_MISC_P0068_21
     1453  if( pcVPSVUI->getCrossLayerIrapAlignedFlag( ) )
     1454  {
     1455    WRITE_FLAG( pcVPSVUI->getAllLayersIdrAlignedFlag( ) ? 1 : 0 , "all_layers_idr_aligned_flag" );
     1456  }
     1457#endif
    13031458  WRITE_FLAG( pcVPSVUI->getBitRatePresentVpsFlag( ) ? 1 : 0 , "bit_rate_present_vps_flag" );
    13041459  WRITE_FLAG( pcVPSVUI->getPicRatePresentVpsFlag( ) ? 1 : 0 , "pic_rate_present_vps_flag" );
    13051460  if( pcVPSVUI->getBitRatePresentVpsFlag( )  ||  pcVPSVUI->getPicRatePresentVpsFlag( ) )
    13061461  {
     1462#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1463    for( Int i = 0; i  <=  pcVPS->getVpsNumLayerSetsMinus1(); i++ )
     1464#else
    13071465    for( Int i = 0; i  <=  pcVPS->getVpsNumberLayerSetsMinus1(); i++ )
     1466#endif
    13081467    {
    13091468      for( Int j = 0; j  <=  pcVPS->getMaxTLayers(); j++ )
     
    13311490  }
    13321491
     1492#if H_MV_HLS_7_VPS_P0076_15
     1493  WRITE_FLAG( pcVPSVUI->getVideoSignalInfoIdxPresentFlag( ) ? 1 : 0 , "video_signal_info_idx_present_flag" );
     1494  if( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() )
     1495  {
     1496    WRITE_CODE( pcVPSVUI->getVpsNumVideoSignalInfoMinus1( ), 4, "vps_num_video_signal_info_minus1" );
     1497  }
     1498  else
     1499  {
     1500    pcVPSVUI->setVpsNumVideoSignalInfoMinus1( pcVPS->getMaxLayersMinus1() );
     1501  }
     1502
     1503  for( Int i = 0; i <= pcVPSVUI->getVpsNumVideoSignalInfoMinus1(); i++ )
     1504  {
     1505    assert( pcVPSVUI->getVideoSignalInfo( i ) != NULL );
     1506    TComVideoSignalInfo* curVideoSignalInfo = pcVPSVUI->getVideoSignalInfo( i );
     1507    codeVideoSignalInfo( curVideoSignalInfo );     
     1508
     1509  }
     1510
     1511  if( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() && pcVPSVUI->getVpsNumVideoSignalInfoMinus1() > 0 )
     1512  {
     1513    for( Int i = 1; i <=  pcVPS->getMaxLayersMinus1(); i++ )
     1514    {
     1515      WRITE_CODE( pcVPSVUI->getVpsVideoSignalInfoIdx( i ), 4, "vps_video_signal_info_idx" );
     1516      assert( pcVPSVUI->getVpsVideoSignalInfoIdx( i ) >= 0 && pcVPSVUI->getVpsVideoSignalInfoIdx( i ) <= pcVPSVUI->getVpsNumVideoSignalInfoMinus1() );
     1517    }
     1518  }
     1519  else
     1520  {
     1521    for( Int i = 1; i <=  pcVPS->getMaxLayersMinus1(); i++ )
     1522    {
     1523      assert( pcVPSVUI->getVpsVideoSignalInfoIdx( i  ) == ( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() ? 0 : i ) );
     1524    }
     1525  }
     1526#endif
    13331527  WRITE_FLAG( pcVPSVUI->getTilesNotInUseFlag( ) ? 1 : 0 , "tiles_not_in_use_flag" );
    13341528  if( !pcVPSVUI->getTilesNotInUseFlag() )
     
    13651559    }
    13661560  }
     1561#if H_MV_HLS_7_RESERVED_FLAGS
     1562  WRITE_CODE( 0, 3, "vps_vui_reserved_zero_3bits" );
     1563#endif
    13671564  WRITE_FLAG( pcVPSVUI->getIlpRestrictedRefLayersFlag( ) ? 1 : 0 , "ilp_restricted_ref_layers_flag" );
    13681565
     
    13851582    }
    13861583  }
     1584
     1585#if !H_MV_HLS_7_VPS_P0076_15
    13871586  WRITE_FLAG( pcVPSVUI->getVideoSignalInfoIdxPresentFlag( ) ? 1 : 0 , "video_signal_info_idx_present_flag" );
    13881587  if( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() )
     
    14171616    }
    14181617  }
     1618#endif
    14191619  WRITE_FLAG( pcVPSVUI->getVpsVuiBspHrdPresentFlag( ) ? 1 : 0 , "vps_vui_bsp_hrd_present_flag" );
    14201620  if ( pcVPSVUI->getVpsVuiBspHrdPresentFlag( ) )
     
    14221622    codeVpsVuiBspHrdParameters( pcVPS );
    14231623  }
    1424 }
     1624#if H_MV_HLS_7_MISC_P0182_13
     1625  for( Int i = 1; i  <=  pcVPS->getMaxLayersMinus1(); i++ )
     1626  {
     1627    if( pcVPS->getNumDirectRefLayers( pcVPS->getLayerIdInNuh( i )) == 0 )
     1628    {
     1629      WRITE_FLAG( pcVPSVUI->getBaseLayerParameterSetCompatibilityFlag( i ) ? 1 : 0 , "base_layer_parameter_set_compatibility_flag" );
     1630    }
     1631}
     1632#endif
     1633}
     1634
    14251635Void TEncCavlc::codeVpsVuiBspHrdParameters( TComVPS* pcVPS )
    14261636{
     
    16381848    }
    16391849    pcSlice->checkCrossLayerBlaFlag( );
    1640 
     1850#if !H_MV_HLS7_GEN
    16411851    if ( pcSlice->getPPS()->getNumExtraSliceHeaderBits() > esb )
    16421852    {
     
    16441854      WRITE_FLAG( pcSlice->getPocResetFlag( ) ? 1 : 0 , "poc_reset_flag" );
    16451855    }
     1856#endif
    16461857
    16471858
     
    20232234#endif
    20242235
     2236#if !H_MV_HLS7_GEN
    20252237#if PPS_FIX_DEPTH
    20262238  if(pcSlice->getPPS()->getSliceHeaderExtensionPresentFlag() || pcSlice->getIsDepth() )
     
    20312243    WRITE_UVLC(0,"slice_header_extension_length");
    20322244  }
     2245#endif
     2246
     2247#if H_MV_HLS7_GEN
     2248#if !H_MV
     2249  if(pcSlice->getPPS()->getSliceHeaderExtensionPresentFlag())
     2250  {
     2251    WRITE_UVLC(0,"slice_header_extension_length");
     2252  }
     2253#else
     2254  if(pcSlice->getPPS()->getSliceHeaderExtensionPresentFlag())
     2255  {
     2256    WRITE_UVLC( pcSlice->getSliceSegmentHeaderExtensionLength( ), "slice_segment_header_extension_length" );
     2257    UInt posFollSliceSegHeaderExtLen = m_pcBitIf->getNumberOfWrittenBits();
     2258    if( pcSlice->getPPS()->getPocResetInfoPresentFlag() )
     2259    {
     2260      WRITE_CODE( pcSlice->getPocResetIdc( ), 2, "poc_reset_idc" );
     2261    }
     2262
     2263    if( pcSlice->getPocResetIdc() !=  0 )
     2264    {
     2265      WRITE_CODE( pcSlice->getPocResetPeriodId( ), 6, "poc_reset_period_id" );
     2266    }
     2267   
     2268    if( pcSlice->getPocResetIdc() ==  3 )
     2269    {
     2270      WRITE_FLAG( pcSlice->getFullPocResetFlag( ) ? 1 : 0 , "full_poc_reset_flag" );
     2271      WRITE_CODE( pcSlice->getPocLsbVal( ), getPocLsbValLen ), "poc_lsb_val" );
     2272    }             
     2273   
     2274    if( !pcSlice->getPocMsbValRequiredFlag() &&  pcSlice->getVPS()->getVpsPocLsbAlignedFlag() )
     2275    {
     2276      WRITE_FLAG( pcSlice->getPocMsbValPresentFlag( ) ? 1 : 0 , "poc_msb_val_present_flag" );
     2277    }
     2278   
     2279    if( pcSlice->getPocMsbValPresentFlag() )
     2280    {
     2281      WRITE_UVLC( pcSlice->getPocMsbVal( ), "poc_msb_val" );
     2282    }
     2283
     2284    while( ( m_pcBitIf->getNumberOfWrittenBits() - posFollSliceSegHeaderExtLen ) < pcSlice->getSliceSegmentHeaderExtensionLength() * 8 );
     2285    {
     2286      WRITE_FLAG( 0, "slice_segment_header_extension_data_bit" );
     2287    }
     2288
     2289    assert( m_pcBitIf->getNumberOfWrittenBits() - posFollSliceSegHeaderExtLen ) == pcSlice->getSliceSegmentHeaderExtensionLength() * 8  );
     2290#endif
     2291
     2292#endif
    20332293}
    20342294
Note: See TracChangeset for help on using the changeset viewer.