Changeset 493 in 3DVCSoftware for branches/HTM-DEV-0.3-dev0/source/App/TAppEncoder/TAppEncTop.cpp
- Timestamp:
- 24 Jun 2013, 21:36:38 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-0.3-dev0/source/App/TAppEncoder/TAppEncTop.cpp
r492 r493 118 118 xSetLayerIds ( vps ); 119 119 xSetDimensionIdAndLength ( vps ); 120 xSetD irectDependencyFlags( vps );120 xSetDependencies( vps ); 121 121 xSetLayerSets ( vps ); 122 122 #if H_3D … … 985 985 } 986 986 987 Void TAppEncTop::xSetDirectDependencyFlags( TComVPS& vps ) 988 { 989 for( Int layer = 0; layer < m_numberOfLayers; layer++ ) 990 { 991 if( m_GOPListMvc[layer][MAX_GOP].m_POC == -1 ) 992 { 993 continue; 994 } 995 for( Int i = 0; i < getGOPSize()+1; i++ ) 996 { 997 GOPEntry ge = ( i < getGOPSize() ) ? m_GOPListMvc[layer][i] : m_GOPListMvc[layer][MAX_GOP]; 998 for( Int j = 0; j < ge.m_numInterViewRefPics; j++ ) 999 { 1000 Int interLayerRef = layer + ge.m_interViewRefs[j]; 1001 vps.setDirectDependencyFlag( layer, interLayerRef, true ); 1002 } 1003 } 1004 } 1005 1006 vps.checkVPSExtensionSyntax(); 1007 vps.setRefLayers(); 1008 } 987 Void TAppEncTop::xSetDependencies( TComVPS& vps ) 988 { 989 // Direct dependency flags + dependency types 990 for( Int depLayer = 1; depLayer < MAX_NUM_LAYERS; depLayer++ ) 991 { 992 for( Int refLayer = 0; refLayer < MAX_NUM_LAYERS; refLayer++ ) 993 { 994 vps.setDirectDependencyFlag( depLayer, refLayer, false); 995 vps.setDirectDependencyType( depLayer, refLayer, 0 ); 996 } 997 } 998 for( Int depLayer = 1; depLayer < m_numberOfLayers; depLayer++ ) 999 { 1000 Int numRefLayers = m_directRefLayers[depLayer].size(); 1001 assert( numRefLayers == m_dependencyTypes[depLayer].size() ); 1002 for( Int i = 0; i < numRefLayers; i++ ) 1003 { 1004 Int refLayer = m_directRefLayers[depLayer][i]; 1005 vps.setDirectDependencyFlag( depLayer, refLayer, true); 1006 vps.setDirectDependencyType( depLayer, refLayer,m_dependencyTypes[depLayer][i]); 1007 } 1008 } 1009 1010 // Max temporal id for inter layer reference pictures 1011 for ( Int refLayerIdInVps = 0; refLayerIdInVps < m_numberOfLayers; refLayerIdInVps++) 1012 { 1013 Int maxTid = -1; 1014 for ( Int currLayerIdInVps = 1; currLayerIdInVps < m_numberOfLayers; currLayerIdInVps++) 1015 { 1016 for( Int i = 0; i < getGOPSize(); i++ ) 1017 { 1018 GOPEntry ge = m_GOPListMvc[currLayerIdInVps][i]; 1019 1020 for (Int j = 0; j < ge.m_numRefPicsActive; j++) 1021 { 1022 if ( m_directRefLayers[ currLayerIdInVps ][ ge.m_interLayerPredLayerIdc[ j ]] == refLayerIdInVps ) 1023 { 1024 maxTid = std::max( maxTid, ge.m_temporalId ); 1025 } 1026 } 1027 } 1028 } 1029 vps.setMaxTidIlRefPicPlus1( refLayerIdInVps, maxTid + 1 ); 1030 } 1031 1032 // Max one active ref layer flag 1033 Bool maxOneActiveRefLayerFlag = true; 1034 for ( Int currLayerIdInVps = 1; currLayerIdInVps < m_numberOfLayers && maxOneActiveRefLayerFlag; currLayerIdInVps++) 1035 { 1036 for( Int i = 0; i < ( getGOPSize() + 1) && maxOneActiveRefLayerFlag; i++ ) 1037 { 1038 GOPEntry ge = m_GOPListMvc[currLayerIdInVps][ ( i < getGOPSize() ? i : MAX_GOP ) ]; 1039 maxOneActiveRefLayerFlag = maxOneActiveRefLayerFlag && (ge.m_numRefPicsActive <= 1); 1040 } 1041 } 1042 1043 vps.setMaxOneActiveRefLayerFlag( maxOneActiveRefLayerFlag ); 1044 vps.setRefLayers(); 1045 }; 1009 1046 1010 1047 Void TAppEncTop::xSetLayerIds( TComVPS& vps ) … … 1046 1083 } 1047 1084 for ( Int i = 0; i < m_layerIdsInSets[lsIdx].size(); i++) 1048 { 1049 vps.setLayerIdIncludedFlag( true, lsIdx, m_layerIdsInSets[lsIdx][i]);1085 { 1086 vps.setLayerIdIncludedFlag( true, lsIdx, vps.getLayerIdInNuh( m_layerIdsInSets[lsIdx][i] ) ); 1050 1087 } 1051 1088 }
Note: See TracChangeset for help on using the changeset viewer.