Changeset 1412 in 3DVCSoftware for branches/HTM-16.2-dev/source/Lib/TLibCommon/TComSlice.cpp
- Timestamp:
- 12 Apr 2018, 11:12:21 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-16.2-dev/source/Lib/TLibCommon/TComSlice.cpp
r1405 r1412 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-201 6, ITU/ISO/IEC6 * Copyright (c) 2010-2017, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 … … 42 42 #include "TLibEncoder/TEncSbac.h" 43 43 #include "TLibDecoder/TDecSbac.h" 44 44 #if NH_MV 45 #include <set> 46 #endif 45 47 46 48 //! \ingroup TLibCommon … … 139 141 , m_pocMsbValRequiredFlag (false) 140 142 #endif 141 #if NH_3D _IC143 #if NH_3D 142 144 , m_bApplyIC (false) 143 145 , m_icSkipParseFlag (false) 144 #endif145 #if NH_3D146 146 , m_inCmpPredFlag (false) 147 147 , m_numViews (0) 148 148 , m_depthToDisparityB (NULL) 149 149 , m_depthToDisparityF (NULL) 150 #endif151 #if NH_3D_DIS152 150 , m_bApplyDIS (false) 153 151 #endif … … 289 287 m_iSliceChromaQpDelta[component] = 0; 290 288 } 291 #if NH_3D _IV_MERGE289 #if NH_3D 292 290 m_maxNumMergeCand = MRG_MAX_NUM_CANDS_MEM; 293 291 #else … … 300 298 m_cabacInitFlag = false; 301 299 m_enableTMVPFlag = true; 302 #if NH_3D _TMVP300 #if NH_3D 303 301 m_aiAlterRefIdx[0] = -1; 304 302 m_aiAlterRefIdx[1] = -1; … … 828 826 } 829 827 #if NH_3D 830 #if NH_3D_TMVP831 828 Void TComSlice::generateAlterRefforTMVP() 832 829 { … … 849 846 } 850 847 } 851 #endif852 848 #endif 853 849 … … 1169 1165 } 1170 1166 #endif 1171 #if NH_3D _DIS1167 #if NH_3D 1172 1168 m_bApplyDIS = pSrc->m_bApplyDIS; 1173 #endif1174 #if NH_3D_IC1175 1169 m_bApplyIC = pSrc->m_bApplyIC; 1176 1170 m_icSkipParseFlag = pSrc->m_icSkipParseFlag; … … 1967 1961 for( Int i = 0; i < MAX_NUM_LAYERS; i++ ) 1968 1962 { 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; 1971 1965 #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; 1975 1969 m_pocLsbNotPresentFlag[i] = 0; 1976 m_viewIdVal [i] = 0;1970 m_viewIdVal [i] = 0; 1977 1971 1978 1972 #if NH_3D 1979 m_viewIndex [i] = -1;1973 m_viewIndex [i] = -1; 1980 1974 #endif 1981 1975 … … 1998 1992 m_dimensionId[i][j] = 0; 1999 1993 } 2000 #if NH_3D_ARP2001 #endif2002 1994 } 2003 1995 #endif … … 2283 2275 2284 2276 2277 #if NH_3D 2278 Bool 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 2285 2293 2286 2294 Void TComVPS::deriveLayerSetLayerIdList() … … 2488 2496 } 2489 2497 2498 2499 Void 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 2490 2563 Void TComVPS::printLayerDependencies() const 2491 2564 { … … 2614 2687 xPrintArray( "TargetDecLayerIdList", getNumOutputLayerSets(), rangeOutputLayerSets, numDecLayer, m_targetDecLayerIdLists, true ); 2615 2688 std::cout << endl; 2689 } 2690 2691 IntAry1d 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; 2616 2731 } 2617 2732 … … 2774 2889 m_spsMultilayerExtensionFlag = false; 2775 2890 m_spsExtension5bits = 0; 2776 m_sps3dExtensionFlag = false; 2777 2891 m_sps3dExtensionFlag = false; 2892 m_layerId = -1; 2893 m_inferredRepFormat = NULL; 2778 2894 #endif 2779 2895 … … 2822 2938 , m_numRefIdxL0DefaultActive (1) 2823 2939 , m_numRefIdxL1DefaultActive (1) 2824 , m_TransquantBypassEnable Flag(false)2940 , m_TransquantBypassEnabledFlag (false) 2825 2941 , m_useTransformSkip (false) 2826 2942 , m_dependentSliceSegmentsEnabledFlag(false) … … 2831 2947 , m_numTileColumnsMinus1 (0) 2832 2948 , m_numTileRowsMinus1 (0) 2833 , m_sign HideFlag(false)2949 , m_signDataHidingEnabledFlag (false) 2834 2950 , m_cabacInitPresentFlag (false) 2835 2951 , m_sliceHeaderExtensionPresentFlag (false) … … 2842 2958 , m_pocResetInfoPresentFlag (false) 2843 2959 #endif 2844 #if NH_3D _DLT2960 #if NH_3D 2845 2961 , m_cDLT () 2846 2962 #endif … … 2859 2975 } 2860 2976 2861 #if NH_3D _DLT2862 TComDLT::TComDLT( )2977 #if NH_3D 2978 TComDLT::TComDLT( ) 2863 2979 : m_bDltPresentFlag(false) 2864 2980 , m_iNumDepthViews(0) … … 3004 3120 3005 3121 #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 ) 3122 Void 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 ) 3014 3166 { 3015 3167 assert( getChromaFormatIdc() == (ChromaFormat) repFormat->getChromaFormatVpsIdc() ); … … 3025 3177 assert( getBitDepth ( CHANNEL_TYPE_CHROMA ) == repFormat->getBitDepthVpsChromaMinus8() + 8 ); 3026 3178 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 3027 3186 } 3028 3187 else … … 3040 3199 setBitDepth ( CHANNEL_TYPE_CHROMA, repFormat->getBitDepthVpsChromaMinus8() + 8 ); 3041 3200 setQpBDOffset ( CHANNEL_TYPE_CHROMA, (Int) (6* ( getBitDepth( CHANNEL_TYPE_CHROMA ) -8 ) ) ); 3042 Window &spsConf = getConformanceWindow(); 3043 3201 3044 3202 // Scaled later 3045 3203 spsConf.setScaledFlag( false ); … … 3049 3207 spsConf.setWindowBottomOffset( repFormat->getConfWinVpsBottomOffset() ); 3050 3208 } 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 3065 3211 3066 3212 // Set conformance window … … 3068 3214 getConformanceWindow().scaleOffsets( scal ); 3069 3215 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 }3082 3216 } 3083 3217 … … 3092 3226 } 3093 3227 3094 Void TComSPS::inferSpsMaxDecPicBufferingMinus1( TComVPS* vps, Int targetOptLayerSetIdx, Int currLayerId, Bool encoder)3228 Void TComSPS::inferSpsMaxDecPicBufferingMinus1( TComVPS* vps, Int targetOptLayerSetIdx, Int currLayerId, Bool doCheck ) 3095 3229 { 3096 3230 if ( getMultiLayerExtSpsFlag() ) … … 3116 3250 Int maxNumReorderPics = vps->getDpbSize()->getMaxVpsNumReorderPics( targetOptLayerSetIdx, i ); 3117 3251 Int maxLatencyIncreasePlus1 = vps->getDpbSize()->getMaxVpsLatencyIncreasePlus1( targetOptLayerSetIdx, i ); 3118 if ( encoder)3252 if ( doCheck ) 3119 3253 { 3120 3254 assert( getMaxDecPicBuffering( i ) - 1 == maxDecPicBufferingMinus1 ); … … 3602 3736 } 3603 3737 #endif 3604 #if NH_3D _NBDV3738 #if NH_3D 3605 3739 Void TComSlice::setDefaultRefView() 3606 3740 { … … 3636 3770 } 3637 3771 } 3638 #endif 3639 3640 #if NH_3D_ARP 3772 3641 3773 Void TComSlice::setARPStepNum( TComPicLists*ivPicLists ) 3642 3774 { … … 3722 3854 } 3723 3855 } 3724 #endif 3725 3726 #if NH_3D_IC 3856 3727 3857 // This is an encoder only function and should be moved to TEncSlice or TEncSearch!! 3728 3858 Void TComSlice::xSetApplyIC(Bool bUseLowLatencyICEnc) … … 3860 3990 }//if(bUseLowLatencyICEnc) 3861 3991 } 3862 #endif 3863 #if NH_3D_QTL 3992 3864 3993 Void TComSlice::setIvPicLists( TComPicLists* m_ivPicLists ) 3865 3994 { … … 3879 4008 3880 4009 setupLUT = setupLUT || getViewSynthesisPredFlag( ); 3881 3882 #if NH_3D_NBDV_REF3883 4010 setupLUT = setupLUT || getDepthRefinementFlag( ); 3884 #endif3885 3886 #if NH_3D_IV_MERGE3887 4011 setupLUT = setupLUT || ( getIvMvPredFlag() && getIsDepth() ); 3888 #endif3889 4012 3890 4013 Int bitDepthY = getSPS()->getBitDepth(CHANNEL_TYPE_LUMA); … … 4388 4511 if( getVPS()->getViewCompLayerPresentFlag( m_inCmpRefViewIdcs[ i ], !getIsDepth() ) ) 4389 4512 { 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 ); 4391 4515 if ( getVPS()->getDirectDependencyFlag( getVPS()->getLayerIdInVps( getLayerId() ) , j ) && 4392 4516 getVPS()->getSubLayersVpsMaxMinus1( j ) >= getTemporalId() && … … 4738 4862 , m_spsMap(MAX_NUM_SPS) 4739 4863 , m_ppsMap(MAX_NUM_PPS) 4740 , m_activeVPSId(-1)4741 4864 #if !NH_MV 4742 4865 , m_activeSPSId(-1) 4743 #endif 4866 #else 4867 , m_spsActiveForLayer(MAX_NUM_LAYERS) 4868 #endif 4869 , m_activeVPSId(-1) 4744 4870 { 4745 4871 #if NH_MV … … 4861 4987 4862 4988 return false; 4989 } 4990 4991 template <> 4992 Void ParameterSetMap<TComPPS>::setID(TComPPS* parameterSet, const Int psId) 4993 { 4994 parameterSet->setPPSId(psId); 4995 } 4996 4997 template <> 4998 Void ParameterSetMap<TComSPS>::setID(TComSPS* parameterSet, const Int psId) 4999 { 5000 parameterSet->setSPSId(psId); 4863 5001 } 4864 5002 … … 4941 5079 } 4942 5080 4943 Void calculateParameterSetChangedFlag(Bool &bChanged, const std::vector<UChar> *pOldData, const std::vector<UChar> &newData)5081 Void calculateParameterSetChangedFlag(Bool &bChanged, const std::vector<UChar> *pOldData, const std::vector<UChar> *pNewData) 4944 5082 { 4945 5083 if (!bChanged) 4946 5084 { 4947 if ((pOldData==0 && p OldData!=0) || (pOldData!=0 && pOldData==0))5085 if ((pOldData==0 && pNewData!=0) || (pOldData!=0 && pNewData==0)) 4948 5086 { 4949 5087 bChanged=true; 4950 5088 } 4951 else if (pOldData!=0 && p OldData!=0)5089 else if (pOldData!=0 && pNewData!=0) 4952 5090 { 4953 5091 // compare the two 4954 if (pOldData->size() != p OldData->size())5092 if (pOldData->size() != pNewData->size()) 4955 5093 { 4956 5094 bChanged=true; … … 4958 5096 else 4959 5097 { 4960 const UChar *pNewDataArray=&( newData)[0];5098 const UChar *pNewDataArray=&(*pNewData)[0]; 4961 5099 const UChar *pOldDataArray=&(*pOldData)[0]; 4962 5100 if (memcmp(pOldDataArray, pNewDataArray, pOldData->size()))
Note: See TracChangeset for help on using the changeset viewer.