Changeset 854 in 3DVCSoftware for branches/HTM-10.0-dev0/source/Lib/TLibDecoder


Ignore:
Timestamp:
13 Feb 2014, 22:58:51 (11 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.

Location:
branches/HTM-10.0-dev0/source/Lib/TLibDecoder
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r852 r854  
    366366
    367367  READ_FLAG( uiCode, "pps_extension_flag");
     368#if H_MV_HLS_7_GEN_P0166_PPS_EXTENSION
     369  if (uiCode)
     370  {
     371#if H_MV
     372    for ( Int i = 0; i < PPS_EX_T_MAX_NUM; i++ )
     373    {
     374      READ_FLAG( uiCode, "pps_extension_type_flag" ); pcPPS->setPpsExtensionTypeFlag( i, uiCode == 1 );
     375#if H_3D
     376      assert( !pcPPS->getPpsExtensionTypeFlag( i ) || i == PPS_EX_T_MV || i == PPS_EX_T_3D || i == PPS_EX_T_ESC );
     377#else
     378      assert( !pcPPS->getPpsExtensionTypeFlag( i ) || i == PPS_EX_T_MV || i == PPS_EX_T_ESC );
     379#endif
     380    }
     381   
     382
     383    if( pcPPS->getPpsExtensionTypeFlag( PPS_EX_T_MV ) )
     384    {
     385#if H_MV_HLS7_GEN
     386      READ_FLAG( uiCode, "poc_reset_info_present_flag" ); pcPPS->setPocResetInfoPresentFlag( uiCode == 1 );
     387#endif
     388    }
     389
     390#if H_3D
     391    if( pcPPS->getPpsExtensionTypeFlag( PPS_EX_T_3D ) ) // This probably needs to be aligned with Rext and SHVC
     392    {
     393      parsePPSExtension( pcPPS, pcVPS );
     394    }
     395#endif
     396
     397    if( pcPPS->getPpsExtensionTypeFlag( PPS_EX_T_ESC ) )
     398    {
     399#endif
     400      while ( xMoreRbspData() )
     401      {
     402        READ_FLAG( uiCode, "pps_extension_data_flag");
     403      }
     404#if H_MV
     405    }
     406#endif
     407  }
     408#else
    368409  if (uiCode)
    369410  {
     
    382423#endif
    383424  }
     425#endif
    384426}
    385427
     
    807849  assert(uiCode <= 12);
    808850
     851#if H_MV_HLS_7_SPS_P0155_16_32
     852  if ( pcSPS->getLayerId() == 0 )
     853  { 
     854#endif
    809855  UInt subLayerOrderingInfoPresentFlag;
    810856  READ_FLAG(subLayerOrderingInfoPresentFlag, "sps_sub_layer_ordering_info_present_flag");
     
    842888    }
    843889  }
     890#if H_MV_HLS_7_SPS_P0155_16_32
     891  }
     892#endif
    844893
    845894  READ_UVLC( uiCode, "log2_min_coding_block_size_minus3" );
     
    10041053    READ_SVLC( iCode, "scaled_ref_layer_right_offset" ); pcSPS->setScaledRefLayerRightOffset( j, iCode );
    10051054    READ_SVLC( iCode, "scaled_ref_layer_bottom_offset" ); pcSPS->setScaledRefLayerBottomOffset( j, iCode );
     1055#if H_MV_HLS_7_RESERVED_FLAGS
     1056    READ_FLAG( uiCode, "sps_multilayer_ext_reserved_zero_flag[ i ]" );
     1057#endif
    10061058  }
    10071059}
     
    10391091  READ_FLAG(     uiCode,  "vps_temporal_id_nesting_flag" );       pcVPS->setTemporalNestingFlag( uiCode ? true:false );
    10401092  assert (pcVPS->getMaxTLayers()>1||pcVPS->getTemporalNestingFlag());
    1041 #if H_MV
     1093
     1094
     1095#if H_MV && !H_MV_HLS7_GEN
    10421096  READ_CODE( 16, uiCode,  "vps_extension_offset" );               
    10431097#else
     
    11541208  UInt uiCode;
    11551209  READ_FLAG( uiCode, "avc_base_layer_flag" );                     pcVPS->setAvcBaseLayerFlag( uiCode == 1 ? true : false );
    1156   READ_FLAG( uiCode, "vps_vui_present_flag" );                    pcVPS->setVpsVuiPresentFlag( uiCode == 1 );  if ( pcVPS->getVpsVuiPresentFlag() )
     1210#if !H_MV_HLS7_GEN
     1211  READ_FLAG( uiCode, "vps_vui_present_flag" );                    pcVPS->setVpsVuiPresentFlag( uiCode == 1 );
     1212  if ( pcVPS->getVpsVuiPresentFlag() )
    11571213  { 
    11581214  READ_CODE( 16, uiCode, "vps_vui_offset" );                      pcVPS->setVpsVuiOffset( uiCode );
    11591215  }
     1216#endif
    11601217
    11611218  READ_FLAG( uiCode, "splitting_flag" );                          pcVPS->setSplittingFlag( uiCode == 1 ? true : false );
     
    12331290  if ( pcVPS->getVpsSubLayersMaxMinus1PresentFlag() )
    12341291  {
    1235     for (Int i = 0; i < pcVPS->getMaxLayersMinus1(); i++ )
     1292    for (Int i = 0; i <= pcVPS->getMaxLayersMinus1(); i++ )
    12361293    {
    12371294      READ_CODE( 3, uiCode, "sub_layers_vps_max_minus1" ); pcVPS->setSubLayersVpsMaxMinus1( i, uiCode );   
     
    12421299  else
    12431300  {
    1244     for (Int i = 0; i < pcVPS->getMaxLayersMinus1(); i++ )
     1301    for (Int i = 0; i <= pcVPS->getMaxLayersMinus1(); i++ )
    12451302    {
    12461303      pcVPS->setSubLayersVpsMaxMinus1( i, pcVPS->getMaxTLayers( ) - 1);   
     
    12641321
    12651322  READ_FLAG( uiCode, "all_ref_layers_active_flag" );             pcVPS->setAllRefLayersActiveFlag( uiCode == 1 );
     1323#if !H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
    12661324  READ_CODE( 10, uiCode, "vps_number_layer_sets_minus1"      );  pcVPS->setVpsNumberLayerSetsMinus1    ( uiCode );
     1325#endif
     1326
     1327#if !H_MV_HLS7_GEN
    12671328  READ_CODE( 6,  uiCode, "vps_num_profile_tier_level_minus1" );  pcVPS->setVpsNumProfileTierLevelMinus1( uiCode );
    1268 
     1329#else
     1330  READ_UVLC( uiCode, "vps_num_profile_tier_level_minus1" );  pcVPS->setVpsNumProfileTierLevelMinus1( uiCode ); 
     1331#endif
    12691332  for( Int i = 1; i <= pcVPS->getVpsNumProfileTierLevelMinus1(); i++ )
    12701333  {
    12711334    READ_FLAG(  uiCode, "vps_profile_present_flag[i]" );    pcVPS->setVpsProfilePresentFlag( i, uiCode == 1 );
     1335#if !H_MV_HLS_7_VPS_P0048_14
    12721336    if( !pcVPS->getVpsProfilePresentFlag( i ) )
    12731337    {
     
    12751339      pcVPS->checkProfileRefMinus1( i );     
    12761340    }
     1341#endif
    12771342    parsePTL ( pcVPS->getPTL( i ), pcVPS->getVpsProfilePresentFlag( i ), pcVPS->getMaxTLayers()-1);
    12781343    if( !pcVPS->getVpsProfilePresentFlag( i ) )
    12791344    {
    12801345      TComPTL temp = *pcVPS->getPTL( i );
     1346#if H_MV_HLS_7_VPS_P0048_14
     1347      *pcVPS->getPTL( i ) = *pcVPS->getPTL( i - 1 );
     1348#else
    12811349      *pcVPS->getPTL( i ) = *pcVPS->getPTL( pcVPS->getProfileRefMinus1( i ) + 1 );
     1350#endif
    12821351      pcVPS->getPTL( i )->copyLevelFrom( &temp );
    12831352    }
    12841353  }
    12851354
     1355#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1356  READ_UVLC( uiCode, "num_add_output_layer_sets"      ); pcVPS->setNumAddOutputLayerSets( uiCode );
     1357  pcVPS->initTargetLayerIdLists( );
     1358  if( pcVPS->getNumOutputLayerSets() > 1)
     1359  {
     1360    READ_CODE( 2, uiCode, "default_target_output_layer_idc" ); pcVPS->setDefaultTargetOutputLayerIdc( std::min( uiCode, (UInt) 2 ) );   
     1361  } 
     1362
     1363#else
    12861364  Int numOutputLayerSets = pcVPS->getVpsNumberLayerSetsMinus1( ) + 1;
    12871365
     
    12991377    pcVPS->checkDefaultOneTargetOutputLayerIdc();
    13001378  } 
     1379#endif
    13011380
    13021381  pcVPS->setOutputLayerFlag(0, 0, pcVPS->inferOutputLayerFlag( 0, 0 ));
    13031382  pcVPS->setOutputLayerSetIdxMinus1(0, -1);
     1383
     1384#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1385  pcVPS->deriveTargetLayerIdList( 0 );
     1386  for( Int i = 1; i < pcVPS->getNumOutputLayerSets( ); i++ )
     1387  {
     1388    if( i > pcVPS->getVpsNumLayerSetsMinus1( ) )   
     1389#else
    13041390  for( Int i = 1; i < numOutputLayerSets; i++ )
    13051391  {
    13061392    if( i > pcVPS->getVpsNumberLayerSetsMinus1( ) )
     1393#endif
    13071394    {       
    13081395      READ_UVLC( uiCode,      "output_layer_set_idx_minus1[i]" ); pcVPS->setOutputLayerSetIdxMinus1( i, uiCode );
     1396#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1397    }
     1398
     1399    if ( i > pcVPS->getVpsNumLayerSetsMinus1() || pcVPS->getDefaultTargetOutputLayerIdc() == 2 )
     1400    {       
     1401      for( Int j = 0; j < pcVPS->getNumLayersInIdList( pcVPS->getLayerSetIdxForOutputLayerSet( i ) ); j++ )
     1402      {
     1403        READ_FLAG( uiCode, "output_layer_flag" ); pcVPS->setOutputLayerFlag( i, j, uiCode == 1 );
     1404      }
     1405    }
     1406    else
     1407    {
     1408      for( Int j = 0; j < pcVPS->getNumLayersInIdList( pcVPS->getLayerSetIdxForOutputLayerSet( i ) ); j++ )
     1409      {             
     1410        pcVPS->setOutputLayerFlag(i,j, pcVPS->inferOutputLayerFlag( i, j ));
     1411      }
     1412    }
     1413    pcVPS->deriveTargetLayerIdList( i );
     1414#else
    13091415      for( Int j = 0; j < pcVPS->getNumLayersInIdList( j ) - 1; j++ )
    13101416      {
     
    13201426      }
    13211427    }
    1322 
     1428#endif
    13231429    if ( pcVPS->getProfileLevelTierIdxLen()  > 0 )
    13241430    {     
    13251431      READ_CODE( pcVPS->getProfileLevelTierIdxLen(), uiCode,"profile_level_tier_idx[ i ]" );   pcVPS->setProfileLevelTierIdx( i , uiCode );
    13261432    }
     1433
     1434#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1435    if( pcVPS->getNumOutputLayersInOutputLayerSet( i ) == 1 && pcVPS->getNumDirectRefLayers( pcVPS->getOlsHighestOutputLayerId( i ) ) > 0 )
     1436    {
     1437      READ_FLAG( uiCode, "alt_output_layer_flag[ i ]" ); pcVPS->setAltOutputLayerFlag( i, uiCode == 1 );
     1438    }
     1439  }
     1440#else
    13271441  }
    13281442  if( pcVPS->getMaxLayersMinus1() > 0 )
     
    13301444    READ_FLAG( uiCode, "alt_output_layer_flag" ); pcVPS->setAltOutputLayerFlag( uiCode == 1 );
    13311445  }
     1446#endif
     1447
     1448#if !H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
    13321449  pcVPS->deriveTargetLayerIdLists();
     1450#endif
     1451
    13331452  READ_FLAG( uiCode, "rep_format_idx_present_flag" ); pcVPS->setRepFormatIdxPresentFlag( uiCode == 1 );
    13341453  if ( pcVPS->getRepFormatIdxPresentFlag() )
    13351454  {
     1455#if H_MV_HLS7_GEN
     1456    READ_UVLC( 4, uiCode, "vps_num_rep_formats_minus1" ); pcVPS->setVpsNumRepFormatsMinus1( uiCode );
     1457#else
    13361458    READ_CODE( 4, uiCode, "vps_num_rep_formats_minus1" ); pcVPS->setVpsNumRepFormatsMinus1( uiCode );
     1459#endif
    13371460  }
    13381461
     
    13581481
    13591482  READ_FLAG( uiCode, "max_one_active_ref_layer_flag" ); pcVPS->setMaxOneActiveRefLayerFlag ( uiCode == 1 );
     1483#if H_MV_HLS7_GEN
     1484  READ_FLAG( uiCode, "vps_poc_lsb_aligned_flag" ); pcVPS->setVpsPocLsbAlignedFlag( uiCode == 1 );
     1485#endif
    13601486  for( Int i = 1; i  <=  pcVPS->getMaxLayersMinus1(); i++ )
    13611487  {
     
    13661492  }
    13671493
     1494#if H_MV_HLS_7_RESERVED_FLAGS
     1495  READ_FLAG( uiCode, "vps_reserved_zero_flag" );
     1496#endif
    13681497  parseDpbSize( pcVPS );
    13691498
     
    13941523  } 
    13951524
     1525#if H_MV_HLS7_GEN
     1526  READ_UVLC( uiCode, "vps_non_vui_extension_length" ); pcVPS->setVpsNonVuiExtensionLength( uiCode );
     1527  for ( Int i = 1; i < pcVPS->getVpsNonVuiExtensionLength(); i++ )
     1528  {
     1529    READ_CODE( 8, uiCode, "vps_non_vui_extension_data_byte" );
     1530  }
     1531  READ_FLAG( uiCode, "vps_vui_present_flag" );                    pcVPS->setVpsVuiPresentFlag( uiCode == 1 );  if ( pcVPS->getVpsVuiPresentFlag() )
     1532#endif
     1533#if !H_MV_HLS_7_RESERVED_FLAGS
    13961534  READ_FLAG( uiCode, "vps_shvc_reserved_zero_flag" );
    1397 
     1535#endif
    13981536  if( pcVPS->getVpsVuiPresentFlag() )
    13991537  {
     
    14011539    parseVPSVUI( pcVPS );
    14021540  }     
     1541#if H_MV_HLS_7_FIX_INFER_CROSS_LAYER_IRAP_ALIGNED_FLAG
     1542  {
     1543    TComVPSVUI* pcVPSVUI = pcVPS->getVPSVUI( );
     1544    assert( pcVPSVUI );
     1545    pcVPSVUI->inferVpsVui( false );
     1546  }
     1547#endif
    14031548
    14041549  pcVPS->checkVPSExtensionSyntax();
     
    14481593    READ_FLAG( uiCode, "cross_layer_irap_aligned_flag" ); pcVPSVUI->setCrossLayerIrapAlignedFlag( uiCode == 1 );
    14491594  }
     1595#if H_MV_HLS_7_MISC_P0068_21
     1596  if( pcVPSVUI->getCrossLayerIrapAlignedFlag( ) )
     1597  {
     1598    READ_FLAG( uiCode, "all_layers_idr_aligned_flag" ); pcVPSVUI->setAllLayersIdrAlignedFlag( uiCode == 1 );
     1599  }
     1600#endif
    14501601  READ_FLAG( uiCode, "bit_rate_present_vps_flag" ); pcVPSVUI->setBitRatePresentVpsFlag( uiCode == 1 );
    14511602  READ_FLAG( uiCode, "pic_rate_present_vps_flag" ); pcVPSVUI->setPicRatePresentVpsFlag( uiCode == 1 );
    14521603  if( pcVPSVUI->getBitRatePresentVpsFlag( )  ||  pcVPSVUI->getPicRatePresentVpsFlag( ) )
    14531604  {
     1605#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1606    for( Int i = 0; i  <=  pcVPS->getVpsNumLayerSetsMinus1(); i++ )
     1607#else
    14541608    for( Int i = 0; i  <=  pcVPS->getVpsNumberLayerSetsMinus1(); i++ )
     1609#endif
    14551610    {
    14561611      for( Int j = 0; j  <=  pcVPS->getMaxTLayers(); j++ )
     
    14771632    }
    14781633  }
     1634
     1635#if H_MV_HLS_7_VPS_P0076_15
     1636  READ_FLAG( uiCode, "video_signal_info_idx_present_flag" ); pcVPSVUI->setVideoSignalInfoIdxPresentFlag( uiCode == 1 );
     1637  if( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() )
     1638  {
     1639    READ_CODE( 4, uiCode, "vps_num_video_signal_info_minus1" ); pcVPSVUI->setVpsNumVideoSignalInfoMinus1( uiCode );
     1640  }
     1641  else
     1642  {
     1643    pcVPSVUI->setVpsNumVideoSignalInfoMinus1( pcVPS->getMaxLayersMinus1() );
     1644  }
     1645
     1646  for( Int i = 0; i <= pcVPSVUI->getVpsNumVideoSignalInfoMinus1(); i++ )
     1647  {
     1648    assert( pcVPSVUI->getVideoSignalInfo( i ) == NULL );
     1649    TComVideoSignalInfo* curVideoSignalInfo = new TComVideoSignalInfo();     
     1650    parseVideoSignalInfo( curVideoSignalInfo );
     1651    pcVPSVUI->setVideoSignalInfo(i, curVideoSignalInfo );
     1652  }
     1653
     1654  if( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() && pcVPSVUI->getVpsNumVideoSignalInfoMinus1() > 0 )
     1655  {
     1656    for( Int i = 1; i <=  pcVPS->getMaxLayersMinus1(); i++ )
     1657    {
     1658      READ_CODE( 4, uiCode, "vps_video_signal_info_idx" ); pcVPSVUI->setVpsVideoSignalInfoIdx( i, uiCode );
     1659      assert( pcVPSVUI->getVpsVideoSignalInfoIdx( i ) >= 0 && pcVPSVUI->getVpsVideoSignalInfoIdx( i ) <= pcVPSVUI->getVpsNumVideoSignalInfoMinus1() );
     1660    }
     1661  }
     1662  else
     1663  {
     1664    for( Int i = 1; i <=  pcVPS->getMaxLayersMinus1(); i++ )
     1665    {
     1666      pcVPSVUI->setVpsVideoSignalInfoIdx( i, pcVPSVUI->getVideoSignalInfoIdxPresentFlag() ? 0 : i );
     1667    }
     1668  }
     1669#endif
    14791670
    14801671  READ_FLAG( uiCode, "tiles_not_in_use_flag" ); pcVPSVUI->setTilesNotInUseFlag( uiCode == 1 );
     
    15131704  }
    15141705
     1706#if H_MV_HLS_7_RESERVED_FLAGS
     1707  READ_CODE( 3, uiCode, "vps_vui_reserved_zero_3bits" );
     1708#endif
     1709
    15151710  READ_FLAG( uiCode, "ilp_restricted_ref_layers_flag" ); pcVPSVUI->setIlpRestrictedRefLayersFlag( uiCode == 1 );
    15161711
     
    15341729  }
    15351730
     1731#if !H_MV_HLS_7_VPS_P0076_15
    15361732  READ_FLAG( uiCode, "video_signal_info_idx_present_flag" ); pcVPSVUI->setVideoSignalInfoIdxPresentFlag( uiCode == 1 );
    15371733  if( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() )
     
    15671763    }
    15681764  }
     1765#endif
    15691766  READ_FLAG( uiCode, "vps_vui_bsp_hrd_present_flag" ); pcVPSVUI->setVpsVuiBspHrdPresentFlag( uiCode == 1 );
    15701767  if ( pcVPSVUI->getVpsVuiBspHrdPresentFlag( ) )
     
    15721769    parseVpsVuiBspHrdParameters( pcVPS );
    15731770}
     1771#if H_MV_HLS_7_MISC_P0182_13
     1772  for( Int i = 1; i  <=  pcVPS->getMaxLayersMinus1(); i++ )
     1773  {
     1774    if( pcVPS->getNumDirectRefLayers( pcVPS->getLayerIdInNuh( i )) == 0 )
     1775    {
     1776      READ_FLAG( uiCode, "base_layer_parameter_set_compatibility_flag" ); pcVPSVUI->setBaseLayerParameterSetCompatibilityFlag( i, uiCode == 1 );
     1777    }
     1778  }
     1779#endif
    15741780}
    15751781
     
    16501856  { 
    16511857    READ_FLAG( uiCode, "sub_layer_flag_info_present_flag" ); dpbSize->setSubLayerFlagInfoPresentFlag( i, uiCode == 1 );
    1652 
     1858#if H_MV_HLS_7_HRD_P0156_7
     1859    for( Int j = 0; j  <=  vps->getMaxSubLayersInLayerSetMinus1( i ); j++ )
     1860#else
    16531861    for( Int j = 0; j  <=  vps->getMaxTLayers() - 1 ; j++ )
     1862#endif
    16541863    { 
    16551864      if( j > 0  &&  dpbSize->getSubLayerDpbInfoPresentFlag( i, j )  ) 
     
    16591868      if( dpbSize->getSubLayerDpbInfoPresentFlag( i, j ) )
    16601869      { 
     1870#if H_MV_HLS_7_OUTPUT_LAYERS_5_10_22_27
     1871        for( Int k = 0; k < vps->getNumSubDpbs( vps->getLayerSetIdxForOutputLayerSet( i )); k++ )   
     1872#else
    16611873        for( Int k = 0; k < vps->getNumSubDpbs( vps->getOutputLayerSetIdxMinus1( i ) + 1 ); k++ )   
     1874#endif
    16621875        {
    16631876          READ_UVLC( uiCode, "max_vps_dec_pic_buffering_minus1" ); dpbSize->setMaxVpsDecPicBufferingMinus1( i, k, j, uiCode );
    16641877        }
    16651878        READ_UVLC( uiCode, "max_vps_num_reorder_pics" ); dpbSize->setMaxVpsNumReorderPics( i, j, uiCode );
     1879#if H_MV_HLS7_GEN
     1880        if( vps->getNumSubDpbs( vps->getLayerSetIdxForOutputLayerSet( i ) ) != vps->getNumLayersInIdList( vps->getLayerSetIdxForOutputLayerSet( i ) ) )
     1881        {
     1882          for( Int k = 0; k < vps->getNumLayersInIdList( vps->getLayerSetIdxForOutputLayerSet( i ) ); k++ )
     1883          {
     1884            READ_UVLC( uiCode, "max_vps_layer_dec_pic_buff_minus1" ); dpbSize->setMaxVpsLayerDecPicBuffMinus1( i, k, j, uiCode );
     1885          }
     1886        }
     1887#endif
    16661888        READ_UVLC( uiCode, "max_vps_latency_increase_plus1" ); dpbSize->setMaxVpsLatencyIncreasePlus1( i, j, uiCode );
    16671889      }
     
    17041926#if H_3D_SPIVMP
    17051927#if SEC_SPIVMP_MCP_SIZE_G0077
    1706         READ_UVLC (uiCode, "log2_sub_PU_size_minus3");     pcVPS->setSubPULog2Size(i, uiCode+3);
     1928        READ_UVLC (uiCode, "log2_sub_PU_size_minus3[i]");     pcVPS->setSubPULog2Size(i, uiCode+3);
    17071929#else
    17081930        READ_UVLC (uiCode, "log2_sub_PU_size_minus2");     pcVPS->setSubPULog2Size(i, uiCode+2);
     
    17611983  for (UInt viewIndex=0; viewIndex<pcVPS->getNumViews(); viewIndex++)
    17621984  {
     1985#if FIX_CAM_PARS_COLLECTOR
     1986    pcVPS->setCamParPresent         ( viewIndex, false );
     1987    pcVPS->setHasCamParInSliceHeader( viewIndex, false );
     1988#endif
    17631989    READ_FLAG( uiCode, "cp_present_flag[i]" );                  bCamParPresentFlag = ( uiCode == 1);
    17641990    if ( bCamParPresentFlag )
     
    18902116    rpcSlice->checkCrossLayerBlaFlag( );
    18912117
     2118#if !H_MV_HLS7_GEN
    18922119    if ( rpcSlice->getPPS()->getNumExtraSliceHeaderBits() > esb )
    18932120    {
     
    18952122      READ_FLAG( uiCode, "poc_reset_flag" ); rpcSlice->setPocResetFlag( uiCode == 1 );
    18962123    }
     2124#endif
    18972125
    18982126    for (; esb < rpcSlice->getPPS()->getNumExtraSliceHeaderBits(); esb++)   
     
    24922720  if(pps->getSliceHeaderExtensionPresentFlag())
    24932721  {
     2722#if !H_MV_HLS7_GEN   
    24942723    READ_UVLC(uiCode,"slice_header_extension_length");
    2495 
    24962724    for(Int i=0; i<uiCode; i++)
    24972725    {
     
    25002728    }
    25012729  }
     2730#else
     2731#if H_MV
     2732    READ_UVLC( uiCode, "slice_segment_header_extension_length" ); rpcSlice->setSliceSegmentHeaderExtensionLength( uiCode );
     2733    UInt posFollSliceSegHeaderExtLen = m_pcBitstream->getNumBitsRead();
     2734
     2735    if( rpcSlice->getPPS()->getPocResetInfoPresentFlag() )
     2736    {
     2737      READ_CODE( 2, uiCode, "poc_reset_idc" ); rpcSlice->setPocResetIdc( uiCode );
     2738    }
     2739
     2740    if( rpcSlice->getPocResetIdc() !=  0 )
     2741    {
     2742      READ_CODE( 6, uiCode, "poc_reset_period_id" ); rpcSlice->setPocResetPeriodId( uiCode );
     2743    }
     2744   
     2745    if( rpcSlice->getPocResetIdc() ==  3 )
     2746    {
     2747      READ_FLAG( uiCode, "full_poc_reset_flag" ); rpcSlice->setFullPocResetFlag( uiCode == 1 );
     2748      READ_CODE( rpcSlice->getPocLsbValLen() , uiCode, "poc_lsb_val" ); rpcSlice->setPocLsbVal( uiCode );
     2749    }         
     2750
     2751    if( !rpcSlice->getPocMsbValRequiredFlag() &&  rpcSlice->getVPS()->getVpsPocLsbAlignedFlag() )
     2752    {
     2753      READ_FLAG( uiCode, "poc_msb_val_present_flag" ); rpcSlice->setPocMsbValPresentFlag( uiCode == 1 );
     2754    }
     2755   
     2756    if( rpcSlice->getPocMsbValPresentFlag() )
     2757    {
     2758      READ_UVLC( uiCode, "poc_msb_val" ); rpcSlice->setPocMsbVal( uiCode );
     2759    }
     2760
     2761    while( ( m_pcBitstream->getNumBitsRead() - posFollSliceSegHeaderExtLen ) < rpcSlice->getSliceSegmentHeaderExtensionLength() * 8 );
     2762    {
     2763     READ_FLAG( uiCode, "slice_segment_header_extension_data_bit" );
     2764    }
     2765    assert( m_pcBitstream->getNumBitsRead() - posFollSliceSegHeaderExtLen ) == rpcSlice->getSliceSegmentHeaderExtensionLength() * 8  );
     2766#else
     2767    READ_UVLC( uiCode, "slice_header_extension_length" );
     2768    for(Int i=0; i<uiCode; i++)
     2769    {
     2770      UInt ignore;
     2771      READ_CODE(8,ignore,"slice_header_extension_data_byte");
     2772    }
     2773  }
     2774#endif
     2775#endif
     2776
    25022777
    25032778  m_pcBitstream->readByteAlignment();
  • branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecCu.cpp

    r852 r854  
    3737
    3838#include "TDecCu.h"
     39
    3940//! \ingroup TLibDecoder
    4041//! \{
     
    638639 
    639640  m_ppcCU[uiDepth]->copySubCU( pcCU, uiAbsPartIdx, uiDepth );
    640 
     641 
    641642#if H_MV_ENC_DEC_TRAC
    642643#if ENC_DEC_TRACE
     
    927928  }
    928929#endif
    929 
     930 
    930931#if H_3D && UPDATE_HM13
    931932  Bool useDltFlag = (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getPPS()->getDLT()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps());
  • branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecGop.cpp

    r852 r854  
    4343#include "libmd5/MD5.h"
    4444#include "TLibCommon/SEI.h"
     45
    4546#include <time.h>
    4647
  • branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecTop.cpp

    r852 r854  
    5151  m_aaiCodedOffset         = new Int* [ MAX_NUM_LAYERS ];
    5252  m_aaiCodedScale          = new Int* [ MAX_NUM_LAYERS ];
     53#if !FIX_CAM_PARS_COLLECTOR
    5354  m_aiViewId               = new Int  [ MAX_NUM_LAYERS ];
    5455
    5556  m_bViewReceived          = new Bool [ MAX_NUM_LAYERS ];
     57#endif
    5658  for( UInt uiId = 0; uiId < MAX_NUM_LAYERS; uiId++ )
    5759  {
     
    6365  m_iLog2Precision   = LOG2_DISP_PREC_LUT;
    6466  m_uiBitDepthForLUT = 8; // fixed
     67#if FIX_CAM_PARS_COLLECTOR
     68  m_receivedIdc = NULL;
     69  m_vps         = NULL;
     70#endif
    6571}
    6672
     
    7480  delete [] m_aaiCodedOffset;
    7581  delete [] m_aaiCodedScale;
     82#if !FIX_CAM_PARS_COLLECTOR
    7683  delete [] m_aiViewId; 
    7784  delete [] m_bViewReceived;
     85#endif
    7886
    7987  xDeleteArray( m_adBaseViewShiftLUT, MAX_NUM_LAYERS, MAX_NUM_LAYERS, 2 );
    8088  xDeleteArray( m_aiBaseViewShiftLUT, MAX_NUM_LAYERS, MAX_NUM_LAYERS, 2 );
    81 }
    82 
     89#if FIX_CAM_PARS_COLLECTOR
     90  xDeleteArray( m_receivedIdc, m_uiMaxViewIndex + 1 );
     91#endif
     92}
     93
     94
     95#if FIX_CAM_PARS_COLLECTOR
     96Void
     97CamParsCollector::init( FILE* pCodedScaleOffsetFile, TComVPS* vps)
     98{
     99  assert( !isInitialized() ); // Only one initialization currently supported
     100  m_bInitialized            = true;
     101  m_vps                     = vps;
     102  m_bCamParsVaryOverTime    = false;
     103  m_pCodedScaleOffsetFile   = pCodedScaleOffsetFile;
     104  m_lastPoc                 = -1;   
     105  m_firstReceivedPoc        = -2;
     106
     107  m_uiMaxViewIndex            = -1;
     108  for (Int i = 0; i <= vps->getMaxLayersMinus1(); i++)
     109  {
     110    Int curViewIdx = m_vps->getViewIndex( m_vps->getLayerIdInNuh( i ));
     111    m_bCamParsVaryOverTime = m_bCamParsVaryOverTime || vps->hasCamParInSliceHeader( curViewIdx );
     112    m_uiMaxViewIndex = std::max( m_uiMaxViewIndex, curViewIdx  ) ;
     113  }
     114
     115  assert( m_receivedIdc == NULL );
     116  m_receivedIdc = new Int*[ m_uiMaxViewIndex + 1];
     117  for (Int i = 0; i <= m_uiMaxViewIndex; i++)
     118  {
     119    m_receivedIdc[i] = new Int[ m_uiMaxViewIndex + 1 ];
     120  }
     121
     122  xResetReceivedIdc( true );
     123
     124  for (Int viewIndex = 0; viewIndex <= m_uiMaxViewIndex ; viewIndex++ )
     125  {
     126    if (m_vps->getCamParPresent( viewIndex ) )
     127    {   
     128      if( !m_vps->hasCamParInSliceHeader( viewIndex ) )
     129      {
     130        for (Int baseViewIndex = 0; baseViewIndex < viewIndex ; baseViewIndex++ )
     131        {
     132          m_receivedIdc   [ baseViewIndex ][ viewIndex ] = -1;
     133          m_aaiCodedScale [ baseViewIndex ][ viewIndex ] = m_vps->getCodedScale    (viewIndex) [ baseViewIndex ];
     134          m_aaiCodedOffset[ baseViewIndex ][ viewIndex ] = m_vps->getCodedOffset   (viewIndex) [ baseViewIndex ];
     135
     136          m_receivedIdc   [ viewIndex ][ baseViewIndex ] = -1;
     137          m_aaiCodedScale [ viewIndex ][ baseViewIndex ] = m_vps->getInvCodedScale (viewIndex) [ baseViewIndex ];
     138          m_aaiCodedOffset[ viewIndex ][ baseViewIndex ] = m_vps->getInvCodedOffset(viewIndex) [ baseViewIndex ];
     139          xInitLUTs( baseViewIndex, viewIndex, m_aaiCodedScale[ baseViewIndex ][ viewIndex ], m_aaiCodedOffset[ baseViewIndex ][ viewIndex ], m_adBaseViewShiftLUT, m_aiBaseViewShiftLUT );
     140          xInitLUTs( viewIndex, baseViewIndex, m_aaiCodedScale[ viewIndex ][ baseViewIndex ], m_aaiCodedOffset[ viewIndex ][ baseViewIndex ], m_adBaseViewShiftLUT, m_aiBaseViewShiftLUT );
     141        }
     142      }
     143    }
     144  }
     145}
     146
     147Void
     148CamParsCollector::xResetReceivedIdc( Bool overWriteFlag )
     149{
     150  for (Int i = 0; i <= m_uiMaxViewIndex; i++)
     151  { 
     152    for (Int j = 0; j <= m_uiMaxViewIndex; j++)
     153    {
     154      if ( overWriteFlag ||  ( m_receivedIdc[i][j] != -1 ) )
     155      {
     156        m_receivedIdc[i][j] = 0;
     157      }     
     158    }
     159  }
     160}
     161#else
    83162Void
    84163CamParsCollector::init( FILE* pCodedScaleOffsetFile )
     
    92171  m_uiMaxViewIndex             = 0;
    93172}
     173#endif
     174
     175
    94176
    95177Void
     
    124206  CamParsCollector::xInitLUTs( UInt uiSourceView, UInt uiTargetView, Int iScale, Int iOffset, Double****& radLUT, Int****& raiLUT)
    125207{
     208#if FIX_CAM_PARS_COLLECTOR
     209  Int     iLog2DivLuma   = m_uiBitDepthForLUT + m_vps->getCamParPrecision() + 1 - m_iLog2Precision;   AOF( iLog2DivLuma > 0 );
     210#else
    126211  Int     iLog2DivLuma   = m_uiBitDepthForLUT + m_uiCamParsCodedPrecision + 1 - m_iLog2Precision;   AOF( iLog2DivLuma > 0 );
     212#endif
    127213  Int     iLog2DivChroma = iLog2DivLuma + 1;
    128214
     
    166252}
    167253
     254#if !FIX_CAM_PARS_COLLECTOR
    168255Void
    169256CamParsCollector::setSlice( TComSlice* pcSlice )
     
    284371}
    285372
     373#else
     374Void
     375CamParsCollector::setSlice( TComSlice* pcSlice )
     376{
     377  if( pcSlice == 0 )
     378  {
     379    xOutput( m_lastPoc );
     380    return;
     381  }
     382
     383  if ( pcSlice->getIsDepth())
     384  {
     385    return;
     386  }
     387
     388  Int curPoc = pcSlice->getPOC();
     389  if( m_firstReceivedPoc == -2 )
     390  {
     391    m_firstReceivedPoc = curPoc;
     392  }
     393
     394  Bool newPocFlag = ( m_lastPoc != curPoc ); 
     395
     396  if ( newPocFlag )
     397  {   
     398    if( m_lastPoc != -1 )
     399    {
     400      xOutput( m_lastPoc );
     401    }
     402
     403    xResetReceivedIdc( false );
     404    m_lastPoc = pcSlice->getPOC();
     405  }
     406
     407  UInt uiViewIndex          = pcSlice->getViewIndex(); 
     408  if( m_vps->getCamParPresent( uiViewIndex ) )
     409  {   
     410    if( m_vps->hasCamParInSliceHeader( uiViewIndex ) ) // check consistency of slice parameters here
     411    {   
     412      for( UInt uiBaseViewIndex = 0; uiBaseViewIndex < uiViewIndex; uiBaseViewIndex++ )
     413      {       
     414        if ( m_receivedIdc[ uiViewIndex ][ uiBaseViewIndex ] != 0 )
     415        {     
     416          AOF( m_aaiCodedScale [ uiViewIndex ][ uiBaseViewIndex ] == pcSlice->getInvCodedScale () [ uiBaseViewIndex ] );
     417          AOF( m_aaiCodedOffset[ uiViewIndex ][ uiBaseViewIndex ] == pcSlice->getInvCodedOffset() [ uiBaseViewIndex ] );
     418        }
     419        else
     420        {         
     421          m_receivedIdc   [ uiViewIndex ][ uiBaseViewIndex ]  = 1;
     422          m_aaiCodedScale [ uiViewIndex ][ uiBaseViewIndex ]  = pcSlice->getInvCodedScale () [ uiBaseViewIndex ];
     423          m_aaiCodedOffset[ uiViewIndex ][ uiBaseViewIndex ]  = pcSlice->getInvCodedOffset() [ uiBaseViewIndex ];
     424          xInitLUTs( uiViewIndex, uiBaseViewIndex, m_aaiCodedScale[ uiViewIndex ][ uiBaseViewIndex ], m_aaiCodedOffset[ uiViewIndex ][ uiBaseViewIndex ], m_adBaseViewShiftLUT, m_aiBaseViewShiftLUT);
     425        }
     426        if ( m_receivedIdc[ uiBaseViewIndex ][ uiViewIndex ] != 0 )
     427        {     
     428          AOF( m_aaiCodedScale [ uiBaseViewIndex ][ uiViewIndex ] == pcSlice->getCodedScale    () [ uiBaseViewIndex ] );
     429          AOF( m_aaiCodedOffset[ uiBaseViewIndex ][ uiViewIndex ] == pcSlice->getCodedOffset   () [ uiBaseViewIndex ] );
     430        }
     431        else
     432        {       
     433          m_receivedIdc   [ uiBaseViewIndex ][ uiViewIndex ]  = 1;
     434          m_aaiCodedScale [ uiBaseViewIndex ][ uiViewIndex ]  = pcSlice->getCodedScale    () [ uiBaseViewIndex ];
     435          m_aaiCodedOffset[ uiBaseViewIndex ][ uiViewIndex ]  = pcSlice->getCodedOffset   () [ uiBaseViewIndex ];
     436          xInitLUTs( uiBaseViewIndex, uiViewIndex, m_aaiCodedScale[ uiBaseViewIndex ][ uiViewIndex ], m_aaiCodedOffset[ uiBaseViewIndex ][ uiViewIndex ], m_adBaseViewShiftLUT, m_aiBaseViewShiftLUT);
     437        }
     438      }
     439    }
     440  }
     441}
     442#endif
     443
     444
    286445#if H_3D_IV_MERGE
    287446Void
     
    295454#endif
    296455
     456#if !FIX_CAM_PARS_COLLECTOR
    297457Bool
    298458CamParsCollector::xIsComplete()
     
    307467  return true;
    308468}
     469#endif
    309470
    310471Void
     
    313474  if( m_pCodedScaleOffsetFile )
    314475  {
     476#if FIX_CAM_PARS_COLLECTOR
     477    if( iPOC == m_firstReceivedPoc )
     478#else
    315479    if( iPOC == 0 )
     480#endif
    316481    {
    317482      fprintf( m_pCodedScaleOffsetFile, "#  ViewIndex       ViewId\n" );
    318483      fprintf( m_pCodedScaleOffsetFile, "#----------- ------------\n" );
     484#if FIX_CAM_PARS_COLLECTOR
    319485      for( UInt uiViewIndex = 0; uiViewIndex <= m_uiMaxViewIndex; uiViewIndex++ )
    320486      {
     487        fprintf( m_pCodedScaleOffsetFile, "%12d %12d\n", uiViewIndex, m_vps->getViewIdVal( uiViewIndex ) );
     488#else       
     489      for( UInt uiViewIndex = 0; uiViewIndex <= m_uiMaxViewIndex; uiViewIndex++ )
     490      {
    321491        fprintf( m_pCodedScaleOffsetFile, "%12d %12d\n", uiViewIndex, m_aiViewId[ uiViewIndex ] );
     492#endif
    322493      }
    323494      fprintf( m_pCodedScaleOffsetFile, "\n\n");
     
    325496      fprintf( m_pCodedScaleOffsetFile, "#----------- ------------ ------------ ------------ ------------ ------------ ------------\n" );
    326497    }
     498#if FIX_CAM_PARS_COLLECTOR
     499    if( iPOC == m_firstReceivedPoc || m_bCamParsVaryOverTime  )
     500#else
    327501    if( iPOC == 0 || m_bCamParsVaryOverTime )
     502#endif
    328503    {
    329504      Int iS = iPOC;
     
    335510          if( uiViewIndex != uiBaseIndex )
    336511          {
     512#if FIX_CAM_PARS_COLLECTOR
     513            if ( m_receivedIdc[uiBaseIndex][uiViewIndex] != 0 )
     514            {           
     515              fprintf( m_pCodedScaleOffsetFile, "%12d %12d %12d %12d %12d %12d %12d\n",
     516                iS, iE, uiViewIndex, uiBaseIndex, m_aaiCodedScale[ uiBaseIndex ][ uiViewIndex ], m_aaiCodedOffset[ uiBaseIndex ][ uiViewIndex ], m_vps->getCamParPrecision() );
     517            }           
     518#else
    337519            fprintf( m_pCodedScaleOffsetFile, "%12d %12d %12d %12d %12d %12d %12d\n",
    338520              iS, iE, uiViewIndex, uiBaseIndex, m_aaiCodedScale[ uiBaseIndex ][ uiViewIndex ], m_aaiCodedOffset[ uiBaseIndex ][ uiViewIndex ], m_uiCamParsCodedPrecision );
     521#endif
     522
    339523          }
    340524        }
     
    457641  for( Int temporalLayer=0; temporalLayer < MAX_TLAYER; temporalLayer++)
    458642  {
     643#if H_MV_HLS_7_SPS_P0155_16_32
     644    numReorderPics[temporalLayer] = ( getLayerId() == 0 ) ? pcSlice->getSPS()->getNumReorderPics(temporalLayer) : pcSlice->getVPS()->getNumReorderPics(temporalLayer);
     645#else
    459646    numReorderPics[temporalLayer] = pcSlice->getSPS()->getNumReorderPics(temporalLayer);
    460   }
    461 
     647#endif
     648  }
     649#if H_MV_HLS_7_SPS_P0155_16_32
     650  if ( getLayerId() == 0 )
     651  { 
     652    m_iMaxRefPicNum = pcSlice->getSPS()->getMaxDecPicBuffering(pcSlice->getTLayer());
     653  }
     654  else
     655  {
     656    m_iMaxRefPicNum = pcSlice->getVPS()->getMaxDecPicBuffering(pcSlice->getTLayer());
     657#if H_MV_HLS7_GEN
     658    TComVPS* vps         = pcSlice->getVPS();
     659    TComDpbSize* dpbSize = vps->getDpbSize();
     660    Int lsIdx            = vps->getLayerSetIdxForOutputLayerSet( getTargetOutputLayerSetIdx()); // Is this correct, seems to be missing in spec?
     661    Int layerIdx         = vps->getIdxInLayerSet     ( lsIdx, getLayerId() );
     662    Int subDpbIdx        = dpbSize->getSubDpbAssigned( lsIdx, layerIdx );
     663    m_iMaxRefPicNum      = dpbSize->getMaxVpsDecPicBufferingMinus1(getTargetOutputLayerSetIdx(), subDpbIdx , vps->getSubLayersVpsMaxMinus1( vps->getLayerIdInVps( getLayerId() ) ) + 1 ) + 1 ; 
     664#endif   
     665  }
     666#else
    462667  m_iMaxRefPicNum = pcSlice->getSPS()->getMaxDecPicBuffering(pcSlice->getTLayer());     // m_uiMaxDecPicBuffering has the space for the picture currently being decoded
     668#endif
    463669  if (m_cListPic.size() < (UInt)m_iMaxRefPicNum)
    464670  {
  • branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecTop.h

    r852 r854  
    7171  ~CamParsCollector ();
    7272
     73#if FIX_CAM_PARS_COLLECTOR
     74  Void  init        ( FILE* pCodedScaleOffsetFile, TComVPS* vps );
     75#else
    7376  Void  init        ( FILE* pCodedScaleOffsetFile );
     77#endif
     78
    7479  Void  uninit      ();
    7580  Void  setSlice    ( TComSlice* pcSlice );
     
    8590  Int getCodedScale( Int iBaseView, Int iCureView){ return m_aaiCodedScale[ iBaseView ][ iCureView ];}
    8691  Int getCodedOffset( Int iBaseView, Int iCureView){ return m_aaiCodedOffset[ iBaseView ][ iCureView ];}
    87   UInt getCamParsCodedPrecision(){ return m_uiCamParsCodedPrecision; }
     92  UInt getCamParsCodedPrecision(){ return m_vps->getCamParPrecision(); }
    8893#endif
    8994
    9095private:
     96#if FIX_CAM_PARS_COLLECTOR
     97  Void xResetReceivedIdc( Bool overWriteFlag );
     98#else
    9199  Bool  xIsComplete ();
     100#endif
    92101  Void  xOutput     ( Int iPOC );
    93102
     
    98107  Int**   m_aaiCodedOffset;
    99108  Int**   m_aaiCodedScale;
     109 
     110#if !FIX_CAM_PARS_COLLECTOR
    100111  Int*    m_aiViewId; 
    101 
     112#else
     113  TComVPS* m_vps;
     114  Int**    m_receivedIdc;
     115  Int      m_uiMaxViewIndex;
     116  Int      m_lastPoc;
     117  Int      m_firstReceivedPoc;
     118#endif
     119
     120 
     121#if !FIX_CAM_PARS_COLLECTOR
    102122  Bool*   m_bViewReceived;
    103123  UInt    m_uiCamParsCodedPrecision;
     124#endif
    104125  Bool    m_bCamParsVaryOverTime;
     126#if !FIX_CAM_PARS_COLLECTOR
    105127  Int     m_iLastViewIndex;
    106128  Int     m_iLastPOC;
    107129  UInt    m_uiMaxViewIndex;
     130#endif
    108131
    109132
Note: See TracChangeset for help on using the changeset viewer.