Changeset 71 in 3DVCSoftware for branches/HTM-3.0-Vidyo/source
- Timestamp:
- 5 Jun 2012, 04:47:14 (13 years ago)
- Location:
- branches/HTM-3.0-Vidyo/source
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-3.0-Vidyo/source/App/TAppDecoder/TAppDecTop.cpp
r70 r71 82 82 Void TAppDecTop::decode() 83 83 { 84 #if VIDYO_VPS_INTEGRATION 85 increaseNumberOfViews( 0, 0, 0 ); 86 #else 84 87 increaseNumberOfViews( 1 ); 88 #endif 89 85 90 #if SONY_COLPIC_AVAILABILITY 86 91 m_tDecTop[0]->setViewOrderIdx(0); … … 141 146 read(nalu, nalUnit); 142 147 #if VIDYO_VPS_INTEGRATION 148 Int viewId = 0; 149 Int depth = 0; 150 151 if(nalu.m_nalUnitType != NAL_UNIT_VPS || nalu.m_layerId) 152 { 153 // code assumes that the first nal unit is VPS 154 // currently, this is a hack that requires non-first VPSs have non-zero layer_id 155 viewId = getVPSAccess()->getActiveVPS()->getViewId(nalu.m_layerId); 156 depth = getVPSAccess()->getActiveVPS()->getDepthFlag(nalu.m_layerId); 157 } 143 158 viewDepthId = nalu.m_layerId; // coding order T0D0T1D1T2D2 144 159 #else … … 151 166 if( viewDepthId >= m_tDecTop.size() ) 152 167 { 168 #if VIDYO_VPS_INTEGRATION 169 increaseNumberOfViews( viewDepthId, viewId, depth ); 170 #else 153 171 increaseNumberOfViews( viewDepthId +1 ); 172 #endif 154 173 } 155 174 if(m_iMaxTemporalLayer >= 0 && nalu.m_temporalId > m_iMaxTemporalLayer) … … 397 416 m_pocLastDisplay[viewDepthId] = -MAX_INT; 398 417 } 399 418 #if VIDYO_VPS_INTEGRATION 419 Void TAppDecTop::increaseNumberOfViews ( UInt layerId, UInt viewId, UInt isDepth ) 420 #else 400 421 Void TAppDecTop::increaseNumberOfViews ( Int newNumberOfViewDepth ) 401 { 422 #endif 423 { 424 #if VIDYO_VPS_INTEGRATION 425 Int newNumberOfViewDepth = layerId + 1; 426 #endif 402 427 if ( m_outputBitDepth == 0 ) 403 428 { 404 429 m_outputBitDepth = g_uiBitDepth + g_uiBitIncrement; 405 430 } 431 #if !VIDYO_VPS_INTEGRATION 406 432 Int viewId = (newNumberOfViewDepth-1)>>1; // coding order T0D0T1D1T2D2 407 433 Bool isDepth = ((newNumberOfViewDepth % 2) == 0); // coding order T0D0T1D1T2D2 434 #endif 408 435 if( isDepth ) 409 436 m_useDepth = true; -
branches/HTM-3.0-Vidyo/source/App/TAppDecoder/TAppDecTop.h
r56 r71 74 74 CamParsCollector m_cCamParsCollector; 75 75 #if DEPTH_MAP_GENERATION 76 #if VIDYO_VPS_INTEGRATION 77 TComVPSAccess m_cVPSAccess; 78 #endif 76 79 TComSPSAccess m_cSPSAccess; 77 80 TComAUPicAccess m_cAUPicAccess; … … 85 88 Void destroy (); ///< destroy internal members 86 89 Void decode (); ///< main decoding function 90 #if VIDYO_VPS_INTEGRATION 91 Void increaseNumberOfViews (UInt layerId, UInt viewId, UInt isDepth); 92 #else 87 93 Void increaseNumberOfViews (Int newNumberOfViewDepth); 94 #endif 88 95 TDecTop* getTDecTop ( Int viewId, Bool isDepth ); 89 96 … … 92 99 93 100 #if DEPTH_MAP_GENERATION 101 #if VIDYO_VPS_INTEGRATION 102 TComVPSAccess* getVPSAccess () { return &m_cVPSAccess; } 103 #endif 94 104 TComSPSAccess* getSPSAccess () { return &m_cSPSAccess; } 95 105 TComAUPicAccess* getAUPicAccess() { return &m_cAUPicAccess; } -
branches/HTM-3.0-Vidyo/source/App/TAppEncoder/TAppEncTop.h
r70 r71 80 80 81 81 #if DEPTH_MAP_GENERATION 82 #if VIDYO_VPS_INTEGRATION 83 TComVPSAccess m_cVPSAccess; 84 #endif 82 85 TComSPSAccess m_cSPSAccess; 83 86 TComAUPicAccess m_cAUPicAccess; … … 137 140 #if VIDYO_VPS_INTEGRATION 138 141 TComVPS* getVPS() { return &m_cVPS; } 142 TComVPSAccess* getVPSAccess () { return &m_cVPSAccess; } 139 143 #endif 140 144 -
branches/HTM-3.0-Vidyo/source/Lib/TLibCommon/TComDepthMapGenerator.cpp
r56 r71 122 122 } 123 123 124 #if VIDYO_VPS_INTEGRATION 125 Void 126 TComDepthMapGenerator::init( TComPrediction* pcPrediction, TComVPSAccess* pcVPSAccess, TComSPSAccess* pcSPSAccess, TComAUPicAccess* pcAUPicAccess ) 127 #else 124 128 Void 125 129 TComDepthMapGenerator::init( TComPrediction* pcPrediction, TComSPSAccess* pcSPSAccess, TComAUPicAccess* pcAUPicAccess ) 130 #endif 126 131 { 127 132 AOF( pcPrediction ); … … 130 135 uninit(); 131 136 m_pcPrediction = pcPrediction; 137 #if VIDYO_VPS_INTEGRATION 138 m_pcVPSAccess = pcVPSAccess; 139 #endif 132 140 m_pcSPSAccess = pcSPSAccess; 133 141 m_pcAUPicAccess = pcAUPicAccess; … … 157 165 158 166 // update SPS list and AU pic list and set depth map generator in SPS 167 #if VIDYO_VPS_INTEGRATION 168 m_pcVPSAccess ->addVPS( pcPic->getVPS() ); 169 #endif 159 170 m_pcSPSAccess ->addSPS( pcPic->getSPS() ); 160 171 m_pcAUPicAccess->addPic( pcPic ); -
branches/HTM-3.0-Vidyo/source/Lib/TLibCommon/TComDepthMapGenerator.h
r56 r71 50 50 51 51 #if DEPTH_MAP_GENERATION 52 52 #if VIDYO_VPS_INTEGRATION 53 class TComVPSAccess // would be better to have a real VPS buffer 54 { 55 public: 56 TComVPSAccess () { clear(); } 57 ~TComVPSAccess() {} 58 59 Void clear () { ::memset( m_aacVPS, 0x00, sizeof( m_aacVPS ) ); m_uiActiceVPSId = 0;} 60 Void addVPS ( TComVPS* pcVPS ) { m_aacVPS[ pcVPS->getVPSId() ] = pcVPS; } 61 TComVPS* getVPS ( UInt uiVPSId ) { return m_aacVPS[ uiVPSId ]; } 62 TComVPS* getActiveVPS ( ) { return m_aacVPS[ m_uiActiceVPSId ]; } 63 Void setActiveVPSId ( UInt activeVPSId ) { m_uiActiceVPSId = activeVPSId; } 64 private: 65 TComVPS* m_aacVPS[ MAX_NUM_VPS ]; 66 UInt m_uiActiceVPSId; 67 }; 68 #endif 53 69 54 70 class TComSPSAccess // would be better to have a real SPS buffer … … 113 129 Void destroy (); 114 130 131 #if VIDYO_VPS_INTEGRATION 132 Void init( TComPrediction* pcPrediction, TComVPSAccess* pcVPSAccess, TComSPSAccess* pcSPSAccess, TComAUPicAccess* pcAUPicAccess ); 133 #endif 115 134 Void init ( TComPrediction* pcPrediction, TComSPSAccess* pcSPSAccess, TComAUPicAccess* pcAUPicAccess ); 116 135 Void uninit (); … … 136 155 137 156 TComPrediction* getPrediction () { return m_pcPrediction; } 157 #if VIDYO_VPS_INTEGRATION 158 TComVPSAccess* getVPSAccess () { return m_pcVPSAccess; } 159 #endif 138 160 TComSPSAccess* getSPSAccess () { return m_pcSPSAccess; } 139 161 TComAUPicAccess* getAUPicAccess() { return m_pcAUPicAccess; } … … 198 220 Bool m_bDecoder; 199 221 TComPrediction* m_pcPrediction; 222 #if VIDYO_VPS_INTEGRATION 223 TComVPSAccess* m_pcVPSAccess; 224 #endif 200 225 TComSPSAccess* m_pcSPSAccess; 201 226 TComAUPicAccess* m_pcAUPicAccess; -
branches/HTM-3.0-Vidyo/source/Lib/TLibCommon/TComPic.h
r56 r71 120 120 TComSlice* getSlice(Int i) { return m_apcPicSym->getSlice(i); } 121 121 TComSlice* getCurrSlice() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx); } 122 #if VIDYO_VPS_INTEGRATION 123 TComVPS* getVPS() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getVPS(); } 124 #endif 122 125 TComSPS* getSPS() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getSPS(); } 123 126 Int getPOC() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getPOC(); } -
branches/HTM-3.0-Vidyo/source/Lib/TLibDecoder/TDecCAVLC.cpp
r70 r71 1349 1349 READ_FLAG( uiCode, "temporal_id_nesting_flag" ); pcVPS->setTemporalNestingFlag( uiCode ? true:false ); 1350 1350 READ_UVLC( uiCode, "video_parameter_set_id" ); pcVPS->setVPSId( uiCode ); 1351 for(UInt i =0; i <= pcVPS->getMaxTLayers()-1; i++)1351 for(UInt i = 0; i <= pcVPS->getMaxTLayers()-1; i++) 1352 1352 { 1353 1353 READ_UVLC( uiCode, "max_dec_pic_buffering[i]" ); pcVPS->setMaxDecPicBuffering( uiCode, i ); … … 1362 1362 READ_UVLC( uiCode, "extension_type" ); pcVPS->setExtensionType( uiCode ); 1363 1363 1364 if( pcVPS->getExtensionType() == 0)1365 READ_SVLC( iCode, "view_order_idx[0]" ); pcVPS->setViewOrderIdx( iCode, 0 );1366 1367 for(UInt i =0; i <= pcVPS->getMaxLayers()-1; i++)1364 pcVPS->setViewOrderIdx( 0, 0 ); 1365 pcVPS->setViewId( 0, 0 ); 1366 pcVPS->setDepthFlag( 0, 0 ); 1367 for(UInt i = 1; i <= pcVPS->getMaxLayers()-1; i++) 1368 1368 { 1369 1369 READ_FLAG( uiCode, "dependent_flag[i]" ); pcVPS->setDependentFlag( uiCode ? true:false, i); -
branches/HTM-3.0-Vidyo/source/Lib/TLibDecoder/TDecTop.cpp
r70 r71 319 319 m_tAppDecTop = pcTAppDecTop; 320 320 #if DEPTH_MAP_GENERATION 321 #if VIDYO_VPS_INTEGRATION 322 m_cDepthMapGenerator.init( &m_cPrediction, m_tAppDecTop->getVPSAccess(), m_tAppDecTop->getSPSAccess(), m_tAppDecTop->getAUPicAccess() ); 323 #else 321 324 m_cDepthMapGenerator.init( &m_cPrediction, m_tAppDecTop->getSPSAccess(), m_tAppDecTop->getAUPicAccess() ); 325 #endif 322 326 #endif 323 327 #if HHI_INTER_VIEW_RESIDUAL_PRED … … 574 578 TComVPS *vps = m_parameterSetManagerDecoder.getVPS(sps->getVPSId()); 575 579 assert (vps != 0); 580 if( m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA ) 581 // VPS can only be activated on IDR or CRA... 582 getTAppDecTop()->getVPSAccess()->setActiveVPSId( sps->getVPSId() ); 576 583 #endif 577 584 m_apcSlicePilot->setPPS(pps); … … 1082 1089 m_cEntropyDecoder.decodeVPS( vps ); 1083 1090 m_parameterSetManagerDecoder.storePrefetchedVPS(vps); 1084 1091 getTAppDecTop()->getVPSAccess()->addVPS( vps ); 1085 1092 } 1086 1093 #endif -
branches/HTM-3.0-Vidyo/source/Lib/TLibEncoder/TEncCavlc.cpp
r70 r71 395 395 WRITE_UVLC( pcVPS->getExtensionType(), "extension_type" ); 396 396 397 if( pcVPS->getExtensionType() == 0) 398 WRITE_SVLC( pcVPS->getViewOrderIdx(0), "view_order_idx[0]" ); 399 400 for(UInt i=0; i <= pcVPS->getMaxLayers()-1; i++) 397 for(UInt i=1; i <= pcVPS->getMaxLayers()-1; i++) 401 398 { 402 399 WRITE_FLAG( pcVPS->getDependentFlag(i), "dependent_flag[i]" ); -
branches/HTM-3.0-Vidyo/source/Lib/TLibEncoder/TEncGOP.cpp
r70 r71 246 246 247 247 std::vector<TComAPS>& vAPS = m_pcEncTop->getAPS(); 248 #if VIDYO_VPS_INTEGRATION 249 m_pcSliceEncoder->initEncSlice ( pcPic, iPOCLast, uiPOCCurr, iNumPicRcvd, iGOPid, pcSlice, m_pcEncTop->getEncTop()->getVPS(), m_pcEncTop->getSPS(), m_pcEncTop->getPPS() ); 250 #else 248 251 m_pcSliceEncoder->initEncSlice ( pcPic, iPOCLast, uiPOCCurr, iNumPicRcvd, iGOPid, pcSlice, m_pcEncTop->getSPS(), m_pcEncTop->getPPS() ); 252 #endif 249 253 pcSlice->setLastIDR(m_iLastIDR); 250 254 pcSlice->setSliceIdx(0); -
branches/HTM-3.0-Vidyo/source/Lib/TLibEncoder/TEncSlice.cpp
r56 r71 161 161 \param pPPS PPS associated with the slice 162 162 */ 163 #if VIDYO_VPS_INTEGRATION 164 Void TEncSlice::initEncSlice( TComPic* pcPic, Int iPOCLast, UInt uiPOCCurr, Int iNumPicRcvd, Int iGOPid, TComSlice*& rpcSlice, TComVPS * pVPS, TComSPS* pSPS, TComPPS *pPPS ) 165 #else 163 166 Void TEncSlice::initEncSlice( TComPic* pcPic, Int iPOCLast, UInt uiPOCCurr, Int iNumPicRcvd, Int iGOPid, TComSlice*& rpcSlice, TComSPS* pSPS, TComPPS *pPPS ) 167 #endif 164 168 { 165 169 Double dQP; … … 167 171 168 172 rpcSlice = pcPic->getSlice(0); 173 #if VIDYO_VPS_INTEGRATION 174 rpcSlice->setVPS( pVPS ); 175 #endif 169 176 rpcSlice->setSPS( pSPS ); 170 177 rpcSlice->setPPS( pPPS ); -
branches/HTM-3.0-Vidyo/source/Lib/TLibEncoder/TEncSlice.h
r56 r71 110 110 111 111 /// preparation of slice encoding (reference marking, QP and lambda) 112 #if VIDYO_VPS_INTEGRATION 113 Void initEncSlice ( TComPic* pcPic, Int iPOCLast, UInt uiPOCCurr, Int iNumPicRcvd, Int iGOPid, TComSlice*& rpcSlice, TComVPS* pVPS, TComSPS* pSPS, TComPPS *pPPS ); 114 #else 112 115 Void initEncSlice ( TComPic* pcPic, Int iPOCLast, UInt uiPOCCurr, Int iNumPicRcvd, Int iGOPid, TComSlice*& rpcSlice, TComSPS* pSPS, TComPPS *pPPS ); 113 116 #endif 114 117 // compress and encode slice 115 118 Void precompressSlice ( TComPic*& rpcPic ); ///< precompress slice for multi-loop opt. -
branches/HTM-3.0-Vidyo/source/Lib/TLibEncoder/TEncTop.cpp
r56 r71 348 348 349 349 #if DEPTH_MAP_GENERATION 350 m_cDepthMapGenerator.init( (TComPrediction*)this->getPredSearch(), m_pcTAppEncTop->getSPSAccess(), m_pcTAppEncTop->getAUPicAccess() ); 350 #if VIDYO_VPS_INTEGRATION 351 m_cDepthMapGenerator.init( (TComPrediction*)this->getPredSearch(), m_pcTAppEncTop->getVPSAccess(), m_pcTAppEncTop->getSPSAccess(), m_pcTAppEncTop->getAUPicAccess() ); 352 #else 353 m_cDepthMapGenerator.init( (TComPrediction*)this->getPredSearch(), m_pcTAppEncTop->getVPSAccess(), m_pcTAppEncTop->getSPSAccess(), m_pcTAppEncTop->getAUPicAccess() ); 354 #endif 351 355 #endif 352 356 #if HHI_INTER_VIEW_RESIDUAL_PRED
Note: See TracChangeset for help on using the changeset viewer.