Changeset 446 in 3DVCSoftware for branches/HTM-DEV-0.2-dev/source/Lib/TLibExtractor
- Timestamp:
- 26 May 2013, 16:22:23 (11 years ago)
- Location:
- branches/HTM-DEV-0.2-dev/source/Lib/TLibExtractor
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-0.2-dev/source/Lib/TLibExtractor/TExtrTop.cpp
r438 r446 37 37 38 38 #include "TExtrTop.h" 39 39 #if H_MV 40 40 TExtrTop::TExtrTop() 41 41 { … … 55 55 Bool TExtrTop::extract( InputNALUnit& nalu, std::set<UInt>& rsuiExtractLayerIds ) 56 56 { 57 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B004658 57 //extraction now has to be done using layer_id 59 UInt uiLayerId = nalu.m_layerId; 60 #else 61 UInt uiLayerId = xGetLayerId( nalu.m_viewId, nalu.m_isDepth ); 62 #endif 58 UInt uiLayerId = nalu.m_layerId; 59 60 63 61 // Initialize entropy decoder 64 62 m_cEntropyDecoder.setEntropyDecoder( &m_cCavlcDecoder ); 65 63 m_cEntropyDecoder.setBitstream ( nalu.m_Bitstream ); 66 64 67 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B004668 65 if ( nalu.m_nalUnitType == NAL_UNIT_VPS ) 69 66 { 70 67 // a hack for now assuming there's only one VPS in the bitstream 71 m_cEntropyDecoder.decodeVPS( &m_cVPS ); 72 68 m_cEntropyDecoder.decodeVPS( &m_cVPS ); 73 69 } 74 #endif75 70 76 71 if ( nalu.m_nalUnitType == NAL_UNIT_SPS ) 77 72 { 78 TComSPS cSPS; 79 TComRPSList cRPS; 80 cSPS.setRPSList( &cRPS ); 81 #if HHI_MPI || H3D_QTL 82 #if VIDYO_VPS_INTEGRATION 83 m_cEntropyDecoder.decodeSPS( &cSPS, m_cVPS.getDepthFlag(uiLayerId) ); 73 TComSPS cSPS; 74 #if H_3D 75 Int layerIdInVPS = m_cVPS.getLayerIdInVps( uiLayerId ); 76 m_cEntropyDecoder .decodeSPS( &cSPS, m_cVPS.getViewIndex( layerIdInVPS ), ( m_cVPS.getDepthId( layerIdInVPS ) == 1 ) ); 84 77 #else 85 m_cEntropyDecoder .decodeSPS( &cSPS, nalu.m_isDepth);78 m_cEntropyDecoder .decodeSPS( &cSPS ); 86 79 #endif 87 #else 88 m_cEntropyDecoder.decodeSPS( &cSPS ); 89 #endif 90 91 m_acSPSBuffer.push_back( cSPS ); 80 m_acSPSBuffer .push_back( cSPS ); 92 81 } 93 82 … … 97 86 98 87 Void TExtrTop::dumpSpsInfo( std::ostream& rcSpsInfoHandle ) 99 { 88 { 100 89 rcSpsInfoHandle << "NumSPS = " << m_acSPSBuffer.size() << std::endl; 90 91 std::list<Int>::iterator iterSPSLayerId = m_aiSPSLayerIdBuffer.begin(); 101 92 102 for( std::list<TComSPS>::iterator iterSPS = m_acSPSBuffer.begin(); iterSPS != m_acSPSBuffer.end(); iterSPS++ ) 103 { 104 rcSpsInfoHandle << std::endl; 105 rcSpsInfoHandle << "layer_id = " << xGetLayerId( iterSPS->getViewId(), iterSPS->isDepth() ) << std::endl; 93 for( std::list<TComSPS>::iterator iterSPS = m_acSPSBuffer.begin(); iterSPS != m_acSPSBuffer.end(); iterSPS++, iterSPSLayerId++ ) 94 { 95 rcSpsInfoHandle << "layer_id = " << *iterSPSLayerId << std::endl; 106 96 rcSpsInfoHandle << "seq_parameter_set_id = " << iterSPS->getSPSId() << std::endl; 107 rcSpsInfoHandle << "view_id = " << iterSPS->getViewId() << std::endl;108 rcSpsInfoHandle << "view_order_idx = " << iterSPS->getViewOrderIdx() << std::endl;109 rcSpsInfoHandle << "is_depth = " << iterSPS->isDepth() << std::endl;110 97 } 111 98 } 99 100 Void TExtrTop::dumpVpsInfo( std::ostream& rcVpsInfoHandle ) 101 { 102 rcVpsInfoHandle << "MaxLayers = " << m_cVPS.getMaxLayers() << std::endl; 103 rcVpsInfoHandle << "MaxNuhLayerId = " << m_cVPS.getMaxNuhLayerId() << std::endl; 104 105 for ( Int layerIdxInVps = 0; layerIdxInVps < m_cVPS.getMaxLayers(); layerIdxInVps++ ) 106 { 107 rcVpsInfoHandle << "LayerIdxInVps = " << layerIdxInVps << std::endl; 108 rcVpsInfoHandle << "LayerIdInNuh = " << m_cVPS.getLayerIdInNuh( layerIdxInVps ) << std::endl; 109 rcVpsInfoHandle << "ViewId = " << m_cVPS.getViewId ( layerIdxInVps ) << std::endl; 110 #if H_3D 111 rcVpsInfoHandle << "DepthFlag = " << m_cVPS.getViewIndex ( layerIdxInVps ) << std::endl; 112 rcVpsInfoHandle << "DepthFlag = " << m_cVPS.getDepthId ( layerIdxInVps ) << std::endl; 113 #endif 114 } 115 } 116 #endif -
branches/HTM-DEV-0.2-dev/source/Lib/TLibExtractor/TExtrTop.h
r438 r446 46 46 #include <set> 47 47 48 #if H_MV 48 49 // ==================================================================================================================== 49 50 // Class definition … … 54 55 { 55 56 private: 56 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 57 57 58 TComVPS m_cVPS; 58 #endif 59 std::list<TComSPS> m_acSPSBuffer;59 std::list<TComSPS> m_acSPSBuffer; 60 std::list<Int > m_aiSPSLayerIdBuffer; 60 61 61 62 // functional classes … … 72 73 Bool extract( InputNALUnit& nalu, std::set<UInt>& rsuiExtractLayerIds ); 73 74 Void dumpSpsInfo( std::ostream& rcSpsInfoHandle ); 75 Void dumpVpsInfo( std::ostream& rcVpsInfoHandle ); 74 76 75 77 TComSPS *getFirstSPS() { return m_acSPSBuffer.empty() ? 0 : &(m_acSPSBuffer.front()); } 76 78 77 79 protected: 78 UInt xGetLayerId( UInt uiViewId, Bool bIsDepth ) { return ( ( uiViewId << 1 ) + ( bIsDepth ? 1 : 0 ) ); } 80 79 81 };// END CLASS DEFINITION TExtrTop 80 82 81 83 82 84 #endif // __TEXTRTOP__ 83 85 #endif
Note: See TracChangeset for help on using the changeset viewer.