Changeset 1187 in 3DVCSoftware for branches/HTM-14.0-dev0/source/Lib/TLibCommon/TComSlice.h
- Timestamp:
- 8 Apr 2015, 15:26:52 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-14.0-dev0/source/Lib/TLibCommon/TComSlice.h
r1185 r1187 912 912 Int xGetDimBitOffset( Int j ); 913 913 Void xSetRefLayerFlags( Int currLayerId ); 914 914 915 // VPS EXTENSION 2 SYNTAX ELEMENTS 915 916 #if H_3D … … 1011 1012 Void setVpsNonVuiExtensionLength( Int val ) { m_vpsNonVuiExtensionLength = val; } 1012 1013 Int getVpsNonVuiExtensionLength( ) { return m_vpsNonVuiExtensionLength; } 1013 1014 1015 // VPS Extension 1014 1016 Void setSplittingFlag( Bool val ) { m_splittingFlag = val; } 1015 1017 Bool getSplittingFlag() { return m_splittingFlag; } … … 1154 1156 Void initNumViews(); 1155 1157 #if H_3D 1156 Void initViewCompLayer( ) 1157 { 1158 assert( m_viewCompLayerId.size() == 0 && m_viewCompLayerPresentFlag.size() == 0 ); 1159 for( Int i = 0; i < getNumViews(); i++ ) 1160 { 1161 m_viewCompLayerId .push_back( std::vector<Int>(0) ); 1162 m_viewCompLayerPresentFlag.push_back( std::vector<Bool>(0) ); 1163 1164 for( Int depFlag = 0; depFlag <= 1; depFlag++ ) 1165 { 1166 Int iViewOIdx = getViewOIdxList( i ); 1167 Int layerId = -1; 1168 for( Int j = 0; j <= getMaxLayersMinus1(); j++ ) 1169 { 1170 Int jNuhLId = getLayerIdInNuh( j ); 1171 if( getVpsDepthFlag( jNuhLId ) == ( (Bool) depFlag ) && getViewOrderIdx( jNuhLId ) == iViewOIdx 1172 && getDependencyId( jNuhLId ) == 0 && getAuxId( jNuhLId ) == 0 ) 1173 { 1174 layerId = jNuhLId; 1175 } 1176 } 1177 m_viewCompLayerPresentFlag[ i ].push_back( layerId != -1 ); 1178 m_viewCompLayerId [ i ].push_back( layerId ); 1179 } 1180 } 1181 }; 1182 1183 1158 Void initViewCompLayer( ); 1184 1159 Int getViewOIdxList( Int i ) { return m_viewOIdxList[i]; } 1185 1160 std::vector<Int> getViewOIdxList( ) { return m_viewOIdxList; } 1186 1161 1187 Int getVoiInVps( Int viewOIdx ) 1188 { 1189 for ( Int i = 0; i < m_viewOIdxList.size(); i++ ) 1190 { 1191 if ( m_viewOIdxList[ i ] == viewOIdx ) 1192 { 1193 return i; 1194 } 1195 } 1196 assert( 0 ); 1197 return -1; 1198 }; 1162 Int getVoiInVps( Int viewOIdx );; 1199 1163 1200 1164 Bool getViewCompLayerPresentFlag (Int i, Bool d ) { return m_viewCompLayerPresentFlag[ getVoiInVps(i) ][d]; } … … 1349 1313 1350 1314 // Derived 1351 Void deriveCpPresentFlag( ) 1352 { 1353 for( Int nInVps = 0; nInVps < getNumViews(); nInVps++ ) 1354 { 1355 for( Int mInVps = 0; mInVps < getNumViews(); mInVps++ ) 1356 { 1357 m_cpPresentFlag[nInVps][mInVps] = 0; 1358 } 1359 } 1360 1361 for( Int n = 1; n < getNumViews(); n++ ) 1362 { 1363 Int iInVps = getVoiInVps( getViewOIdxList( n ) ); 1364 for( Int m = 0; m < getNumCp( iInVps ); m++ ) 1365 { 1366 m_cpPresentFlag[ iInVps ][ getVoiInVps( getCpRefVoi( iInVps, m ) ) ] = 1; 1367 } 1368 } 1369 } 1315 Void deriveCpPresentFlag( ); 1370 1316 1371 1317 Void setCpPresentFlag( Int i, Int m, Bool flag ) { m_cpPresentFlag[i][m] = flag; } … … 2480 2426 Bool m_bApplyDIS; 2481 2427 #if H_3D_IC 2482 Int *m_aICEnableCandidate;2483 Int *m_aICEnableNum;2428 Int* m_aICEnableCandidate; 2429 Int* m_aICEnableNum; 2484 2430 #endif 2485 2431 Int m_iDefaultRefViewIdx; … … 2930 2876 #if H_3D 2931 2877 // 3D-HEVC tool parameters 2932 Void deriveInCmpPredAndCpAvailFlag() 2933 { 2934 Int numCurCmpLIds = getIsDepth() ? 1 : getNumActiveRefLayerPics(); 2935 std::vector<Int> curCmpLIds; 2936 if ( getIsDepth() ) 2937 { 2938 curCmpLIds.push_back( getLayerId() ); 2939 } 2940 else 2941 { 2942 for (Int i = 0; i < numCurCmpLIds; i++) 2943 { 2944 curCmpLIds.push_back( getRefPicLayerId( i ) ); 2945 } 2946 } 2947 2948 m_cpAvailableFlag = true; 2949 m_inCmpRefViewIdcs.clear(); 2950 Bool allRefCmpLayersAvailFlag = true; 2951 2952 for( Int i = 0; i <= numCurCmpLIds - 1; i++ ) 2953 { 2954 m_inCmpRefViewIdcs.push_back( getVPS()->getViewOrderIdx( curCmpLIds[ i ] )); 2955 if( !getVPS()->getCpPresentFlag( getVPS()->getVoiInVps( getViewIndex() ), getVPS()->getVoiInVps( m_inCmpRefViewIdcs[ i ] ) ) ) 2956 { 2957 m_cpAvailableFlag = false; 2958 } 2959 Bool refCmpCurLIdAvailFlag = false; 2960 if( getVPS()->getViewCompLayerPresentFlag( m_inCmpRefViewIdcs[ i ], !getIsDepth() ) ) 2961 { 2962 Int j = getVPS()->getLayerIdInVps( getVPS()->getViewCompLayerId( m_inCmpRefViewIdcs[ i ], !getIsDepth() ) ); 2963 if ( getVPS()->getDirectDependencyFlag( getVPS()->getLayerIdInVps( getLayerId() ) , j ) && 2964 getVPS()->getSubLayersVpsMaxMinus1( j ) >= getTemporalId() && 2965 ( getTemporalId() == 0 || getVPS()->getMaxTidIlRefPicsPlus1( j , getVPS()->getLayerIdInVps( getLayerId() ) ) > getTemporalId() ) 2966 ) 2967 { 2968 refCmpCurLIdAvailFlag = true; 2969 } 2970 } 2971 if( !refCmpCurLIdAvailFlag ) 2972 { 2973 allRefCmpLayersAvailFlag = false; 2974 } 2975 } 2976 2977 if( !allRefCmpLayersAvailFlag ) 2978 { 2979 m_inCmpPredAvailFlag = false; 2980 } 2981 else 2982 { 2983 TComSps3dExtension* sps3dExt = getSPS()->getSps3dExtension(); 2984 if( !getIsDepth() ) 2985 { 2986 m_inCmpPredAvailFlag = sps3dExt->getViewSynthesisPredFlag( getIsDepth() ) || 2987 sps3dExt->getDepthBasedBlkPartFlag( getIsDepth() ) || 2988 sps3dExt->getDepthRefinementFlag ( getIsDepth() ); 2989 } 2990 else 2991 { 2992 m_inCmpPredAvailFlag = sps3dExt->getIntraContourFlag( getIsDepth() ) || 2993 sps3dExt->getQtPredFlag( getIsDepth() ) || 2994 sps3dExt->getMpiFlag( getIsDepth() ); 2995 } 2996 } 2997 }; 2998 2999 2878 Void deriveInCmpPredAndCpAvailFlag(); 3000 2879 Void init3dToolParameters(); 3001 Void checkInCompPredRefLayers() 3002 { 3003 if ( getInCompPredFlag() ) 3004 { 3005 for (Int i = 0; i < getNumCurCmpLIds(); i++ ) 3006 { 3007 assert( getIvPic(!getIsDepth(), getInCmpRefViewIdcs( i ) ) != NULL ); 3008 // It is a requirement of bitstream conformance that there 3009 // is a picture in the DPB with PicOrderCntVal equal to the PicOrderCntVal of the current picture, 3010 // and a nuh_layer_id value equal to ViewCompLayerId[ inCmpRefViewIdcs[ i ] ][ !DepthFlag ]. 3011 } 3012 } 3013 }; 2880 Void checkInCompPredRefLayers();; 3014 2881 3015 2882 Bool getIvMvPredFlag ( ) { return m_ivMvPredFlag ; };
Note: See TracChangeset for help on using the changeset viewer.