Changeset 1196 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TComSlice.h
- Timestamp:
- 4 May 2015, 17:47:40 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibCommon/TComSlice.h
r1179 r1196 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 916 #if HHI_CAM_PARA_K0052917 917 Int* m_numCp; 918 918 Int** m_cpRefVoi; … … 920 920 Int m_cpPrecision; 921 921 Bool* m_cpInSliceSegmentHeaderFlag; 922 #else923 UInt m_uiCamParPrecision;924 Bool* m_bCamParInSliceHeader;925 Bool* m_bCamParPresent;926 #endif927 922 Int ***m_aaaiCodedScale ; 928 923 Int ***m_aaaiCodedOffset; 929 924 930 #if HHI_VIEW_ID_LIST_I5_J0107 || HHI_INTER_COMP_PRED_K0052931 925 std::vector<Int> m_viewOIdxList; 932 #endif933 #if HHI_INTER_COMP_PRED_K0052934 926 std::vector< std::vector<Bool> > m_viewCompLayerPresentFlag; 935 927 std::vector< std::vector<Int> > m_viewCompLayerId; 936 #endif937 928 #endif 938 929 … … 1021 1012 Void setVpsNonVuiExtensionLength( Int val ) { m_vpsNonVuiExtensionLength = val; } 1022 1013 Int getVpsNonVuiExtensionLength( ) { return m_vpsNonVuiExtensionLength; } 1023 1014 1015 // VPS Extension 1024 1016 Void setSplittingFlag( Bool val ) { m_splittingFlag = val; } 1025 1017 Bool getSplittingFlag() { return m_splittingFlag; } … … 1163 1155 Int getNumViews() { return m_numViews; } 1164 1156 Void initNumViews(); 1165 #if HHI_INTER_COMP_PRED_K00521166 1157 #if H_3D 1167 Void initViewCompLayer( ) 1168 { 1169 assert( m_viewCompLayerId.size() == 0 && m_viewCompLayerPresentFlag.size() == 0 ); 1170 for( Int i = 0; i < getNumViews(); i++ ) 1171 { 1172 m_viewCompLayerId .push_back( std::vector<Int>(0) ); 1173 m_viewCompLayerPresentFlag.push_back( std::vector<Bool>(0) ); 1174 1175 for( Int depFlag = 0; depFlag <= 1; depFlag++ ) 1176 { 1177 Int iViewOIdx = getViewOIdxList( i ); 1178 Int layerId = -1; 1179 for( Int j = 0; j <= getMaxLayersMinus1(); j++ ) 1180 { 1181 Int jNuhLId = getLayerIdInNuh( j ); 1182 if( getVpsDepthFlag( jNuhLId ) == ( (Bool) depFlag ) && getViewOrderIdx( jNuhLId ) == iViewOIdx 1183 && getDependencyId( jNuhLId ) == 0 && getAuxId( jNuhLId ) == 0 ) 1184 { 1185 layerId = jNuhLId; 1186 } 1187 } 1188 m_viewCompLayerPresentFlag[ i ].push_back( layerId != -1 ); 1189 m_viewCompLayerId [ i ].push_back( layerId ); 1190 } 1191 } 1192 }; 1193 #endif 1194 #endif 1195 1196 #if HHI_VIEW_ID_LIST_I5_J0107 || HHI_INTER_COMP_PRED_K0052 1158 Void initViewCompLayer( ); 1197 1159 Int getViewOIdxList( Int i ) { return m_viewOIdxList[i]; } 1198 #if HHI_CAM_PARA_K00521199 1160 std::vector<Int> getViewOIdxList( ) { return m_viewOIdxList; } 1200 #endif 1201 #endif 1202 1203 #if HHI_INTER_COMP_PRED_K0052 1204 #if HHI_CAM_PARA_K0052 1205 Int getVoiInVps( Int viewOIdx ) 1206 #else 1207 Int getInvViewOIdxList( Int viewOIdx ) 1208 #endif 1209 { 1210 for ( Int i = 0; i < m_viewOIdxList.size(); i++ ) 1211 { 1212 if ( m_viewOIdxList[ i ] == viewOIdx ) 1213 { 1214 return i; 1215 } 1216 } 1217 assert( 0 ); 1218 return -1; 1219 }; 1220 1221 #if HHI_CAM_PARA_K0052 1161 1162 Int getVoiInVps( Int viewOIdx );; 1163 1222 1164 Bool getViewCompLayerPresentFlag (Int i, Bool d ) { return m_viewCompLayerPresentFlag[ getVoiInVps(i) ][d]; } 1223 1165 Bool getViewCompLayerId (Int i, Bool d ) { return m_viewCompLayerId [ getVoiInVps(i) ][d]; } 1224 #else1225 Bool getViewCompLayerPresentFlag (Int i, Bool d ) { return m_viewCompLayerPresentFlag[ getInvViewOIdxList(i) ][d]; }1226 Bool getViewCompLayerId (Int i, Bool d ) { return m_viewCompLayerId [ getInvViewOIdxList(i) ][d]; }1227 #endif1228 1166 #endif 1229 1167 Bool getDependencyFlag( Int i, Int j ) { return m_dependencyFlag[i][j]; } … … 1347 1285 Void createCamPars(Int iNumViews); 1348 1286 Void deleteCamPars(); 1349 #if HHI_CAM_PARA_K00521350 1287 Void initCamParaVPS( Int vOIdxInVps, Int numCp, Bool cpInSliceSegmentHeaderFlag, Int* cpRefVoi, Int** aaiScale, Int** aaiOffset ); 1351 #else 1352 Void initCamParaVPS ( UInt uiViewIndex, Bool bCamParPresent = false, UInt uiCamParPrecision = 0, Bool bCamParSlice = false, Int** aaiScale = 0, Int** aaiOffset = 0 ); 1353 #endif 1354 1355 #if HHI_CAM_PARA_K0052 1288 1356 1289 1357 1290 Void setCpPrecision( Int val ) { m_cpPrecision = val; } … … 1380 1313 1381 1314 // Derived 1382 Void deriveCpPresentFlag( ) 1383 { 1384 for( Int nInVps = 0; nInVps < getNumViews(); nInVps++ ) 1385 { 1386 for( Int mInVps = 0; mInVps < getNumViews(); mInVps++ ) 1387 { 1388 m_cpPresentFlag[nInVps][mInVps] = 0; 1389 } 1390 } 1391 1392 for( Int n = 1; n < getNumViews(); n++ ) 1393 { 1394 Int iInVps = getVoiInVps( getViewOIdxList( n ) ); 1395 for( Int m = 0; m < getNumCp( iInVps ); m++ ) 1396 { 1397 m_cpPresentFlag[ iInVps ][ getVoiInVps( getCpRefVoi( iInVps, m ) ) ] = 1; 1398 } 1399 } 1400 } 1315 Void deriveCpPresentFlag( ); 1401 1316 1402 1317 Void setCpPresentFlag( Int i, Int m, Bool flag ) { m_cpPresentFlag[i][m] = flag; } 1403 1318 Bool getCpPresentFlag( Int i, Int m ) { return m_cpPresentFlag[i][m]; } 1404 1319 1405 #else1406 UInt getCamParPrecision () { return m_uiCamParPrecision; }1407 1408 Bool getCamParPresent ( Int viewIndex ) { return m_bCamParPresent[viewIndex]; }1409 Void setCamParPresent ( Int viewIndex, Bool val ) { m_bCamParPresent[viewIndex] = val; }1410 Bool hasCamParInSliceHeader( Int viewIndex ) { return m_bCamParInSliceHeader[viewIndex]; }1411 Void setHasCamParInSliceHeader( Int viewIndex, Bool b ) { m_bCamParInSliceHeader[viewIndex] = b; }1412 #endif1413 1320 1414 1321 … … 1705 1612 m_qtPredFlag [d] = false; 1706 1613 m_interSdcFlag [d] = false; 1707 #if SEC_DEPTH_INTRA_SKIP_MODE_K00331708 1614 m_depthIntraSkipFlag [d] = false; 1709 #else1710 m_intraSingleFlag [d] = false;1711 #endif1712 1615 } 1713 1616 } … … 1752 1655 Bool getInterSdcFlag( Int d ) { return m_interSdcFlag[d]; } 1753 1656 1754 #if SEC_DEPTH_INTRA_SKIP_MODE_K00331755 1657 Void setDepthIntraSkipFlag( Int d, Bool flag ) { m_depthIntraSkipFlag[d] = flag; } 1756 1658 Bool getDepthIntraSkipFlag( Int d ) { return m_depthIntraSkipFlag[d]; } 1757 #else1758 Void setIntraSingleFlag( Int d, Bool flag ) { m_intraSingleFlag[d] = flag; }1759 Bool getIntraSingleFlag( Int d ) { return m_intraSingleFlag[d]; }1760 #endif1761 1659 1762 1660 private: … … 1775 1673 Bool m_qtPredFlag [2]; 1776 1674 Bool m_interSdcFlag [2]; 1777 #if SEC_DEPTH_INTRA_SKIP_MODE_K00331778 1675 Bool m_depthIntraSkipFlag [2]; 1779 #else1780 Bool m_intraSingleFlag [2];1781 #endif1782 1676 }; 1783 1677 … … 1884 1778 #if H_3D 1885 1779 TComSps3dExtension m_sps3dExtension; 1886 #if !HHI_CAM_PARA_K00521887 UInt m_uiCamParPrecision;1888 Bool m_bCamParInSliceHeader;1889 #endif1890 1780 Int m_aaiCodedScale [2][MAX_NUM_LAYERS]; 1891 1781 Int m_aaiCodedOffset[2][MAX_NUM_LAYERS]; … … 2517 2407 UInt m_nARPStepNum; 2518 2408 Int m_aiFirstTRefIdx [2]; 2519 #if HHI_RES_PRED_K00522520 2409 std::vector<Int> m_pocsInCurrRPSs; 2521 #endif2522 2410 #endif 2523 2411 #if H_3D_IC … … 2526 2414 #endif 2527 2415 #if H_3D 2528 #if HHI_INTER_COMP_PRED_K00522529 2416 std::vector<Int> m_inCmpRefViewIdcs; 2530 2417 Bool m_inCmpPredAvailFlag; 2531 2418 Bool m_inCmpPredFlag; 2532 #endif2533 #if HHI_CAM_PARA_K00522534 2419 Bool m_cpAvailableFlag; 2535 2420 Int m_numViews; 2536 #endif2537 2421 TComPic* m_ivPicsCurrPoc [2][MAX_NUM_LAYERS]; 2538 2422 Int** m_depthToDisparityB; … … 2540 2424 #endif 2541 2425 #endif 2542 #if SEC_DEPTH_INTRA_SKIP_MODE_K00332543 2426 Bool m_bApplyDIS; 2544 #else2545 #if H_3D_SINGLE_DEPTH2546 Bool m_bApplySingleDepthMode;2547 #endif2548 #endif2549 2427 #if H_3D_IC 2550 Int *m_aICEnableCandidate;2551 Int *m_aICEnableNum;2428 Int* m_aICEnableCandidate; 2429 Int* m_aICEnableNum; 2552 2430 #endif 2553 2431 Int m_iDefaultRefViewIdx; … … 2565 2443 Bool m_qtPredFlag ; 2566 2444 Bool m_interSdcFlag ; 2567 #if SEC_DEPTH_INTRA_SKIP_MODE_K00332568 2445 Bool m_depthIntraSkipFlag ; 2569 #else2570 Bool m_intraSingleFlag ;2571 #endif2572 2446 Int m_mpiSubPbSize ; 2573 2447 Int m_subPbSize ; … … 2637 2511 Int getRefPOC ( RefPicList e, Int iRefIdx) { return m_aiRefPOCList[e][iRefIdx]; } 2638 2512 #if H_3D 2639 #if HHI_INTER_COMP_PRED_K00522640 2513 Bool getInCmpPredAvailFlag( ) { return m_inCmpPredAvailFlag; } 2641 #if HHI_CAM_PARA_K00522642 2514 Bool getCpAvailableFlag( ) { return m_cpAvailableFlag; } 2643 #endif2644 2515 Bool getInCompPredFlag( ) { return m_inCmpPredFlag; } 2645 2516 Void setInCompPredFlag( Bool b ) { m_inCmpPredFlag = b; } 2646 2517 Int getInCmpRefViewIdcs( Int i ) { return m_inCmpRefViewIdcs [i]; } 2647 2518 Int getNumCurCmpLIds( ) { return (Int) m_inCmpRefViewIdcs.size(); } 2648 #endif2649 2519 TComPic* getIvPic ( Bool depthFlag, Int viewIndex){ return m_ivPicsCurrPoc[ depthFlag ? 1 : 0 ][ viewIndex ]; } 2650 2520 #endif … … 2875 2745 Void setFirstTRefIdx ( RefPicList e, Int i ) { m_aiFirstTRefIdx[e] = i; } 2876 2746 Bool getArpRefPicAvailable( RefPicList e, Int viewIdx) {return m_arpRefPicAvailable[e][getVPS()->getLayerIdInNuh(viewIdx, 0)]; } 2877 #if HHI_RES_PRED_K00522878 2747 std::vector<Int> getPocsInCurrRPSs() { return m_pocsInCurrRPSs; }; 2879 #endif2880 2748 #endif 2881 2749 Void setIsDepth ( Bool isDepth ) { m_isDepth = isDepth; } … … 2886 2754 Int* getInvCodedScale () { return m_aaiCodedScale [1]; } 2887 2755 Int* getInvCodedOffset () { return m_aaiCodedOffset[1]; } 2888 #if HHI_CAM_PARA_K00522889 2756 Void setCpScale( Int j, Int val ) { m_aaiCodedScale[0][j] = val; } 2890 2757 Int getCpScale( Int j ) { return m_aaiCodedScale[0][j]; } … … 2898 2765 Void setCpInvOff( Int j, Int val ) { m_aaiCodedOffset[1][j] = val; } 2899 2766 Int getCpInvOff( Int j ) { return m_aaiCodedOffset[1][j]; } 2900 #endif2901 2767 2902 2768 #endif … … 2906 2772 Void setDepthToDisparityLUTs(); 2907 2773 2908 #if HHI_CAM_PARA_K00522909 2774 Int* getDepthToDisparityB( Int refViewIdx ) { return m_depthToDisparityB[ getVPS()->getVoiInVps( refViewIdx) ]; }; 2910 2775 Int* getDepthToDisparityF( Int refViewIdx ) { return m_depthToDisparityF[ getVPS()->getVoiInVps( refViewIdx) ]; }; 2911 #else2912 Int* getDepthToDisparityB( Int refViewIdx ) { return m_depthToDisparityB[ refViewIdx ]; };2913 Int* getDepthToDisparityF( Int refViewIdx ) { return m_depthToDisparityF[ refViewIdx ]; };2914 #endif2915 2776 #endif 2916 2777 #if H_3D_IC … … 3015 2876 #if H_3D 3016 2877 // 3D-HEVC tool parameters 3017 #if HHI_INTER_COMP_PRED_K0052 3018 Void deriveInCmpPredAndCpAvailFlag() 3019 { 3020 Int numCurCmpLIds = getIsDepth() ? 1 : getNumActiveRefLayerPics(); 3021 std::vector<Int> curCmpLIds; 3022 if ( getIsDepth() ) 3023 { 3024 curCmpLIds.push_back( getLayerId() ); 3025 } 3026 else 3027 { 3028 for (Int i = 0; i < numCurCmpLIds; i++) 3029 { 3030 curCmpLIds.push_back( getRefPicLayerId( i ) ); 3031 } 3032 } 3033 3034 #if HHI_CAM_PARA_K0052 3035 m_cpAvailableFlag = true; 3036 m_inCmpRefViewIdcs.clear(); 3037 #endif 3038 Bool allRefCmpLayersAvailFlag = true; 3039 3040 for( Int i = 0; i <= numCurCmpLIds - 1; i++ ) 3041 { 3042 m_inCmpRefViewIdcs.push_back( getVPS()->getViewOrderIdx( curCmpLIds[ i ] )); 3043 #if HHI_CAM_PARA_K0052 3044 if( !getVPS()->getCpPresentFlag( getVPS()->getVoiInVps( getViewIndex() ), getVPS()->getVoiInVps( m_inCmpRefViewIdcs[ i ] ) ) ) 3045 { 3046 m_cpAvailableFlag = false; 3047 } 3048 #endif 3049 Bool refCmpCurLIdAvailFlag = false; 3050 if( getVPS()->getViewCompLayerPresentFlag( m_inCmpRefViewIdcs[ i ], !getIsDepth() ) ) 3051 { 3052 Int j = getVPS()->getLayerIdInVps( getVPS()->getViewCompLayerId( m_inCmpRefViewIdcs[ i ], !getIsDepth() ) ); 3053 if ( getVPS()->getDirectDependencyFlag( getVPS()->getLayerIdInVps( getLayerId() ) , j ) && 3054 getVPS()->getSubLayersVpsMaxMinus1( j ) >= getTemporalId() && 3055 ( getTemporalId() == 0 || getVPS()->getMaxTidIlRefPicsPlus1( j , getVPS()->getLayerIdInVps( getLayerId() ) ) > getTemporalId() ) 3056 ) 3057 { 3058 refCmpCurLIdAvailFlag = true; 3059 } 3060 } 3061 if( !refCmpCurLIdAvailFlag ) 3062 { 3063 allRefCmpLayersAvailFlag = false; 3064 } 3065 } 3066 3067 if( !allRefCmpLayersAvailFlag ) 3068 { 3069 m_inCmpPredAvailFlag = false; 3070 } 3071 else 3072 { 3073 TComSps3dExtension* sps3dExt = getSPS()->getSps3dExtension(); 3074 if( !getIsDepth() ) 3075 { 3076 m_inCmpPredAvailFlag = sps3dExt->getViewSynthesisPredFlag( getIsDepth() ) || 3077 sps3dExt->getDepthBasedBlkPartFlag( getIsDepth() ) || 3078 sps3dExt->getDepthRefinementFlag ( getIsDepth() ); 3079 } 3080 else 3081 { 3082 m_inCmpPredAvailFlag = sps3dExt->getIntraContourFlag( getIsDepth() ) || 3083 sps3dExt->getQtPredFlag( getIsDepth() ) || 3084 sps3dExt->getMpiFlag( getIsDepth() ); 3085 } 3086 } 3087 }; 3088 3089 #endif 3090 2878 Void deriveInCmpPredAndCpAvailFlag(); 3091 2879 Void init3dToolParameters(); 3092 #if HHI_INTER_COMP_PRED_K0052 3093 Void checkInCompPredRefLayers() 3094 { 3095 if ( getInCompPredFlag() ) 3096 { 3097 for (Int i = 0; i < getNumCurCmpLIds(); i++ ) 3098 { 3099 assert( getIvPic(!getIsDepth(), getInCmpRefViewIdcs( i ) ) != NULL ); 3100 // It is a requirement of bitstream conformance that there 3101 // is a picture in the DPB with PicOrderCntVal equal to the PicOrderCntVal of the current picture, 3102 // and a nuh_layer_id value equal to ViewCompLayerId[ inCmpRefViewIdcs[ i ] ][ !DepthFlag ]. 3103 } 3104 } 3105 }; 3106 3107 #endif 2880 Void checkInCompPredRefLayers();; 2881 3108 2882 Bool getIvMvPredFlag ( ) { return m_ivMvPredFlag ; }; 3109 2883 Bool getIvMvScalingFlag ( ) { return m_ivMvScalingFlag ; }; … … 3117 2891 Bool getQtPredFlag ( ) { return m_qtPredFlag ; }; 3118 2892 Bool getInterSdcFlag ( ) { return m_interSdcFlag ; }; 3119 #if SEC_DEPTH_INTRA_SKIP_MODE_K00333120 2893 Bool getDepthIntraSkipFlag ( ) { return m_depthIntraSkipFlag ; }; 3121 #else3122 Bool getIntraSingleFlag ( ) { return m_intraSingleFlag ; };3123 #endif3124 2894 3125 2895 Int getMpiSubPbSize ( ) { return m_mpiSubPbSize ; };
Note: See TracChangeset for help on using the changeset viewer.