Ignore:
Timestamp:
12 Apr 2018, 11:12:21 (7 years ago)
Author:
tech
Message:
  • Update HM-16.18
  • Cleanups
  • Encoder Extension

-- Representation formats
-- Parameter set sharing
-- GOP configuration

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-16.2-dev/source/Lib/TLibCommon/TComSlice.cpp

    r1405 r1412  
    44 * granted under this license.
    55 *
    6  * Copyright (c) 2010-2016, ITU/ISO/IEC
     6 * Copyright (c) 2010-2017, ITU/ISO/IEC
    77 * All rights reserved.
    88
     
    4242#include "TLibEncoder/TEncSbac.h"
    4343#include "TLibDecoder/TDecSbac.h"
    44 
     44#if NH_MV
     45#include <set>
     46#endif
    4547
    4648//! \ingroup TLibCommon
     
    139141, m_pocMsbValRequiredFlag         (false)
    140142#endif
    141 #if NH_3D_IC
     143#if NH_3D
    142144, m_bApplyIC                      (false)
    143145, m_icSkipParseFlag               (false)
    144 #endif
    145 #if NH_3D
    146146, m_inCmpPredFlag                 (false)
    147147, m_numViews                      (0)
    148148, m_depthToDisparityB             (NULL)
    149149, m_depthToDisparityF             (NULL)
    150 #endif
    151 #if NH_3D_DIS
    152150, m_bApplyDIS                     (false)
    153151#endif
     
    289287    m_iSliceChromaQpDelta[component] = 0;
    290288  }
    291 #if NH_3D_IV_MERGE
     289#if NH_3D
    292290  m_maxNumMergeCand = MRG_MAX_NUM_CANDS_MEM;
    293291#else
     
    300298  m_cabacInitFlag        = false;
    301299  m_enableTMVPFlag = true;
    302 #if NH_3D_TMVP
     300#if NH_3D
    303301  m_aiAlterRefIdx[0]                  = -1;
    304302  m_aiAlterRefIdx[1]                  = -1;
     
    828826}
    829827#if NH_3D
    830 #if NH_3D_TMVP
    831828Void TComSlice::generateAlterRefforTMVP()
    832829{
     
    849846  }
    850847}
    851 #endif
    852848#endif
    853849
     
    11691165  }
    11701166#endif
    1171 #if NH_3D_DIS
     1167#if NH_3D
    11721168  m_bApplyDIS = pSrc->m_bApplyDIS;
    1173 #endif
    1174 #if NH_3D_IC
    11751169  m_bApplyIC = pSrc->m_bApplyIC;
    11761170  m_icSkipParseFlag = pSrc->m_icSkipParseFlag;
     
    19671961  for( Int i = 0; i < MAX_NUM_LAYERS; i++ )
    19681962  {
    1969     m_layerIdInNuh      [i] = ( i == 0 ) ? 0 : -1;
    1970     m_numDirectRefLayers[i] = 0;
     1963    m_layerIdInNuh        [i] = ( i == 0 ) ? 0 : -1;
     1964    m_numDirectRefLayers  [i] = 0;
    19711965#if NH_3D
    1972     m_numRefListLayers[i] = 0;
    1973 #endif
    1974     m_vpsRepFormatIdx    [i] = 0;
     1966    m_numRefListLayers    [i] = 0;
     1967#endif
     1968    m_vpsRepFormatIdx     [i] = 0;
    19751969    m_pocLsbNotPresentFlag[i] = 0;   
    1976     m_viewIdVal          [i] = 0;
     1970    m_viewIdVal           [i] = 0;
    19771971
    19781972#if NH_3D
    1979     m_viewIndex         [i] = -1;
     1973    m_viewIndex           [i] = -1;
    19801974#endif
    19811975
     
    19981992      m_dimensionId[i][j] = 0;
    19991993    }
    2000 #if NH_3D_ARP
    2001 #endif
    20021994  } 
    20031995#endif
     
    22832275
    22842276
     2277#if NH_3D
     2278Bool TComVPS::isFirstDepthLayer(Int layerIdInNuh) const
     2279{
     2280  Bool firstDepthLayer = false;
     2281  for(Int i = 0; i <= getMaxLayersMinus1(); i++  )
     2282  {
     2283    Int curLayerIdInNuh = getLayerIdInNuh( i );
     2284    if ( getVpsDepthFlag( curLayerIdInNuh ) )
     2285    {
     2286      firstDepthLayer =  ( curLayerIdInNuh == layerIdInNuh);
     2287      break;
     2288    }
     2289  }
     2290  return firstDepthLayer;
     2291}
     2292#endif
    22852293
    22862294Void TComVPS::deriveLayerSetLayerIdList()
     
    24882496}
    24892497
     2498
     2499Void TComVPS::printRepFormat() const
     2500{
     2501
     2502  vector<Int> idc;
     2503  vector<Int> width;
     2504  vector<Int> height;
     2505  vector<Int> chromaAndBitDepthPresent;
     2506  vector<Int> chormaFormat;   
     2507  vector<Int> bitDepthLuma;
     2508  vector<Int> bitDepthChroma;
     2509  vector<Int> conformanceWindowPresent;
     2510  vector<Int> confLeftOff;
     2511  vector<Int> confRightOff;
     2512  vector<Int> confTopOff;
     2513  vector<Int> confBottomOff;
     2514
     2515  for (Int i = 0; i <= getVpsNumRepFormatsMinus1(); i++ )
     2516  {
     2517    const TComRepFormat* repFormat = getRepFormat( i );
     2518
     2519    idc                             .push_back(        i             );
     2520    width                           .push_back(  repFormat->getPicWidthVpsInLumaSamples()  );
     2521    height                          .push_back(  repFormat->getPicHeightVpsInLumaSamples() );
     2522    chromaAndBitDepthPresent        .push_back(  repFormat->getChromaAndBitDepthVpsPresentFlag() ? 1 : 0    );
     2523    chormaFormat                    .push_back(  repFormat->getChromaFormatVpsIdc()        );
     2524    bitDepthLuma                    .push_back(  repFormat->getBitDepthVpsLumaMinus8()     );
     2525    bitDepthChroma                  .push_back(  repFormat->getBitDepthVpsChromaMinus8()   );
     2526    conformanceWindowPresent        .push_back(  repFormat->getConformanceWindowVpsFlag()  );
     2527    confLeftOff                     .push_back(  repFormat->getConfWinVpsLeftOffset()      );
     2528    confRightOff                    .push_back(  repFormat->getConfWinVpsRightOffset()     );
     2529    confTopOff                      .push_back(  repFormat->getConfWinVpsTopOffset()       );
     2530    confBottomOff                   .push_back(  repFormat->getConfWinVpsBottomOffset()    );
     2531  }
     2532
     2533  std::cout << std::right << std::setw(60) << std::setfill('-') << " " << std::setfill(' ') << std::endl << "Rep Format" << std::endl;
     2534 
     2535  std::vector<Int> repFormatIdx;
     2536
     2537  for (Int i = 0; i <= getMaxLayersMinus1(); i++ )
     2538  {
     2539    repFormatIdx.push_back( getVpsRepFormatIdx(i ) );
     2540  }
     2541
     2542  xPrintArray( "rep_format_idx", getMaxLayersMinus1()+1, repFormatIdx, false  );
     2543
     2544  std::cout << std::endl;
     2545
     2546  xPrintArray( "i"                                      , getVpsNumRepFormatsMinus1()+1, idc                                    , false, 6 );
     2547  xPrintArray( "pic_width_vps_in_luma_samples"          , getVpsNumRepFormatsMinus1()+1, width                                  , false, 6 );
     2548  xPrintArray( "pic_height_vps_in_luma_samples"         , getVpsNumRepFormatsMinus1()+1, height                                 , false, 6 );       
     2549  xPrintArray( "chroma_and_bit_depth_vps_present_flag"  , getVpsNumRepFormatsMinus1()+1, chromaAndBitDepthPresent               , false, 6 );     
     2550  xPrintArray( "chroma_format_vps_idc"                  , getVpsNumRepFormatsMinus1()+1, chormaFormat                           , false, 6 );     
     2551  xPrintArray( "bit_depth_vps_luma_minus8"              , getVpsNumRepFormatsMinus1()+1, bitDepthLuma                           , false, 6 );     
     2552  xPrintArray( "bit_depth_vps_chroma_minus8"            , getVpsNumRepFormatsMinus1()+1, bitDepthChroma                         , false, 6 );     
     2553  xPrintArray( "conformance_window_vps_flag"            , getVpsNumRepFormatsMinus1()+1, conformanceWindowPresent               , false, 6 );     
     2554  xPrintArray( "conf_win_vps_left_offset"               , getVpsNumRepFormatsMinus1()+1, confLeftOff                            , false, 6 );     
     2555  xPrintArray( "conf_win_vps_right_offset"              , getVpsNumRepFormatsMinus1()+1, confRightOff                           , false, 6 );     
     2556  xPrintArray( "conf_win_vps_top_offset"                , getVpsNumRepFormatsMinus1()+1, confTopOff                             , false, 6 );     
     2557  xPrintArray( "conf_win_vps_bottom_offset"             , getVpsNumRepFormatsMinus1()+1, confBottomOff                          , false, 6 );     
     2558
     2559  std::cout << std::endl;
     2560}
     2561
     2562
    24902563Void TComVPS::printLayerDependencies() const
    24912564{
     
    26142687  xPrintArray( "TargetDecLayerIdList", getNumOutputLayerSets(), rangeOutputLayerSets, numDecLayer,                     m_targetDecLayerIdLists, true );
    26152688  std::cout << endl;
     2689}
     2690
     2691IntAry1d TComVPS::getLayersOfVpsPtl(Int idxOfVpsPtl) const
     2692{
     2693  std::set<Int> applicableLayerIdsInVps;
     2694  // Get max chroma format and max bit depth of layers to which ptl is applicable to.
     2695
     2696  if ( idxOfVpsPtl == 0 || idxOfVpsPtl == 1 )
     2697  {
     2698    // If the profile_tier_level( ) syntax structure is included in an active SPS for the base layer or is the profile_tier_level( ) syntax structure
     2699    // VpsProfileTierLevel[ 0 ], it applies to the OLS containing all layers in the bitstream but with only the base layer being the output layer.
     2700
     2701    // the value of profile_tier_level_idx[ 0 ][ 0 ] is inferred to be equal to 1, such that
     2702    // VpsProfileTierLevel[ 1 ] applies to the 0-th OLS, which contains only the base layer that is the only output layer.
     2703
     2704    // Consider only the base layer
     2705    applicableLayerIdsInVps.insert( 0 );
     2706  }
     2707  else
     2708  {
     2709    // Otherwise, the profile_tier_level( ) syntax structure provides profile, tier and level to which a layer in an OLS conforms
     2710    // and the profile_tier_level_idx[ i ][ j ] syntax element specifies that the profile_tier_level( ) syntax structure
     2711    // VpsProfileTierLevel[ profile_tier_level_idx[ i ][ j ] ] applies to the j-th layer of the i-th OLS.
     2712
     2713    for (Int j = 0; j < getNumOutputLayerSets(); j++ )
     2714    {
     2715      for (Int k = 0; k < getNumOutputLayersInOutputLayerSet( j );  k++)
     2716      {
     2717        if ( getProfileTierLevelIdx(j,k)  == idxOfVpsPtl )
     2718        {
     2719          applicableLayerIdsInVps.insert( getLayerIdInVps( getTargetOptLayerIdList( j )[ k ]  ) );
     2720        }
     2721      }
     2722    }
     2723  }
     2724
     2725  IntAry1d layers;
     2726  for(std::set<Int>::iterator it = applicableLayerIdsInVps.begin(); it != applicableLayerIdsInVps.end(); ++it  )
     2727  {
     2728    layers.push_back( *it );
     2729  }
     2730  return layers;
    26162731}
    26172732
     
    27742889  m_spsMultilayerExtensionFlag = false;
    27752890  m_spsExtension5bits          = 0;
    2776   m_sps3dExtensionFlag         = false;
    2777 
     2891  m_sps3dExtensionFlag         = false;   
     2892  m_layerId                    = -1;
     2893  m_inferredRepFormat          = NULL;
    27782894#endif
    27792895
     
    28222938, m_numRefIdxL0DefaultActive         (1)
    28232939, m_numRefIdxL1DefaultActive         (1)
    2824 , m_TransquantBypassEnableFlag       (false)
     2940, m_TransquantBypassEnabledFlag      (false)
    28252941, m_useTransformSkip                 (false)
    28262942, m_dependentSliceSegmentsEnabledFlag(false)
     
    28312947, m_numTileColumnsMinus1             (0)
    28322948, m_numTileRowsMinus1                (0)
    2833 , m_signHideFlag                     (false)
     2949, m_signDataHidingEnabledFlag        (false)
    28342950, m_cabacInitPresentFlag             (false)
    28352951, m_sliceHeaderExtensionPresentFlag  (false)
     
    28422958, m_pocResetInfoPresentFlag          (false)
    28432959#endif
    2844 #if NH_3D_DLT
     2960#if NH_3D
    28452961, m_cDLT                             ()
    28462962#endif
     
    28592975}
    28602976
    2861 #if NH_3D_DLT
    2862 TComDLT::TComDLT()
     2977#if NH_3D
     2978TComDLT::TComDLT( )
    28632979: m_bDltPresentFlag(false)
    28642980, m_iNumDepthViews(0)
     
    30043120
    30053121#if NH_MV
    3006 Void TComSPS::inferRepFormat( TComVPS* vps, Int layerIdCurr, Bool encoder )
    3007 {
    3008   if ( getMultiLayerExtSpsFlag() )
    3009   {   
    3010     Int            repFormatIdx = getUpdateRepFormatFlag() ?  getSpsRepFormatIdx() : vps->getVpsRepFormatIdx( vps->getLayerIdInVps( layerIdCurr ) ) ;
    3011     const TComRepFormat* repFormat    = vps->getRepFormat( repFormatIdx );
    3012 
    3013     if ( encoder )
     3122Void TComSPS::inferRepFormat( TComVPS* vps, Int layerIdCurr, Bool alreadySet )
     3123{
     3124  // Parameters are present in the SPS
     3125  // - base layer or muliLayerExpSpsFlag equal to zero
     3126
     3127  // It is a requirement of bitstream conformance that, when present, the value of chroma_format_idc,
     3128  // separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8 or
     3129  // bit_depth_chroma_minus8 shall be less than or equal to chroma_format_vps_idc, separate_colour_plane_vps_flag,
     3130  // pic_width_vps_in_luma_samples, pic_height_vps_in_luma_samples, bit_depth_vps_luma_minus8, or bit_depth_vps_chroma_minus8,
     3131  // respectively, of the vps_rep_format_idx[ j ]-th rep_format( ) syntax structure
     3132  // in the active VPS, where j is equal to LayerIdxInVps[ layerIdCurr ].
     3133
     3134  Bool baseLayer               = ( layerIdCurr == 0 );
     3135  Bool independentNonBaseLayer = vps->isIndependendNonBaseLayer( layerIdCurr );
     3136  Bool multiLayerExtSpsFlag    = getMultiLayerExtSpsFlag();
     3137
     3138  Int            repFormatIdx = getUpdateRepFormatFlag() ?  getSpsRepFormatIdx() : vps->getVpsRepFormatIdx( vps->getLayerIdInVps( layerIdCurr ) ) ;
     3139  const TComRepFormat* repFormat    = vps->getRepFormat( repFormatIdx );
     3140
     3141  assert( !( multiLayerExtSpsFlag && ( independentNonBaseLayer || baseLayer )) );
     3142
     3143  Bool presentInSps = !multiLayerExtSpsFlag;
     3144  if ( presentInSps )
     3145  {
     3146    // Values have been set before in xInitSps
     3147
     3148    assert( getChromaFormatIdc()      <=  repFormat->getChromaFormatVpsIdc()         );
     3149    //// ToDo: add when supported:
     3150    ///  assert( getSeperateColourPlaneFlag() <=  repFormat->getSeparateColourPlaneVpsFlag() ) ;
     3151
     3152    assert( getPicWidthInLumaSamples()  <= repFormat->getPicWidthVpsInLumaSamples()    );
     3153    assert( getPicHeightInLumaSamples() <= repFormat->getPicHeightVpsInLumaSamples()   );
     3154
     3155    assert( getBitDepth( CHANNEL_TYPE_LUMA   )  <= repFormat->getBitDepthVpsLumaMinus8()   + 8 );         
     3156    assert( getBitDepth( CHANNEL_TYPE_CHROMA )  <= repFormat->getBitDepthVpsChromaMinus8() + 8 );
     3157  }
     3158
     3159  if ( !independentNonBaseLayer )
     3160  {
     3161
     3162    Window &spsConf    = getConformanceWindow();   
     3163
     3164    // Inference when not already done at the encoder.
     3165    if ( alreadySet )
    30143166    {
    30153167      assert( getChromaFormatIdc() ==  (ChromaFormat) repFormat->getChromaFormatVpsIdc() );         
     
    30253177      assert( getBitDepth              ( CHANNEL_TYPE_CHROMA ) == repFormat->getBitDepthVpsChromaMinus8() + 8 );
    30263178      assert( getQpBDOffset            ( CHANNEL_TYPE_CHROMA ) == (Int) (6* ( getBitDepth( CHANNEL_TYPE_CHROMA ) -8 ) ) );
     3179
     3180     
     3181      assert( spsConf.getWindowLeftOffset  () == repFormat->getConfWinVpsLeftOffset()    );
     3182      assert( spsConf.getWindowRightOffset () == repFormat->getConfWinVpsRightOffset()   );
     3183      assert( spsConf.getWindowTopOffset   () == repFormat->getConfWinVpsTopOffset()     );
     3184      assert( spsConf.getWindowBottomOffset() == repFormat->getConfWinVpsBottomOffset()  );           
     3185
    30273186    }
    30283187    else
     
    30403199      setBitDepth              ( CHANNEL_TYPE_CHROMA, repFormat->getBitDepthVpsChromaMinus8() + 8 );
    30413200      setQpBDOffset            ( CHANNEL_TYPE_CHROMA, (Int) (6* ( getBitDepth( CHANNEL_TYPE_CHROMA ) -8 ) ) );
    3042       Window &spsConf    = getConformanceWindow();   
    3043 
     3201     
    30443202      // Scaled later
    30453203      spsConf.setScaledFlag( false );
     
    30493207      spsConf.setWindowBottomOffset( repFormat->getConfWinVpsBottomOffset()  );           
    30503208    }
    3051 
    3052    if ( getMultiLayerExtSpsFlag() && getUpdateRepFormatFlag() )
    3053     {
    3054       assert( getChromaFormatIdc()      <=  repFormat->getChromaFormatVpsIdc()         );
    3055       //// ToDo: add when supported:
    3056       // assert( getSeperateColourPlaneFlag() <=  repFormat->getSeparateColourPlaneVpsFlag() ) ;
    3057 
    3058       assert( getPicWidthInLumaSamples()  <= repFormat->getPicWidthVpsInLumaSamples()    );
    3059       assert( getPicHeightInLumaSamples() <= repFormat->getPicHeightVpsInLumaSamples()   );
    3060 
    3061       assert( getBitDepth( CHANNEL_TYPE_LUMA   )  <= repFormat->getBitDepthVpsLumaMinus8()   + 8 );         
    3062       assert( getBitDepth( CHANNEL_TYPE_CHROMA )  <= repFormat->getBitDepthVpsChromaMinus8() + 8 );
    3063     }
    3064   }
     3209  }
     3210 
    30653211
    30663212  // Set conformance window
     
    30683214  getConformanceWindow().scaleOffsets( scal );
    30693215  getVuiParameters()->getDefaultDisplayWindow().scaleOffsets( scal );
    3070 
    3071   if (encoder && getMultiLayerExtSpsFlag() )
    3072   {
    3073     Int            repFormatIdx = getUpdateRepFormatFlag() ?  getSpsRepFormatIdx() : vps->getVpsRepFormatIdx( vps->getLayerIdInVps( layerIdCurr ) ) ;
    3074     const TComRepFormat* repFormat    = vps->getRepFormat( repFormatIdx );
    3075 
    3076     Window &spsConf    = getConformanceWindow();   
    3077     assert( spsConf.getWindowLeftOffset  () == repFormat->getConfWinVpsLeftOffset()    );
    3078     assert( spsConf.getWindowRightOffset () == repFormat->getConfWinVpsRightOffset()   );
    3079     assert( spsConf.getWindowTopOffset   () == repFormat->getConfWinVpsTopOffset()     );
    3080     assert( spsConf.getWindowBottomOffset() == repFormat->getConfWinVpsBottomOffset()  );           
    3081   }
    30823216}
    30833217
     
    30923226}
    30933227
    3094 Void TComSPS::inferSpsMaxDecPicBufferingMinus1( TComVPS* vps, Int targetOptLayerSetIdx, Int currLayerId, Bool encoder )
     3228Void TComSPS::inferSpsMaxDecPicBufferingMinus1( TComVPS* vps, Int targetOptLayerSetIdx, Int currLayerId, Bool doCheck )
    30953229{
    30963230  if ( getMultiLayerExtSpsFlag() )
     
    31163250      Int maxNumReorderPics       = vps->getDpbSize()->getMaxVpsNumReorderPics( targetOptLayerSetIdx, i );
    31173251      Int maxLatencyIncreasePlus1 = vps->getDpbSize()->getMaxVpsLatencyIncreasePlus1( targetOptLayerSetIdx, i );
    3118       if ( encoder )     
     3252      if ( doCheck )     
    31193253      {
    31203254        assert( getMaxDecPicBuffering( i ) - 1 == maxDecPicBufferingMinus1 );
     
    36023736}
    36033737#endif
    3604 #if NH_3D_NBDV
     3738#if NH_3D
    36053739Void TComSlice::setDefaultRefView()
    36063740{
     
    36363770  }
    36373771}
    3638 #endif
    3639 
    3640 #if NH_3D_ARP
     3772
    36413773Void TComSlice::setARPStepNum( TComPicLists*ivPicLists )
    36423774{
     
    37223854  }
    37233855}
    3724 #endif
    3725 
    3726 #if NH_3D_IC
     3856
    37273857// This is an encoder only function and should be moved to TEncSlice or TEncSearch!!
    37283858Void TComSlice::xSetApplyIC(Bool bUseLowLatencyICEnc)
     
    38603990  }//if(bUseLowLatencyICEnc)
    38613991}
    3862 #endif
    3863 #if NH_3D_QTL
     3992
    38643993Void TComSlice::setIvPicLists( TComPicLists* m_ivPicLists )
    38653994
     
    38794008 
    38804009  setupLUT = setupLUT || getViewSynthesisPredFlag( );
    3881 
    3882 #if NH_3D_NBDV_REF
    38834010  setupLUT = setupLUT || getDepthRefinementFlag( );
    3884 #endif 
    3885 
    3886 #if NH_3D_IV_MERGE
    38874011  setupLUT = setupLUT || ( getIvMvPredFlag() && getIsDepth() );
    3888 #endif
    38894012
    38904013  Int bitDepthY = getSPS()->getBitDepth(CHANNEL_TYPE_LUMA);
     
    43884511    if( getVPS()->getViewCompLayerPresentFlag( m_inCmpRefViewIdcs[ i ], !getIsDepth() ) )
    43894512    {
    4390       Int j = getVPS()->getLayerIdInVps( getVPS()->getViewCompLayerId( m_inCmpRefViewIdcs[ i ],  !getIsDepth() ) );
     4513      Int jInNuh = getVPS()->getViewCompLayerId( m_inCmpRefViewIdcs[ i ],  !getIsDepth() );
     4514      Int j = getVPS()->getLayerIdInVps( jInNuh );
    43914515      if  ( getVPS()->getDirectDependencyFlag( getVPS()->getLayerIdInVps( getLayerId() ) ,  j ) &&
    43924516        getVPS()->getSubLayersVpsMaxMinus1( j ) >= getTemporalId()   &&
     
    47384862, m_spsMap(MAX_NUM_SPS)
    47394863, m_ppsMap(MAX_NUM_PPS)
    4740 , m_activeVPSId(-1)
    47414864#if !NH_MV
    47424865, m_activeSPSId(-1)
    4743 #endif
     4866#else
     4867, m_spsActiveForLayer(MAX_NUM_LAYERS)
     4868#endif
     4869, m_activeVPSId(-1)
    47444870{
    47454871#if NH_MV 
     
    48614987
    48624988  return false;
     4989}
     4990
     4991template <>
     4992Void ParameterSetMap<TComPPS>::setID(TComPPS* parameterSet, const Int psId)
     4993{
     4994  parameterSet->setPPSId(psId);
     4995}
     4996
     4997template <>
     4998Void ParameterSetMap<TComSPS>::setID(TComSPS* parameterSet, const Int psId)
     4999{
     5000  parameterSet->setSPSId(psId);
    48635001}
    48645002
     
    49415079}
    49425080
    4943 Void calculateParameterSetChangedFlag(Bool &bChanged, const std::vector<UChar> *pOldData, const std::vector<UChar> &newData)
     5081Void calculateParameterSetChangedFlag(Bool &bChanged, const std::vector<UChar> *pOldData, const std::vector<UChar> *pNewData)
    49445082{
    49455083  if (!bChanged)
    49465084  {
    4947     if ((pOldData==0 && pOldData!=0) || (pOldData!=0 && pOldData==0))
     5085    if ((pOldData==0 && pNewData!=0) || (pOldData!=0 && pNewData==0))
    49485086    {
    49495087      bChanged=true;
    49505088    }
    4951     else if (pOldData!=0 && pOldData!=0)
     5089    else if (pOldData!=0 && pNewData!=0)
    49525090    {
    49535091      // compare the two
    4954       if (pOldData->size() != pOldData->size())
     5092      if (pOldData->size() != pNewData->size())
    49555093      {
    49565094        bChanged=true;
     
    49585096      else
    49595097      {
    4960         const UChar *pNewDataArray=&(newData)[0];
     5098        const UChar *pNewDataArray=&(*pNewData)[0];
    49615099        const UChar *pOldDataArray=&(*pOldData)[0];
    49625100        if (memcmp(pOldDataArray, pNewDataArray, pOldData->size()))
Note: See TracChangeset for help on using the changeset viewer.